🐛 Bug Report: Scaffolder Permissions Framework

📜 Description
Apologies in advanced if I'm suppose to split it into 2 issues. Happy to be told otherwise. I'm trying to lockdown the publish:github and publish:github:pull-request action where it requires user token property in the action input. I tried implementing the permissions but I encountered 2 issues.
👍 Expected behavior

Print a friendly error message if a legitimate permission is denied when the permission rules says so and not technical information which is not useful for a non-tech user of Backstage. Sensitive information like tokens should be masked.
Is value expected when using scaffolderActionConditions.hasStringProperty()? I'm trying to enforce a token is required when using publish:github:pull-request action, I can't set the value since the token is randomized. If not, it should work and deny the user from executing since the token property is not defined in the action input?

👎 Actual Behavior with Screenshots
Issue 1
32023-12-08T10:24:14.000Z NotAllowedError: Unauthorized action: publish:github:pull-request. The action is not allowed. Input: {14  "repoUrl": "github.com, Opens in a new window?owner=xx&repo=backstage-test",15  "token": "xxx",16  "title": "Create base files required for Backstage TechDocs",17  "branchName": "create-base-techdocs-a",18  "update": true,19  "description": "Base files to start a documentation for Backstage\n"20}

Issue 2
122023-12-08T10:03:35.000Z Beginning step Publish132023-12-08T10:03:35.000Z InputError: Parameters to rule are invalid; caused by [14  {15    "code": "invalid_type",16    "expected": "string",17    "received": "undefined",18    "path": [19      "value"20    ],21    "message": "Required"22  }23]

👟 Reproduction steps

Enable Scaffolder permission framework
Create the following permission

To generate output reflected in Issue 1
if (isPermission(request.permission, actionExecutePermission)) {
      return createScaffolderActionConditionalDecision(request.permission, {
        not: {
          allOf: [
            scaffolderActionConditions.hasActionId({
              actionId: 'publish:github:pull-request',
            }),
          ],
        },
      });
    }

To generate output reflected in Issue 2
   if (isPermission(request.permission, actionExecutePermission)) {
      return createScaffolderActionConditionalDecision(request.permission, {
        not: {
          allOf: [
            scaffolderActionConditions.hasActionId({
              actionId: 'publish:github:pull-request',
            }),
            scaffolderActionConditions.hasStringProperty({
              key: 'token',
            }),
          ],
        },
      });
    }

📃 Provide the context for the Bug.

Verbose error printed out and if the token is part of the action, it is printed in plaintext.
The scaffolderActionConditions.hasStringProperty property expects a KeyVal pair but with the Val allowed to be nullable. However, an error happens at runtime because the value of the key is undefined.

🖥 Your Environment
OS: Darwin 23.1.0 - darwin/x64
node: v18.17.1
yarn: 1.22.19
cli: 0.24.0 (installed)
backstage: 1.20.3
Dependencies:
@backstage/app-defaults 1.4.5
@backstage/backend-app-api 0.5.8
@backstage/backend-common 0.19.9
@backstage/backend-dev-utils 0.1.2
@backstage/backend-openapi-utils 0.1.0
@backstage/backend-plugin-api 0.6.7
@backstage/backend-tasks 0.5.12
@backstage/backend-test-utils 0.2.8
@backstage/catalog-client 1.4.6
@backstage/catalog-model 1.4.3
@backstage/cli-common 0.1.13
@backstage/cli-node 0.2.0
@backstage/cli 0.24.0
@backstage/config-loader 1.5.3
@backstage/config 1.1.1
@backstage/core-app-api 1.11.1
@backstage/core-components 0.11.2, 0.13.8
@backstage/core-plugin-api 1.8.0
@backstage/dev-utils 1.0.24
@backstage/errors 1.2.3
@backstage/eslint-plugin 0.1.3
@backstage/frontend-plugin-api 0.3.0
@backstage/integration-aws-node 0.1.8
@backstage/integration-react 1.1.21
@backstage/integration 1.7.2
@backstage/plugin-api-docs 0.10.1
@backstage/plugin-app-backend 0.3.55
@backstage/plugin-app-node 0.1.7
@backstage/plugin-auth-backend-module-gcp-iap-provider 0.2.1
@backstage/plugin-auth-backend-module-github-provider 0.1.4
@backstage/plugin-auth-backend-module-gitlab-provider 0.1.4
@backstage/plugin-auth-backend-module-google-provider 0.1.4
@backstage/plugin-auth-backend-module-oauth2-provider 0.1.4
@backstage/plugin-auth-backend 0.20.0
@backstage/plugin-auth-node 0.2.19, 0.4.1
@backstage/plugin-badges-backend 0.3.4
@backstage/plugin-badges 0.2.51
@backstage/plugin-bazaar-backend 0.3.5
@backstage/plugin-bazaar 0.2.19
@backstage/plugin-catalog-backend-module-github 0.4.5
@backstage/plugin-catalog-backend-module-scaffolder-entity-model 0.1.4
@backstage/plugin-catalog-backend-module-unprocessed 0.3.4
@backstage/plugin-catalog-backend 1.15.0
@backstage/plugin-catalog-common 1.0.18
@backstage/plugin-catalog-graph 0.3.1
@backstage/plugin-catalog-import 0.10.3
@backstage/plugin-catalog-node 1.5.0
@backstage/plugin-catalog-react 1.9.1
@backstage/plugin-catalog-unprocessed-entities 0.1.5
@backstage/plugin-catalog 1.15.1
@backstage/plugin-cost-insights-common 0.1.2
@backstage/plugin-cost-insights 0.12.16
@backstage/plugin-devtools-backend 0.2.4
@backstage/plugin-devtools-common 0.1.6
@backstage/plugin-devtools 0.1.6
@backstage/plugin-entity-validation 0.1.12
@backstage/plugin-events-node 0.2.16
@backstage/plugin-explore-common 0.0.2
@backstage/plugin-explore-react 0.0.33
@backstage/plugin-explore 0.4.13
@backstage/plugin-github-actions 0.6.8
@backstage/plugin-github-issues 0.2.16
@backstage/plugin-github-pull-requests-board 0.1.21
@backstage/plugin-home-react 0.1.5
@backstage/plugin-home 0.5.11
@backstage/plugin-kubernetes-backend 0.13.1
@backstage/plugin-kubernetes-common 0.7.1
@backstage/plugin-kubernetes-node 0.1.1
@backstage/plugin-kubernetes-react 0.1.1
@backstage/plugin-kubernetes 0.11.2
@backstage/plugin-org 0.6.17
@backstage/plugin-permission-common 0.7.10
@backstage/plugin-permission-node 0.7.18
@backstage/plugin-permission-react 0.4.17
@backstage/plugin-playlist-backend 0.3.11
@backstage/plugin-playlist-common 0.1.12
@backstage/plugin-playlist 0.2.1
@backstage/plugin-proxy-backend 0.4.5
@backstage/plugin-scaffolder-backend 1.19.1
@backstage/plugin-scaffolder-common 1.4.3
@backstage/plugin-scaffolder-node 0.2.8
@backstage/plugin-scaffolder-react 1.6.1
@backstage/plugin-scaffolder 1.16.1
@backstage/plugin-search-backend-module-catalog 0.1.11
@backstage/plugin-search-backend-module-elasticsearch 1.3.10
@backstage/plugin-search-backend-module-pg 0.5.16
@backstage/plugin-search-backend-module-techdocs 0.1.11
@backstage/plugin-search-backend-node 1.2.11
@backstage/plugin-search-backend 1.4.7
@backstage/plugin-search-common 1.2.8
@backstage/plugin-search-react 1.7.3
@backstage/plugin-search 1.4.3
@backstage/plugin-shortcuts 0.3.16
@backstage/plugin-sonarqube-backend 0.2.9
@backstage/plugin-sonarqube-react 0.1.10
@backstage/plugin-sonarqube 0.7.9
@backstage/plugin-tech-insights-backend-module-jsonfc 0.1.39
@backstage/plugin-tech-insights-backend 0.5.21
@backstage/plugin-tech-insights-common 0.2.12
@backstage/plugin-tech-insights-node 0.4.13
@backstage/plugin-tech-insights 0.3.19
@backstage/plugin-tech-radar 0.6.10
@backstage/plugin-techdocs-addons-test-utils 1.0.24
@backstage/plugin-techdocs-backend 1.9.0
@backstage/plugin-techdocs-module-addons-contrib 1.1.2
@backstage/plugin-techdocs-node 1.10.0
@backstage/plugin-techdocs-react 1.1.13
@backstage/plugin-techdocs 1.9.1
@backstage/plugin-todo-backend 0.3.5
@backstage/plugin-todo 0.2.31
@backstage/plugin-user-settings 0.7.13
@backstage/release-manifests 0.0.11
@backstage/test-utils 1.4.5
@backstage/theme 0.2.19, 0.4.4
@backstage/types 1.1.1
@backstage/version-bridge 1.0.7
✨ Done in 3.95s.
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
None

Gonna bring in some of the @backstage/permission-maintainers here too to get some opinions!

Another observation I've noticed, the tokens generated are stored in plaintext as cookies in the user's browser. This could be seen as a security threat, would it be good it there's some level of encryption for it?

Hey @darrenyung!
Which tokens are you referring to? I believe that the only token that we store in cookies is the refresh token, which to be able to use you need to have the clientSecret which is only stored in the backend anyways I think.
It's an interesting point about encryption, wondering if we should, maybe something to think about for the #15999, but really i'm wondering if it's worth it, as the decryption key would also need to be stored alongside the clientSecret anyways in this case, so is it really another layer of security at that point? Needs some thought I guess.

Hey there @benjdlambert,
It is the access token generated after auth like you've mentioned. Strange that, I was able to use it with a postman request to the GitHub REST interface and get valid response without needing to know the clientSecret. At the moment, its not yet flagged by my GitHub maintainers as we have policies in place to set TTL of said tokens outside Backstage but this one raised my eyebrows.

But I digress, as per original post, I'm really keen to see how I can provide secured use of the Scaffolder Action with token input as described here with permissions framework to stop unauthorized access as it is the preferred way forward for my org. 👻

Hey @darrenyung,

But I digress, as per original post, I'm really keen to see how I can provide secured use of the Scaffolder Action with token input as described here with permissions framework to stop unauthorized access as it is the preferred way forward for my org. 👻

could you clarify this? Do you wanna disable publish:github:pull-request if a custom token is provided or what's your goal here?

Sure thing @vinzscam , its the reverse. I would like to disable publish:github:pull-request if a token property is not provided in the template. My org would like to ensure that the user has to provide authorization to GitHub to act on their behalf when actioning templates.

amazing, thanks for clarifying! It looks like there is a bug in the hasStringProperty permission rule and a fix is coming.
In the meantime I've just noticed the conditional decision you are using above would produce incorrect results. The following should be correct:
      return createScaffolderActionConditionalDecision(request.permission, {
        anyOf: [
          {
            // allow any other action
            not: scaffolderActionConditions.hasActionId({
              actionId: 'publish:github:pull-request',
            }),
          },
          {
            allOf: [
              scaffolderActionConditions.hasActionId({
                actionId: 'publish:github:pull-request',
              }),
              // token must be provided in the action above
              scaffolderActionConditions.hasStringProperty({
                key: 'token',
              }),
            ],
          },
        ],
      });


Added guard code not to work if the object is empty

Added guard code not to work if the object is empty when setting target locale for conversions.
During a normal localization process, it occurs an error due to that line.
this.settings.targetLocale is {} at the moment.
because of https://github.com/iLib-js/loctool/blob/development/lib/Project.js#L84 line. 's merging work.

@ehoogerbeets Please review it and release the new version 2.12.1


SpannerWriteIT failing in beam PostCommit Java V1

Some of the SpannerWriteIT tests seems to be flaky:
https://ci-beam.apache.org/job/beam_PostCommit_Java_DataflowV1/1466/testReport/junit/org.apache.beam.sdk.io.gcp.spanner/SpannerWriteIT/testReportFailures/

(note these passed during #1465)
https://ci-beam.apache.org/job/beam_PostCommit_Java_DataflowV1/1464/testReport/junit/org.apache.beam.sdk.io.gcp.spanner/SpannerWriteIT/testWrite/

Imported from Jira BEAM-14275. Original Jira may contain additional context.
Reported by: emilymye.
Subtask of issue #21701

Not currently flaking.


Add support for lighthouse agent

@vthapar After the extended flags for deploy I understand we can close this PR, right?

@vthapar After the extended flags for deploy I understand we can close this PR, right?

Yes, Im working on adding this support to LH


Does Firebase secret stop working?

I was running my code nromally, but now it doesn't work anymore. Does anybody know if this is related to Firebase secret deprecation?

Are you able to reproduce this with the samples?

Hi, I'm sorry. I had a problem with my access point. Firebase was somehow blocked on my Wifi network. Sorry, I'll exclude this issue.


Eager unfold

Can we make unfold slprops unfold eagerly in the context and goals?

Solved by #143


fix(store): remove _ from table names

:tada: This PR is included in version 0.7.0 :tada:
The release is available on:

GitHub release
v0.7.0

Your semantic-release bot :package::rocket:


audit declarative_friendly annotations

we should audit all usages of the declarative_friendly annotation. These usages may no longer be accurate (e.g. with soft-delete no longer required for declarative).

mechanically, this is just auditing rules that call utils.IsDeclarativeFriendlyMethod(m), seeing what branches, and then adjusting them.
the annotation should not be necessary in the future, as declarative friendly is merging with the AIPs themselves.


build-only-wasm.sh appears outdated

The script at .maintain/build-only-wasm.sh contains this logic:
https://github.com/paritytech/substrate/blob/7b002350a26b5013979b5b963ecea7626f860645/.maintain/build-only-wasm.sh#L22-L29
The directory it is testing for is of the form a/target/release/wbuild-runner/node-template-runtime. But in recent Substrate builds, that directory never exists. A set of similar directories with large numbers appended to the end exist. This makes the script always fall back to the else branch and just run cargo build --release -p node-template-runtime.
And thinking about it now, what was the other branch even supposed to do differently than that cargo command?

cc @bkchr

cc @bkchr

Ty for pinging, but I already had seen the issue 😅😂


Filter Deprecation warnings during simulation

Context
Deprecation warnings pollute the log during the execution of an experiment
Solution proposed
Add the line
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

in nevergrad.benchmark.__main__.py

FYI @chrichri17

@akouete-kpakpo I tried this already and it didn't seem to be working.

Closed via #23


add implicit waits to the #all_there? check if they're enabled

use_implicit_waits is a lifesaver for my particular usage of SitePrism. Its implementation should be more consistent. :)

The point of all_there? is to check that a bunch of elements exist, not to wait for them to exist...

@bhaibel You may also want to check out the new load_validations feature, which is a much more fine instrument than the blunt check for all_there?


3DS not triggered - payment refused

When using Dropin:
adyen.DropInConfiguration(
        environment: adyen.Environment.europe,
        clientKey: ...,
        countryCode: ...,
        shopperLocale: ...,
        amount: adyen.Amount(
            value: ...,
            currency: ...),
      );

I am facing payments refused:
Acquirer response: [Authentication required (65 : Authentication required)]
Shopper interaction: Ecommerce
CVC/CVV: Supplied, Doesn''t match (N)

My Merchant account is well configured with Always propose 3DSecure.
When user type in the card number and validate, the 3DS2 is not triggered, and payment is refused immediately.
This is with Mastercards ecards. I can provide PSP if needed.
Is that a bug from the Dropin ?
How to fix this ?
Thanks and regards

Hi @matmicro,
thanks for opening this issue as well. I will look into this but might need to involve our customer support team.
Will come back with more information.

@matmicro, I think reaching out to the support team or to your account manager is the right way. Could you ask to involve me as well so we could setup a call where we go through the different questions?

@matmicro unfortunately I do not want to expose my work email here. Hope that is ok.
Could you ask the support to add me to the loop? I would like to help out so we can resolve the issues asap.


Add vector norm scaling option for HNSWLib (aka cosine distance metric)

See comment here https://github.com/hwchase17/langchainjs/blob/1da4c65d3713fbf93c577e16e3d2a6c9f34b68fb/langchain/src/vectorstores/hnswlib.ts#L87

Looks like node-hnswlib will soon support this natively so this will be very easy to do (once they release a new version) https://github.com/yoshoku/hnswlib-node/commit/ef457e1fb2cfbba115174904a5ac99d21a4f4a4b

This now done


Bug: Detect fzf or skim error

RTFM Checklist

[X] I have searched exisiting issues / discussions
[ ] I have read the Wiki including the Advanced section
[ ] I have read man fzf / I am well versed in shell fzf

Operating system
Linux
Shell
fish
Neovim version (nvim --version)
NVIM v0.11.0-dev
Fzf version (fzf --version)
0.56.3
Output of :lua print(os.getenv('FZF_DEFAULT_OPTS'))
nil
Is the problem reproducible with mini.sh?

[ ] My issue is reproducible with mini.sh
[ ] My issue IS NOT reproducible with mini.sh
[X] I have not tested with mini.sh (not relevant, requires LSP, Windows, etc)

Fzf-lua configuration
require('fzf-lua').setup({
})

Describe the bug / steps to reproduce
I config the fzf_bin path to /nix/store/00878rfga84z9hzc176dy7skm6m45x2c-fzf-0.56.3/bin/fzf. There's a substring "sk" in it. So fzf-lua seems to treat this path a 'skim' binary.

https://github.com/ibhagwan/fzf-lua/commit/8d35de5dac11f6fed7f03ae2e314c39c899d0846
Ty for the report @TwIStOy, honestly not sure how this hasn't come up before :-)


How to setup a DouYin downloader bot in Telegram?

Hi Man Ho,
This is Quan To, from Johor region, could you make a tutorials on step-by-step for setting up the Douyin Video Downloader Telegram Bot like "@douyin_downloadBot" you created? Thank you very much! :)

Hi Man Ho,
This is Quan To, from Johor region, could you make a tutorials on step-by-step for setting up the Douyin Video Downloader Telegram Bot like "@douyin_downloadBot" you created? Thank you very much! :)

Hi!
The code of this repo is written based on deployment on Heroku server.
As you asked how to deploy bots, unfortunately Heroku's free server used by this bot will be no longer be available starting November, 28th, 2022. There will we no more free server to host this bot :(
Unless you are rich, buy a Dynos Plan :)
Check out https://github.com/manho30/douyindl#readme


Apps with many containers

I'm trying to get my head around the new approach and there are a few things I'm getting stuck on. Part 1 - if I have 10 containers (as I do in my unstated implementation), do I now have to list every one of them at the top level? I certainly appreciated just being able to wrap my App component in <Provider><App /></Provider> and be done with it.

Yeah, that's something I would like to figure out.
import { compose } from "unstated-next"

let Provider = compose(ContainerOne, ContainerTwo)

However unless React adds an API for useProvider or something there's always going to be a bunch of nodes in the React tree.
I'd also like to experiment with "auto-registering" to make code splitting easier.

I'm using something like this now, that seems to be working:
import React from 'react';

export interface ContainerProviderProps {
  children: React.ReactNode
}

export interface Container {
  state: Map<String, any>;
}

export function ProviderFactory() {
  const Context = React.createContext(null);
  const containerMap = new Map();

  return {
    Provider({ children }: ContainerProviderProps) {
      return <Context.Provider value={containerMap}>{children}</Context.Provider>;
    },
    useContainer(ContainerClass) {
      const value = React.useContext(Context);
      if (value === null) {
        throw new Error('Component must be wrapped with <Provider>');
      }
      const containerInstance = value[ContainerClass];
      if (!containerInstance) {
        const newContainer = new ContainerClass();
        containerMap[ContainerClass] = newContainer;
        return newContainer;
      }
      return containerInstance;
    },
  };
}

const sharedFactory = new ProviderFactory();

export const { useContainer, Provider } = sharedFactory;

@neves
let app = AppContainer.useContainer()
let counter = CounterContainer.userContainer()
<Child />

let app = AppContainer.useContainer()
let counter = CounterContainer.useContainer()

My hack didn't really work. Instead I modified unstated to use a common Map() instead of per-Provider instance.

There are too many Provider

I think I'm going to avoid adding something like this for now. I've written at length about why here: https://github.com/jamiebuilds/unstated-next/issues/20#issuecomment-493158589

What is the recommanded way to do as the issue state "Apps with many containers" ?
Compose seems to have been removed.

You can checkout my idea: react-hook-svs. Highlights:

Get service output immediately in the hosting component. You no longer need to wrap your top component with provider HOC to get service output in it.
One service can consume another, even when they are in the same component. react-hook-svs provides a consistent way to consume service.
Service providers(basically React context) are composited together and will be injected into a JSX subtree at once. No longer provider hell. Checkout this demo:

[

Yeah, that's something I would like to figure out.
import { compose } from "unstated-next"

let Provider = compose(ContainerOne, ContainerTwo)

However unless React adds an API for useProvider or something there's always going to be a bunch of nodes in the React tree.
I'd also like to experiment with "auto-registering" to make code splitting easier.

Yeah, that's something I would like to figure out.
import { compose } from "unstated-next"

let Provider = compose(ContainerOne, ContainerTwo)

However unless React adds an API for useProvider or something there's always going to be a bunch of nodes in the React tree.
I'd also like to experiment with "auto-registering" to make code splitting easier.

Hello, I am working with project with unstated
and not so sure if what I am working on would be anti pattern
I am using unstated like below
class ContainerA extends Container {}
const containerA = new ContainerA();
export default containerA;

class ContainerB extends Container {}
const containerB = new Containerb();
export default containerB;

const rootStore = [ContainerA, ContainerB]

  <Provider>
     <Subscribe to={rootStore}>
       <App />
     </Subscribe>
  </Provider>

components where needs to access to stores
import {ContainerA} from 'stores'

const {some, properties, ... } = ContainerA.state


Add possibility to whitelist/blacklist endpoints

Description
I have a large OpenAPI spec and I want to build two different clients - one for public and one for private use.
The public one should expose only 3 endpoints, while the private one should expose all the 200+ endpoints.
Is this possible with the current state of the generator?

@dimitar-mitov this is now possible with services.filter, let me know if that works for you!


CIV-11084 test point to wa changes

JIRA link (if applicable)
https://tools.hmcts.net/jira/browse/CIV-11084
Change description
Change to test wa changes, do not merge
Does this PR introduce a breaking change? (check one with "x")
[X] Yes
[ ] No

test done


Getting started updates

Converting the NUC, Nitrogen 6X, and Hummingboard getting started guides to the parametric format.
Adding getting started guides for the Jetson TX2 and DART-6UL.

@shaunmulligan right now that one is using the generic instructions, which basically says you need to make sure the image is on the primary boot media. I can put specific instructions in there using the development kit if we have them

@zwalchuk yeah I think that would be helpful. I also think it might make sense to split the jetson TX2 out from these other boards, because then we can merge them right aways, as the Jetson might still take a little while until its in production.

@shaunmulligan that makes sense, I was doing that with the CHIP so I'll do it with the Jetson as well. That will give us a little time to get those sections up to snuff on both

sounds good 👍


Scroll Effect.

Anyone got the Scroll Effect like in the Sample Video? My Scroll Effect is to fast and seems very strange.

I’ve had similar effects, his does seem to work strangely well, but it’s also an old video. Post a video here of what you are experiencing and I can try and look at it.

Does changing the FPS in the configuration file affect the scrolling speed?

More leds, longer strip = looks slower
Here's mine, and also here

Again this will be changed soon, the rolling speed will be based off actual
time rather than a single np.roll every iteration loop.
On Mar 1, 2018 12:14, "d-rez"<EMAIL_ADDRESS>wrote:

More leds, longer strip = looks slower
Here's mine https://youtu.be/FoTgSMvDpUw?t=93, and also here
https://youtu.be/QKsfK_zStsI?t=32
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/scottlawsonbc/audio-reactive-led-strip/issues/93#issuecomment-369573405,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ae5azIh3Hq5V30eZjNcKTyl-JU-VnJ4dks5tZ-YXgaJpZM4Qy2b-
.

In your fork?

That's where it will be when it's implemented yeah
On Mar 1, 2018 12:49, "d-rez"<EMAIL_ADDRESS>wrote:

In your fork?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/scottlawsonbc/audio-reactive-led-strip/issues/93#issuecomment-369581460,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ae5azNg77A_Fy19cNIBOeMdgPl6jyyLlks5tZ-5UgaJpZM4Qy2b-
.


[TC-OO-2.3] Fails because OffWithEffect OnWithRecallGlobalScene and OnWithTimedOff are not supported in the build

Problem
In Test Event 7 [TC-OO-2.3] Fails because the on-off Cluster commands OffWithEffect, OnWithRecallGlobalScene and OnWithTimedOff are not supported in the current SDK build.
If these commands are enabled linker errors occur in the build.
undefined reference to emberAfOnOffClusterOffWithEffectCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OffWithEffect::DecodableType const&)'  undefined reference to emberAfOnOffClusterOnWithRecallGlobalSceneCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OnWithRecallGlobalScene::DecodableType const&)'
undefined reference to emberAfOnOffClusterOnWithTimedOffCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OnWithTimedOff::DecodableType const&)'  undefined reference to emberAfOnOffClusterOffWithEffectCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OffWithEffect::DecodableType const&)'
undefined reference to emberAfOnOffClusterOnWithRecallGlobalSceneCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OnWithRecallGlobalScene::DecodableType const&)'  undefined reference to emberAfOnOffClusterOnWithTimedOffCallback(chip::app::CommandHandler*, chip::app::ConcreteCommandPath const&, chip::app::Clusters::OnOff::Commands::OnWithTimedOff::DecodableType const&)'
These functions can be found in src/app/clusters/zll-on-off-server/zll-on-off-server.c, but cannot cannot be used in the build because of missing header includes.

TE7 was quite a ways back, and the code has evolved significantly since then. Marking this as stale.


Added NetJSON serialization

Sorry there's two unrelated commits here.

Great addition, nice work. It would be good to get a fluent config interface in as well, e.g.: .SerializedAsNetJson().

Apologies, I see you already added the fluent config interface!


Delete jackson dependencies

I think jackson serialization coupled to dto is wrong and unnecessary, therefore it should be removed. The reason it done that way is that I initially created this lib only for my other project.
Dto should be just java classes without external serialization properties.

Too hard to implement because there are lot of tests that uses Jackson serialization


fix(ci): helm chart release

Fixed the helm chart release.
Changes

Replaced Github chart-releaser action with plain helm command line, because the chart-releaser action wanted to create a release (which already exists)
Increment the version in the Chart.yaml now too, cause it defines the name of the zip file

@carslen Can you merge this when the CI pipeline is done?


"cleanClasses" task does not really clean class files

Executing this task always results in an "UP-TO-DATE" message
There is a old JIRA Ticket concerning this problem, wich was closed because nobody seemed to be interested in a fix any more:
https://issues.gradle.org/browse/GRADLE-2172
Now i am interested, because IntelliJ uses this task for the "Rebuild project" action when the "Delegate IDE build/run actions to gradle" option is activated

The classes task is a lifecycle task. It does not define any outputs. The only purpose it serves is to define dependencies on other tasks. If you want to clean the outputs of the Java compilation task specifically then you will need to execute cleanCompileJava.

We should find a better model for this, e.g. if you clean a lifecycle task - clean everything that it depends on. Just as an idea. The fact that classes is a lifecycle task is not visible to the user. If we don't make it work like the user expects, then we should remove clean tasks for lifecycle tasks. The fact that the IntelliJ team got trapped by this shows that this is confusing even for advanced users.

then we should remove clean tasks for lifecycle tasks

+1

Similarly, it would be interesting to know how many users actually understand what “lifecycle tasks” are. I don't think the number is high.

@vladsoroka Since the "Delegate build to Gradle" option was mentioned here: Calling cleanClasses has no effect, since classes is just a lifecycle task that depends on the actual compile tasks. I think the simplest thing would be to call clean when the user clicks "Rebuild Project".

@oehme I was thinking about --rerun-tasks option to force sources rebuild, wdyt?
Btw, can I turn off up-to-date state pre gradle task using init script?

You can, using task.upToDateWhen { false }. What's the use case?
Using --rerun-tasks would work, though it's a pretty big hammer. How much do people use "Rebuild Project"? Rerunning every task would be pretty expensive if users call this often.

@oehme the rebuild(project/module or recompile file) IntelliJ action means recompile sources without incremental compilation feature.
Since last year IntelliJ supports delegation of these actions to underlying build system, so we are experimenting with the gradle way to handle it.

Using --rerun-tasks would work, though it's a pretty big hammer.
Does it mean that --rerun-tasks will cause more overhead than clean task?
(Note, we are interested in compiling sources only, not jar/zip/etc archives)

Let's consider rebuild of the sources of the main sources set.
Will it be correct to run classes task with 'task.upToDateWhen { false }' options injected using init-script?

@oehme Using 'clean' task is a big hammer also, e.g. I should be able to rebuild sources of the test sources set w/o affecting of the main sources and other non test related stuff (javadoc/sources jars etc).

The classes task has no outputs. Marking it as upToDate=false has no effect, as it does nothing.
Afaik --rerun-tasks would ignore the build cache, though @wolfs would know better.
If you just want to clean compile tasks, something like tasks.withType(AbstractCompile) { upToDateWhen = { false }} would work. The question though is why the user would want that, since Gradle cleans outdated classes anyway.

--rerun-tasks would not pull from the build cache, but will upload build results into the build cache for cacheable tasks. I guess this is what the user wants. upToDateWhen = { false } has the same effect on the build cache - i.e. no pulling from the cache but pushing to the cache(s).
I guess when someone presses Rebuild ... in IDEA something went wrong and they want to re-execute everything - not using the build cache etc... So using upToDateWhen = { false } or --rerun-tasks might be the right approach.


Bricks Controller!

this bricked my controller because i forgot to use the ds.close() function

What??
There's no way this could brick the controller.
There's a small reset pinhole on the back of the controller that should reset it if you happened to do anything weird.

Also agree with this statement. This library is only using the Hid interface to communicate with the controller.
If you have any more substential logs or info feel free to open an issue with more than 1 sentence.

ok thanks i didnt know if it was actually this or just a coincidence.. the reset button did nothing ): expensive ass paperweight

https://www.playstation.com/en-us/support/hardware/troubleshoot-dualsense

ive done that a billion times, thanks for tryna help tho


chore(GroupTheory/Index): fix names

Rename relindex to relIndex and FiniteIndex.finiteIndex to FiniteIndex.index_ne_zero
From FLT

In what sense is this PR necessary for FLT?
FWIW, I think this PR is symptomatic of a lot of things that are wrong with the currently Mathlib development model. It has zero mathematical content. It's a huge sweeping change which would mean any other PR's touching those files would almost certainly start conflicting and have to be tediously rebased. The deprecations reduce the impact on PRs / other projects that just use these lemmas, but don't reduce it to zero, particularly since you are changing names of structure fields and there's not a deprecation system for that. Finally, the renaming of "finite_index" to "index_ne_zero" actively conceals the intended mathematical meaning, because the true value of the index lives in N+ \cup \infty, and the fact that we re-assign it to 0 is a junk value, a mere implementation detail.
My personal view is that this PR should be closed un-merged, and I would like to ask its author to please avoid making too many more PRs of a similar nature in future.

If we go through with this, we should probably also rename IntermediateField.relrank and Subfield.relrank.

I think this is probably an argument that relIndex/relRank should be renamed in a separate PR to finiteIndex.

Something else to consider is whether relrank is more consistent with Module.finrank.


Radiation data missing from reference-case-zug

Steps to reproduce:

Download reference-case-zug from repo
run data helper
run Demand script with weather=Zug
???
Boom!!

Executing: DemandTool C:\reference-case-zug\baseline Zug
Start Time: Thu Sep 29 16:28:43 2016
Running script DemandTool...
Using python: C:\Python27\ArcGIS10.4\python.exe
Path to demand script: C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\demand\demand_main.py
Adding path to PYTHONPATH: C:\Users\darthoma\Documents\GitHub\CEAforArcGIS
Running demand calculation for scenario C:\reference-case-zug\baseline
Running demand calculation with weather file C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\databases\CH\Weather\Zug.epw
reading input files
Traceback (most recent call last):
  File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\demand\demand_main.py", line 187, in <module>
    run_as_script(scenario_path=args.scenario, weather_path=args.weather)
  File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\demand\demand_main.py", line 176, in run_as_script
    demand_calculation(locator=locator, weather_path=weather_path, gv=gv)
  File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\demand\demand_main.py", line 92, in demand_calculation
    building_properties = BuildingProperties(locator, gv)
  File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\demand\thermal_loads.py", line 849, in __init__
    solar = pd.read_csv(locator.get_radiation()).set_index('Name')
  File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\io\parsers.py", line 474, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\io\parsers.py", line 250, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\io\parsers.py", line 566, in __init__
    self._make_engine(self.engine)
  File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\io\parsers.py", line 705, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\io\parsers.py", line 1072, in __init__
    self._reader = _parser.TextReader(src, **kwds)
  File "pandas\parser.pyx", line 350, in pandas.parser.TextReader.__cinit__ (pandas\parser.c:3160)
  File "pandas\parser.pyx", line 594, in pandas.parser.TextReader._setup_parser_source (pandas\parser.c:5905)
IOError: File C:\reference-case-zug\baseline\outputs\data\solar-radiation\radiation.csv does not exist

Completed script DemandTool...
Succeeded at Thu Sep 29 16:28:49 2016 (Elapsed Time: 6.03 seconds)

Currently running radiation script with these parameters: weather=Zug, year=2014

I followed the above steps 1 through 3, but step 4 never happened:

Executing: DemandTool C:\cea-reference-case\reference-case-zug\baseline Zug
Start Time: Thu Sep 29 16:42:08 2016
Running script DemandTool...
Using python: C:\Python27\ArcGIS10.4\python.exe
Path to demand script: C:\Users\User\Documents\GitHub\CEAforArcGIS\cea\demand\demand_main.py
Adding path to PYTHONPATH: C:\Users\User\Documents\GitHub\CEAforArcGIS
Running demand calculation for scenario C:\cea-reference-case\reference-case-zug\baseline
Running demand calculation with weather file C:\Users\User\Documents\GitHub\CEAforArcGIS\cea\databases\CH\Weather\Zug.epw
reading input files
done
calculating thermal properties
done
creating windows
done
Using 2 CPU's
Building No. 1 completed out of 24
Building No. 2 completed out of 24
Building No. 3 completed out of 24
Building No. 4 completed out of 24
Building No. 5 completed out of 24
Building No. 6 completed out of 24
Building No. 7 completed out of 24
Building No. 8 completed out of 24
Building No. 9 completed out of 24
Building No. 10 completed out of 24
Building No. 11 completed out of 24
Building No. 12 completed out of 24
Building No. 13 completed out of 24
Building No. 14 completed out of 24
Building No. 15 completed out of 24
Building No. 16 completed out of 24
Building No. 17 completed out of 24
Building No. 18 completed out of 24
Building No. 19 completed out of 24
Building No. 20 completed out of 24
Building No. 21 completed out of 24
Building No. 22 completed out of 24
Building No. 23 completed out of 24
Building No. 24 completed out of 24
done - time elapsed: 31.16 seconds
Completed script DemandTool...
Succeeded at Thu Sep 29 16:42:46 2016 (Elapsed Time: 38.06 seconds)

Edit: the version of the reference case Zug that is copied on my hard drive works perfectly. The one on GitHub, however, doesn't. i.e., I reproduced the above error. I'm having a look at it now.

I tried running the radiation script as mentioned above, but it fails with the following error:
Executing: RadiationTool C:\reference-case-zug\baseline Zug 2014
Start Time: Thu Sep 29 16:32:49 2016
Running script RadiationTool...
longitude: 7.43958333333
latitude: 46.9524055556
complete calculating sunrise
complete burning buildings into raster
complete calculating boundaries
complete calculating observers
complete calculating radiation of day No. 1
[...]
complete calculating radiation of day No. 365
complete raw radiation files
complete transformation radiation files
Traceback (most recent call last):
File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\GUI\toolbox.py", line 589, in execute
longitude=longitude, year=year, gv=gv, weather_path=weather_path)
File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\resources\radiation.py", line 153, in solar_radiation_vertical
CalcIncidentRadiation(Data_radiation_path, locator.get_radiation(), locator.get_surface_properties(), gv)
File "C:\Users\darthoma\Documents\GitHub\CEAforArcGIS\cea\resources\radiation.py", line 160, in CalcIncidentRadiation
radiation[['Name', 'Freeheight', 'FactorShade', 'height_ag', 'Shape_Leng']].to_csv(surface_properties, index=False)
File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\core\frame.py", line 1184, in to_csv
formatter.save()
File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\core\format.py", line 1417, in save
encoding=self.encoding)
File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\core\common.py", line 2831, in _get_handle
f = open(path, mode)
IOError: [Errno 2] No such file or directory: u'C:\reference-case-zug\baseline\outputs\data\solar-radiation\properties_surfaces.csv'
Failed to execute (RadiationTool).
Failed at Thu Sep 29 16:43:14 2016 (Elapsed Time: 10 minutes 24 seconds)

Well, the first issue is easy to clarify. There is no radiation data on the reference case on Github. So the demand script obviously doesn't work. So the first problem in this issue is not a problem at all.
The issue is rather that the Radiation tool doesn't work...

This issue is all about the radiation data being missing. That the radiation tool doesn't work is a separate issue (i guess) which might be solved by solving this issue.
@JIMENOFONSECA, do you have any ideas why we are seeing this? And how to fix it?

The radiation tool is supposed to create the surface_properties.csv file that it later cannot find. i.e., the problem is that the surface_properties.csv file is not being created.

OK! I figured it out! the script is trying to WRITE the surface_properties.csv file, but the folder does not exist. I will fix the InputLocator to create this folder.

OK. So PR #348 can fix this issue automatically. I have now run the radiation data and am created a PR for the reference-case repo: https://github.com/architecture-building-systems/cea-reference-case/pull/7
@JIMENOFONSECA can you check this and merge?

@JIMENOFONSECA: The PR on the reference case is still open. Can you please comment on that?


Update README with bors workflow.

Also changed bors to hopefully check every PR.

bors r+

bors r+


No save button

I previous used to 75 fps, now I bump it up to 90, but everytime I have manually increase from 75 to 90, there is no save button to use the last used fps.

@amaangigani7 There should be a configuration file that's automatically generated in the same directory as the executable is located called fps_config.json:
{
  "DllList": [],
  "Priority": 1,
  "MonitorNum": 1,
  "CustomResY": 1080,
  "CustomResX": 1920,
  "FPSTarget": 240,
  "UsePowerSave": false,
  "StartMinimized": true,
  "IsExclusiveFullscreen": false,
  "UseCustomRes": false,
  "Fullscreen": true,
  "PopupWindow": false,
  "AutoClose": true,
  "AutoDisableVSync": true,
  "AutoStart": true,
  "GamePath": "C:\\Program Files\\Genshin Impact\\Genshin Impact game\\GenshinImpact.exe"
}

Ensure that the executable has proper write permissions on this file and that it's not read-only, etc.

it should auto saves


Warn instead of failing on validation errors in manual zones

The purpose of validation overrides is to protect production from
destructive changes by requiring a confirmation for such changes.
This is unnecessary in manuall deployed environments.

Seems like we can remove ValidationOverrides.AllowAllValidationOverrides and the code in DeployState which uses AllowAllValidationOverrides for manually deployed zones with this?

Aha! I vaguely recalled we were supposed to have this but couldn't find it where I expected. This one is fine, so just closing then.

I like this way of doing it much better, though, exactly because it's impossible to find the code that does this (or understand that something like this is actually happening) with the way it is done today.

Fair point. Let me look at it once more ...

Now I've removed (step 1 of 2) the old way of doing it.


Add more Gui Game

plz assign me this task under hackoctober fest

please assign me for this project

Hey @kishanrajput23 can you assign this issue to me. It'll me first Pull request.


Can't enable plugin

I am new to lua in vim, but done all things like described in README, not working any way.
I also install zen-mode, which works fine. So, just want to get, what I'm done wrong?

Do you restart nvm, run packer sync and restart again?


JBrowse screenshots

WIP - for #244

@a8wright  I made most of the changes and cleaned out some stuff.   You saw my note that: jbrowse.alliancegenome.org doesn't resolve?
If we can get that in today then great.  Otherwise, we should just use these IP's until next week so that I can demo.


Needs Double Tap on Touch Devices

When you are either on the mobile emulator or an active touch device, you need to tap twice to launch the zoom.
You can see this on every example on http://igorlino.github.io/elevatezoom-plus/examples.htm except for the one with the tint.
I have tracked it down and only if you set tint=true will it work properly.

Thanks, I will take a look with my tablet.


Update bollard dependency

This, plus a release (which would also include prior dep updates) would be greatly appreciated :)


[Storage] Refactor duplicate code in storage-blob and storage-files-datalake

The duplicate code in storage-blob\utils and storage-files-datalake\utils should be refactored into a shared dependency.  Several files in these directories are identical or nearly identical (and the nearly identical cases may be bugs where one copy was updated but the other was not).

Is the idea that we create a "storage-common" package? This seems fine to me if we aggressively version it.

When releasing v10, we decided to go without storage-common.
@JeffreyRichter @bterlson @
As this is revisited, what's your suggestion?
In my view, some of the util functions might be common enough that we may consider providing them by azure-xxx or simply depending on some mature open source package, for example, Batch, RetriableReadableStream.

I think the duplicate code should be removed somehow, either via a shared public package like storage-common or via our build process sharing source files across packages (this is easy in languages like .NET, not sure about JS).  The current practice of copying source files across packages is a big anti-pattern, and I can see the files are already diverging as people make changes in one copy but not the other.

I prefer sharing code files between packages without creating a runtime common package that has to be released/versioned alongside. @sadasant is going to prototype this approach using TS project deps

I agree we should not be duplicating code, however it must be balanced against the complexity introduced by the abstraction. During pre-GA times, we went with the expedient approach that avoids versioning and servicing burdens.
Going forward, we should fix this. I wonder if we should do a source-level dependency rather than a new package? The primary downside, I think, is that we won't be sharing code between the different storage packages, so bundles involving more than one library would be fatter than strictly necessary, but saves us from dealing with complex versioning issues. Anyone have thoughts?

In this specific case, I would probably lean towards source-level dependency since the shared code is pretty small.

@bterlson, @xirzec, With #8866 merged, am guessing we want to go down the route of source level dependency?
@ljian3377, @XiaoningLiu,  Would you consider a similar approach for Storage?

@ramya-rao-a Yes, we have already done that for storage-internal-avro. Adopting it for common utility code would be helpful, but with low priority as I will have my hands full with STG73 features in July.

Still comfortable with source-level dependencies, although it should be looked at skeptically - e.g. if there are a large number of shared dependencies and users are likely to have multiple copies of them in typical programs, we should strongly consider shipping a package and taking the cost of maintaining it. Not saying that applies here, just saying 😁


Add position bounds on the ODRI quadruped

Hi,
I would like to add position bounds to the knees of the quadruped to prevent the legs to turn around themselves.
I would like to know where the position bounds are taken into account in tsid ?
I have tried to modify a copy of the robot.model.lowerPositionLimits and the robot.model.upperPositionLimits and then set it as new model when using tsid but the new boundaries were not taken into account.
I have also thought of adding a new task using TaskJointBounds but we can not set Position bounds with this task (only velocity or acceleration bounds).
If you have an answer or some leads I could look into, that would be amazing.
Thanks for your advices.

Hi @sduminy , currently joint position bounds are not implemented. If you want, I could give you some tips on how to implement them in TaskJointBounds. As a starting point you could take a look at this paper [1], which explains the theory.
[1] https://hal.archives-ouvertes.fr/hal-01356989v3/document

And here you can find a python implementation of the method described in the paper I mentioned above.

Okay, I will look into it and come back when I would have found a solution.
Thanks.

I will first add an emergency stop when position limits aren't respected to test it on the robot, so I won't implement the position bounds in TaskJointBounds. I will close this issue for now and maybe reopen it later if I have time to tackle this.
Thank you for your answer and advices !

Hello,
In order to implement joint position limits for Talos I have looked at the article and python code
I have implemented the C++ version of the python code inside tsid
The joint position limit seem to work
I need to do more testing , to test other velocity and acceleration limits as well as check the generated torque. I will keep you updated on this
Then it would be interesting to combine it with torque limits too

Hi @dalinel
thanks for the update and for contributing to this project! When you're ready you can do a pull request so I can review the code.
Andrea

Since the PR has been merged I think we can close this issue.


[CSL-2044] Make 'instance Bi VssCertData' compatible with mainnet's one

The issue is very similar to CSL-1802 (#1828). This incompatibility was broken
was 'VssCertificatesMap' became newtype. Previously it was a 'type' alias,
so it was encoded as a 'HashMap'. But 'VssCertificatesMap' newtype is encoded
as a list.
This commit changes serialization format of 'VssCertData' to the old one.
This particular problem issue is less significant than CSL-1802, because
'VssCertData' is stored only in DB, but not in blocks, so it's basically an
implementation detail. That's why it hasn't been noticed for a long time.
Alternative solution would be to stop using old format (which was a bit
stupid) and perform DB migration. I've chosen this one, because DB migration
is hard and inefficiency of the old format is insignificant, because we have
only 7 certificates nowadays anyway.

@neongreen fixed.


feat(express): Introduce Clerk package for Express

Description
Introduce Express specific Clerk SDK @clerk/express. The SDK exposes the following API:

clerkClient: default @clerk/backend client initialized from env variables and used to make BAPI requests
clerkMiddleware: centralized middleware that authenticates all requests without blocking them (also triggers handshake mechanism)
getAuth: utility to retrieve the auth state from the request (requires clerkMiddleware to executed)
requireAuth: middleware that returns http 401 response when request is signed-out

Also all the top level exports from @clerk/backend are re-exported from @clerk/express top level.
Checklist

[ ] npm test runs as expected.
[ ] npm run build runs as expected.
[ ] (If applicable) JSDoc comments have been added or updated for any package exports
[ ] (If applicable) Documentation has been updated

Type of change

[ ] 🐛 Bug fix
[x] 🌟 New feature
[ ] 🔨 Breaking change
[ ] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

TODOs

[x] Add tests
[ ] Add examples
[x] Replace all TODO(express) TODOs
[ ] Use this package to create separate page in backend-request/handling docs

@LekoArts, @nikosdouvlis Could you take another look at this PR?


ui: show zones and offerings to users

Show common information such as zone and offerings to users for their use with Terraform, CAPC etc. without having to use cmk for getting the IDs.
Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

@blueorangutan ui

@rohityadavcloud a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

Tested with users on QA/UI server: admin, user and domainadmin (under Test domain) all with password password

UI build: :heavy_check_mark:
Live QA URL: https://qa.cloudstack.cloud/simulator/pr/7557 (QA-JID-114)

@blueorangutan ui

@rohityadavcloud a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

tested in qa again:
as regular user I see


Feat: 17 - Add tests using Vitest

Is your feature request related to a problem? Please describe.
Add tests using Vitest
Describe the Solution You'd Like
I propose adding tests to the project to cover key components and functionality.
Describe Alternatives You've Considered
N/A
Additional Context
I'd like to work on this issue, please assign it to me.

Hi @shahpreetk
Thanks for taking this up, it'll be beneficial.
Please consider the following:

[ ] Add vitest and update the vite + vitest config.
[ ] Add 100% statements coverage and use istanbul coverage provider
[ ] Add data-testid to ensure components are easily accessible and testable
[ ] Use fireEvent and userEvent for interactions from React Testing Library
[ ] Use jest-dom for dom rendering
[ ] Add tests in the same directory as the component with *.test.{js, jsx} naming convention

If it seems like too much for one PR, we can break it into two later.

[ ]  Add tests in the same directory as the component with *.test.{js, jsx} naming convention

Regarding this, would it not be better to have a separate tests folder? If we are aiming for 100% coverage and creating test files for each existing file, it might get difficult to navigate code while implementing new features.

I get what you mean, but I guess having the test file in the same directory next to its component makes it easy to future updates, navigation through the directory and even deletion of whole thing together.


Investigate (and possibly implement) ability to easily turn an HFT into an identity

Is your feature request related to a problem? Please describe.
There are use cases where the move to Deferred has caused a loss of built-in ability to turn an HFT into an identity that the user may need to manually do. Investigate what would be needed for this.
Describe the solution you would like
AC:

[ ] Investigate what would be needed to simplify this UX
[ ] (optional depending on effort) Implement this functionality

Describe alternatives you have considered
N/A
Additional context
Note that we should try to avoid exchanging the HFT for identity within the conjur::secret to prevent the agent from having access to the HFT token.

@frankmundt: Feel free to add any more detail here if needed

Establishment of the host identity should be the responsibility of the Conjur module, not performed by other functions.  This causes a spread of knowledge and responsibility and a brittle implementation.
We resolved this is using REST API to interact with the DAP and bash and powershell scripts.

Tentative proposed implementation based on PoC experimenation:
$hft_token = Sensitive('...')

$api_key = conjur::create_host('<HOST_ID>', {
    appliance_url => ...,
    account => ...,
    host_factory_token => $hft_token,
    ssl_certificate => ...,
})

In the manifest, this would eventually look something like this:
$hft_token = Sensitive('3vtzqge1xw1nrpx58awc3t3rk5c3nv0qr33dbf85b2m6nqzk2m7m6fq')

$api_key = conjur::create_host('my-new-host', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  host_factory_token => $hft_token,
  ssl_certificate => $sslcert,
})

$db_password = Deferred(conjur::secret, ['inventory/db-password', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  authn_login => 'host/my-new-host',
  authn_api_key => $api_key,
  ssl_certificate => $sslcert,
}])

The API key would be rotated every time this manifest would run
Since we wouldn't use Deferred for HFT, the agent will not have access to the token
Manifests can be idempotent as long as they are not run concurrently

Would that update the identity on the host as well? Otherwise any scripts utilizing summon would fail.......

Hey @frankmundt,
Can you describe your use case better for this since maybe I didn't fully understand the scope initially?
I would love to know a bit more about a few things too:

So for your use case, not all credential retrieval is done over Puppet but there's a Summon component that the agent uses later? Can you elaborate?
What summon provider would you be using with this?
Is the problem just of persisting the identity? If so, why would the persistence needed if Puppet can dynamically do everything at runtime?

Let me know about these and we can try to figure out what we can do here. I would lean heavily towards not handling persistence of identity on the agent directly in the module as that can be done in Puppet constructs already so maybe I'll see about trying to get you an example of that.
Srdjan

Puppet is managing applications that require secrets for DB access,
ActiveMQ, JBoss, Tomcat, etc. Those either utilize secrets.yml or some
local encryption store, like the JBoss Vault since we can't inject
environment variables into all locations of the standalone.xml for
example.  For Linux most applications are managed via systemctl, we have
wrapped the management scripts with Summon. We have not done much on
Windows beyond SQL Server, and that is taken care of with Windows
Credential manager. I do see that expanding in the future.  For ActiveMQ we
are using native encryption of passwords, storing the encryption key as a
secret. Puppet establishes the encrypted passwords, but ActiveMQ needs to
pull the encryption key secret at startup.
We are using the summon-conjur provider.  If you need more detail we will
need to take this to a private channel.
Frank
On Mon, Oct 5, 2020 at 9:54 AM Srdjan Grubor<EMAIL_ADDRESS>wrote:

Hey @frankmundt https://github.com/frankmundt,
Can you describe your use case better for this since maybe I didn't fully
understand the scope initially?
I would love to know a bit more about a few things too:

So for your use case, not all credential retrieval is done over
Puppet but there's a Summon component that the agent uses later? Can you
elaborate?
What summon provider would you be using with this?
Is the problem just of persisting the identity? If so, why would the
persistence needed if Puppet can dynamically do everything at runtime?

Let me know about these and we can try to figure out what we can do here.
I would lean heavily towards not handling persistence of identity on the
agent directly in the module as that can be done in Puppet constructs
already so maybe I'll see about trying to get you an example of that.
Srdjan
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cyberark/conjur-puppet/issues/200#issuecomment-703685087,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADSN75ZJOFIMFYS6ITU7LJDSJHMY5ANCNFSM4QL6Q3WQ
.

Oh I think I see what you mean: the identity files are used after Puppet is finished setting up the machine by non-Puppet tools using the same identity files. This use case was not covered directly by the described issue though - it's intended only to ease the transition of a host factory token identity into an api_key for a host (for Puppet operations only). I think this would bring things a step closer since you wouldn't need to manually contact Conjur / DAP APIs to do that part at least.

Hey @frankmundt,
After some PoC investigations about feasibility and your feedback, we've come to a few development directions possible on this. Please review the following options and file a Salesforce Enhancement Request for the option you would like us to pursue here so that we can get it scheduled with PM.
Options Summary

Name
Description
Maintainability
Security (relative to current state)

Current State
State of module as of v3.1.0
Very High
Very High

Helper HFT Function
Function that can convert HFT -> api_key for a host
High
High

Ident Save Only
We add save => true to conjur::secret
Medium
Medium

Helper HFT Func w/ Ident Save
Helper HFT func with identity save on agent
Medium
Medium

Longer descriptions
Current State
As-is version v3.1.0. HFTs and identity persistence is not part of core functionality.
Helper HFT Function
This would add conjur::create_host function that would be able to turn a host-factory token into an api_key for a host. The usage would look something like:
$hft_token = Sensitive('3vtzqge1xw1nrpx58awc3t3rk5c3nv0qr33dbf85b2m6nqzk2m7m6fq')

$api_key = conjur::create_host('my-new-host', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  host_factory_token => $hft_token,
  ssl_certificate => $sslcert,
})

$db_password = Deferred(conjur::secret, ['inventory/db-password', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  authn_login => 'host/my-new-host',
  authn_api_key => $api_key,
  ssl_certificate => $sslcert,
}])

Persistence of the identity would be left to general Puppet built-in constructs (e.g. file and exec methods)
Ident save only
This would add a flag to be able to save the information passed to conjur::secret on the agent for subsequent use. This would add a (TBD) parameter to conjur::secret (e.g. save => true) to persist this value which could later be used by other tools. Conversion of HFT token into an API key would not be covered by this use case.
$db_password = Deferred(conjur::secret, ['inventory/db-password', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  authn_login => 'host/my-new-host',
  authn_api_key => $api_key,
  ssl_certificate => $sslcert,
  save => true,
}])

Helper HFT Func with Ident Save
Combination of HFT helper function and identity saving but the UX would be much smoother:
conjur::create_host('my-new-host', {
  appliance_url => 'https://conjur.cyberark.com',
  account => 'default',
  host_factory_token => $hft_token,
  ssl_certificate => $sslcert,
  save => true
})

$db_password = Deferred(conjur::secret, ['inventory/db-password'])

Thanks,
Srdjan


github/release-date displaying incorrect date

Are you experiencing an issue with...

[x] shields.io
[ ] My own instance
[ ] badge-maker NPM package

:beetle: Description
:link: https://img.shields.io/github/release-date/danielwerg/r6api.js?label=last release

🔗 Latest release (March 16, 2021)

If I request https://api.github.com/repos/danielwerg/r6api.js/releases/latest
the response says
...
  "created_at": "2020-12-01T18:54:16Z",
  "published_at": "2021-03-16T12:32:03Z",
...

Clearly we are presenting the created_at date. I'm struggling to find a clear explanation of exactly what each one means in the docs. Any idea where there is such a large discrepancy between the tow in your case?

Seems like created_at represents tag date and published_at is date of publishing release. Honestly I just assumed that "GitHub Release Date" would refer to published_at as a date.

Any idea where there is such a large discrepancy between the two in your case

I can't exactly remember but I'm guessing it is because I pushed this commit by accident.

Seems like created_at represents tag date and published_at is date of publishing release

Yes that's my thinking as well. GitHub can be awfully fuzzy when it comes to the distinction between tags and releases (a common source of confusion for our users), and I would imagine this API response is reflective of/analogous to "unreleased" tags being enumerated within the "Releases" view without all the release-associated metadata.
If we were starting greenfield then I actually feel like there would have been a good case to be made that we should use published_at if the intent of the badge is to reflect GitHub's "Releases", but I don't think that's a change we can make at this point in the absence of a functional time machine.
Maybe we should just add a query param with the default staying with created_at to give users the flexibility to choose?

It is a different issue, but this feels like it fits in the same box as https://github.com/badges/shields/issues/6236


terraform-local: 0.18.2 -> 0.19.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for terraform-local is: Terraform CLI wrapper to deploy your Terraform applications directly to LocalStack
meta.homepage for terraform-local is: https://github.com/localstack/terraform-local
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.19.0 with grep in /nix/store/a02wbc8afr39x3vc6qdvqg6kl634i87c-terraform_local-0.19.0
found 0.19.0 in filename of file in /nix/store/a02wbc8afr39x3vc6qdvqg6kl634i87c-terraform_local-0.19.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

terraform-local

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/a02wbc8afr39x3vc6qdvqg6kl634i87c-terraform_local-0.19.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A terraform-local https://github.com/r-ryantm/nixpkgs/archive/ab6771f9cd00110ea640ab9e02662b310dc9b7ef.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/ab6771f9cd00110ea640ab9e02662b310dc9b7ef#terraform-local

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/a02wbc8afr39x3vc6qdvqg6kl634i87c-terraform_local-0.19.0
ls -la /nix/store/a02wbc8afr39x3vc6qdvqg6kl634i87c-terraform_local-0.19.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

terraform-local
terraform-local.dist

Maintainer pings
cc @shivaraj-bh for testing.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 334357 run on x86_64-linux 1

2 packages built:

terraform-local
terraform-local.dist

Result of nixpkgs-review pr 334357 run on aarch64-darwin 1

2 packages built:

terraform-local
terraform-local.dist

@NixOS/nixpkgs-merge-bot merge


Issue with Timezone within ComputerManagementDsc Module shown in example

Hello,
I have copied the example of Set Timezone within ComputerManagementDSC module.
I saved this as a PS script and whenever i run this via azure automation services then it throws me an Error that Timezone is not a valid parameter.
Configuration TimeZone_SetTimeZone_Config
{
Import-DSCResource -ModuleName ComputerManagementDsc
Node localhost
{
    TimeZone TimeZoneExample
    {
        IsSingleInstance = 'Yes'
        TimeZone         = 'W. Europe Standard Time'
    }
}

}
Request you to kindly help me on this.
I am new to Powershell and trying to get more into this.
Exception calling "NewScriptBlock" with "1" argument(s): "At line:8 char:9 + TimeZone TimeZoneExample + ~~~~~~~~ Undefined DSC resource 'TimeZone'. Use Import-DSCResource to import the resource." (At line:8 char:9 + TimeZone TimeZoneExample + ~~~~~~~~ Undefined DSC resource 'TimeZone'. Use Import-DSCResource to import the resource.)

Hi
did you import the module in Module Galery ?

I am runnning into the same issue. xTime has been deprecated but this seems to fail in Azure when running dsc node compilations. Module was already imported into Azure modules, but I went ahead and re-imported and still the issue persists. In VSC, it complains about a conflict with the name.
This is the message that VSC gives. Not sure if this is related but I figured I would include as well.
Undefined DSC resource 'TimeZone'. Use Import-DSCResource to import the resource.PowerShell
'TimeZone' is implicitly aliasing 'Get-TimeZone' because it is missing the 'Get-' prefix. This can introduce possible problems and make scripts hard to maintain. Please consider changing command to its full name.PSScriptAnalyzer(PSAvoidUsingCmdletAliases)
Same message as above when trying to compile.
Exception calling "NewScriptBlock" with "1" argument(s): "At line:8 char:9 + TimeZone TimeZoneExample + ~~~~~~~~ Undefined DSC resource 'TimeZone'. Use Import-DSCResource to import the resource." (At line:8 char:9 + TimeZone TimeZoneExample + ~~~~~~~~ Undefined DSC resource 'TimeZone'. Use Import-DSCResource to import the resource.)

Hi @omiossec,
Sorry about the delay in looking into this.
What version of Windows are you using and what version of this resource module is installed?

Azure, latest - 8.3.0
Trying to pull it in on a Win10 manchine but same error on 2016/19 at compilation.
Compilation Exception:
Exception calling "NewScriptBlock" with "1" argument(s): "At line:19 char:15 + TimeZone = "GMT Standard Time" + ~~~~~~~~~~~~~~~~~~~ Unexpected token '"GMT Standard Time"' in expression or statement. At line:10 char:2 + { + ~ Missing closing '}' in statement block or type definition. At line:3 char:1 + { + ~ Missing closing '}' in statement block or type definition. At line:12 char:3 + rsSysLocale SysLoc + ~~~~~~~~~~~ Undefined DSC resource 'rsSysLocale'. Use Import-DSCResource to import the resource. At line:17 char:3 + rsTime time + ~~~~~~ Undefined DSC resource 'rsTime'. Use Import-DSCResource to import the resource. At line:22 char:3 + rsUserLocale UserLocale + ~~~~~~~~~~~~ Undefined DSC resource 'rsUserLocale'. Use Import-DSCResource to import the resource." (At line:19 char:15 + TimeZone = "GMT Standard Time" + ~~~~~~~~~~~~~~~~~~~ Unexpected token '"GMT Standard Time"' in expression or statement. At line:10 char:2 + { + ~ Missing closing '}' in statement block or type definition. At line:3 char:1 + { + ~ Missing closing '}' in statement block or type definition. At line:12 char:3 + rsSysLocale SysLoc + ~~~~~~~~~~~ Undefined DSC resource 'rsSysLocale'. Use Import-DSCResource to import the resource. At line:17 char:3 + rsTime time + ~~~~~~ Undefined DSC resource 'rsTime'. Use Import-DSCResource to import the resource. At line:22 char:3 + rsUserLocale UserLocale + ~~~~~~~~~~~~ Undefined DSC resource 'rsUserLocale'. Use Import-DSCResource to import the resource.)
ps1 config:
Configuration Custom_locale_test
{
Import-DSCResource -ModuleName 'PSDesiredStateConfiguration'
Import-DSCResource -ModuleName 'AuditPolicyDSC'
Import-DSCResource -ModuleName 'SecurityPolicyDSC'
Import-DSCResource -ModuleName 'ComputerManagementDsc'
Node localhost
{

	rsSysLocale SysLoc
	{
		SysLocale = "en-GB"
	}

	rsTime time
	{
		TimeZone = "GMT Standard Time"
	}

	rsUserLocale UserLocale
	{
		Name = "UserLocale"
		Culture = "en-GB"
		LocationID = "242"
		LCIDHex = "0809"
		InputLocaleID = "00000809"
	}

Hi @fpschrisiom ,
There are a few issues with this config:

rsSysLocale and rsTime are not the correct resource names: Should be SystemLocale and TimeZone respectively.
The TimeZone resource should be like this:

        TimeZone TimeZoneExample
        {
            IsSingleInstance = 'Yes'
            TimeZone         = 'Tonga Standard Time'
        }

There is no UserLocale resource in ComputerManagementDsc. Would be open to adding it though.

Ahhh, my bad. Long few days with DSC and had multiple gits open with dsc locales but this git came up with the same error! I swear I thought I copied the code from the wiki and triple checked it. Wishful thinking.
If you wouldn't mind adding it, that would be awesome. I'm having to cobble so much together so I don't have to maintain a server image for our prod cattle.
I got it working.
`	TimeZone UK
{
IsSingleInstance = 'Yes'
TimeZone         = 'GMT Standard Time'
}
SystemLocale en-GB
{
	IsSingleInstance = 'Yes'
	SystemLocale = "en-GB"
}`

No worries! Glad it's working! I'll add a new issue to track the enhancement,

@fpschrisiom - could you raise a new issue detailing the new resource you'd like added? I just want to make sure we get the functional requirements right - e.g. that the resource covers the user scenario correctly.

@fpschrisiom - could you raise a new issue detailing the new resource you'd like added? I just want to make sure we get the functional requirements right - e.g. that the resource covers the user scenario correctly.
Certainly! I've added a task on my planner to do it tomorrow. Sorry, notifications not on! I'll sort that too.

Same issue for me compilation failed with exception error .
Configuration TimeZone_SetTimeZone_Config
{
Import-DSCResource -ModuleName ComputerManagementDsc
Node localhost
{
    TimeZone UK
    {
        IsSingleInstance = 'Yes'
        TimeZone         = 'Greenwich Mean Time'
    }
}

}
error: Exception calling "NewScriptBlock" with "1" argument(s): "At line:10 char:9 + TimeZone UK + ~~~~~~~~ Undefined DSC resource 'TimeZone'.

Hi @anusha189 - what version of the ComputerManagementDsc resource have you got installed? Can you tell me what is the output when you run Get-DscResource -Module ComputerManagementDsc?


return result without go Back

Hi
We need to return a value from a scene without close it to previous scene.
Look like setFragmentResult in Android Navigation.

I personally do not feel like this is a navigation library's job, since you can just have an event bus separately and also do the same thing.


DatPayload requires Attributes

SecurityProfile
extendedGuarantee
...

See also Communication Guide specification to DAT and DAT Request

see feature/datPayloadAttributes branch.

I need to test these changes more, and need to verify that the updates work with the upstream tool chain.

Fixed in #239


Using a tab completions template (moustache) encodes special characters to html

Before submitting your bug report

[X] I believe this is a bug. I'll try to join the Continue Discord for questions
[X] I'm not able to find an open issue that reports the same bug
[X] I've seen the troubleshooting guide on the Continue Docs

Relevant environment info
- OS: Arch Linux
- Continue: v0.9.80 (pre-release)
- IDE: VSCode 1.87.0

Description
Defining a template in tabAutocompleteOptions will html encode special characters before they're sent to the model.
E.g.: " becomes ", ' becomes ' - The model adapts to this and the response is equally useless.
To reproduce

Define a template in tabAutocompleteOptions. E.g. for deepseek-coder:"tabAutocompleteOptions": {
  "template": "<｜fim▁begin｜>{{prefix}}<｜fim▁hole｜>{{suffix}}<｜fim▁end｜>"
},

Create a new file, make sure autocomplete is turned on.
Write something containing quotation marks. E.g.: print("asd")
Press Return and enter print:

View the log of your LLM server. Example from Koboldcpp:{
    "model": "AUTODETECT",
    "max_tokens": 1024,
    "temperature": 0,
    "stop": [
        "\n\n",
        "```",
        "function",
        "class",
        "module",
        "export"
    ],
    "prompt": "<\uff5cfim\u2581begin\uff5c>print("asd")\np<\uff5cfim\u2581hole\uff5c><\uff5cfim\u2581end\uff5c>",
    "stream": true
}

Log output
Notice " vs \" in both examples as a replacement for ".
Log with template:
{
    "model": "AUTODETECT",
    "max_tokens": 1024,
    "temperature": 0,
    "stop": [
        "\n\n",
        "",
        "function",
        "class",
        "module",
        "export"
    ],
    "prompt": "<\uff5cfim\u2581begin\uff5c>print("asd")\np<\uff5cfim\u2581hole\uff5c><\uff5cfim\u2581end\uff5c>",
    "stream": true
}

Log without template:
(this doesn't acutally give me any output because it's the wrong format)
{
    "model": "AUTODETECT",
    "max_tokens": 1024,
    "temperature": 0,
    "stop": [
        "<fim_prefix>",
        "<fim_suffix>",
        "<fim_middle>",
        "<|endoftext|>",
        "\n\n",
        "```",
        "function",
        "class",
        "module",
        "export"
    ],
    "prompt": "<fim_prefix>// Path: config.json\n// ]\n// }\n// \n//   \"slashCommands\": [\n//     {\n//       \"name\": \"edit\",\n//       \"description\": \"Edit selected code\"\n//\n\nprint(\"asd\")\nprint<fim_suffix><fim_middle>",
    "stream": true
}

tabAutocompleteModel config:
"tabAutocompleteModel": {
  "title": "asd",
  "provider": "openai",
  "model": "AUTODETECT",
  "apiBase": "http://localhost:5001/v1",
  "template": "deepseek",
  "apiKey": ""
},

Nevermind, apparently that's a feature.
Save yourself a headache by using triple {, }.
Correct example for stable-code
"tabAutocompleteOptions": {
  "template": "<fim_prefix>{{{prefix}}}<fim_suffix>{{{suffix}}}<fim_middle>"
},


can't configure bgp for VPN

Community Note
Versions
v1.1.0

terraform:
Terraform v1.0.11
azure provider:
version = "~> 2.87"
module:
erraform-azurerm-caf-enterprise-scale
Description
we're attempting to setup the connectivity with the following config:

module "caf-enterprise-scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = "1.1.0"
  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id                = data.azurerm_client_config.core.tenant_id
  subscription_id_management    = "ourMgmtSub"
  subscription_id_connectivity  = "ourCommsSub"
  deploy_core_landing_zones     = false
  deploy_connectivity_resources = true
  default_location              = local.default_location
  configure_connectivity_resources = {

    advanced = {
      custom_settings_by_resource_type = {
        azurerm_virtual_network_gateway = {
          enable_bgp = true <-- this is not picked up?
        }
      }
    }

    settings = {
      hub_networks = [
        {
          enabled = true
          config = {
            address_space                = ["fullCidr", ]
            location                     = local.default_location
            link_to_ddos_protection_plan = false
            dns_servers                  = []
            bgp_community                = ""
            subnets                      = []
            virtual_network_gateway = {
              enabled = true
              config = {
                address_prefix           = "gwCidr"
                gateway_sku_expressroute = ""
                gateway_sku_vpn          = "Basic"
              }
            }
            azure_firewall = {
              enabled = false
              config = {
                address_prefix   = "fwCidr"
                enable_dns_proxy = true
                availability_zones = {
                  zone_1 = true
                  zone_2 = true
                  zone_3 = true
                }
              }
            }
            spoke_virtual_network_resource_ids      = []
            enable_outbound_virtual_network_peering = true
          }
        }
      ]
      vwan_hub_networks = []
      ddos_protection_plan = {
        enabled = false
        config = {
          location = "northeurope"
        }
      }
      dns = {
        enabled = true
        config = {
          location = null
          enable_private_link_by_service = {
            azure_automation_webhook             = false
            azure_automation_dscandhybridworker  = false
            azure_sql_database_sqlserver         = false
            azure_synapse_analytics_sqlserver    = false
            azure_synapse_analytics_sql          = false
            storage_account_blob                 = false
            storage_account_table                = false
            storage_account_queue                = false
            storage_account_file                 = false
            storage_account_web                  = false
            azure_data_lake_file_system_gen2     = false
            azure_cosmos_db_sql                  = false
            azure_cosmos_db_mongodb              = false
            azure_cosmos_db_cassandra            = false
            azure_cosmos_db_gremlin              = false
            azure_cosmos_db_table                = false
            azure_database_for_postgresql_server = false
            azure_database_for_mysql_server      = false
            azure_database_for_mariadb_server    = false
            azure_key_vault                      = false
            azure_kubernetes_service_management  = false
            azure_search_service                 = false
            azure_container_registry             = false
            azure_app_configuration_stores       = false
            azure_backup                         = false
            azure_site_recovery                  = false
            azure_event_hubs_namespace           = false
            azure_service_bus_namespace          = false
            azure_iot_hub                        = false
            azure_relay_namespace                = false
            azure_event_grid_topic               = false
            azure_event_grid_domain              = false
            azure_web_apps_sites                 = false
            azure_machine_learning_workspace     = false
            signalr                              = false
            azure_monitor                        = false
            cognitive_services_account           = false
            azure_file_sync                      = false
            azure_data_factory                   = false
            azure_data_factory_portal            = false
            azure_cache_for_redis                = false
          }
          private_link_locations                                 = []
          public_dns_zones                                       = []
          private_dns_zones                                      = []
          enable_private_dns_zone_virtual_network_link_on_hubs   = true
          enable_private_dns_zone_virtual_network_link_on_spokes = true
        }
      }
    }

    location = local.default_location
    tags = {
      terraform = "true"
    }
  }
}

Describe the bug
We can't see that advanced.custom_settings_by_resource_type.azurerm_virtual_network_gateway.enable_bgp is picked up for the VPN gateway.
Steps to Reproduce

use config as described
observe no bgp_enabled flag on vpn gw

Screenshots
N/A
Additional context
N/A

Thank you for raising this question @davidkarlsen
It looks like you were pretty close with the input, but not quite there. If you look at the line of code where this value is set, you will see that you also need to provide additional parts to the object to target the correct scope, as below:

So for your specific example, please try with the following:
    advanced = {
      custom_settings_by_resource_type = {
        azurerm_virtual_network_gateway = {
          connectivity = {
            vpngw= {
              (local.default_location) = { # <-- not the parenthesis around this local to ensure it's correctly interpreted as a key
                enable_bgp = true # <-- this should now be picked up :-)
              }
            }
          }
        }
      }
    }

Hope this helps, but please let us know how you get on!

Awesome - that solved it - thanks a lot!
It was a bit convoluted to backtrack - maybe a few examples of a bit more real-world/complex setups could be worthwhile to ease adoption?
I'm now looking into azurerm_local_network_gateway + azurerm_virtual_network_gateway_connection and it seems these needs to be managed outside of the module? This gives some friction as the id's are used in a loop inside of the caf module, so you get the infamous "known only after apply" issue, and need to target certain modules before running the caf one. I understand that one does not want to shoe-horn all config into the caf module and keep it lean, as there are many ways to setup comms, but making it easy to plug together would be great.
Could you also shed some light on reading outputs, specifically I need to read the virtual_network_gateway_id and resource-group name for the comms RG.
For now I could just hack the latter with: comms_resource_group_name = "es-connectivity-${local.default_location}"
I can read the virtual_network_gateway_id through a datasource but it feels a bit hackish as it leaks abstractions from the caf module into other resources, where one has to rely on the [current] naming-conventions in order to read them.

@davidkarlsen we understand your frustration with the resource IDs, but we had to find a way which would allow us to handle these in a consistent and meaningful way. As I'm sure you've discovered through your work with the advanced settings, each resource has a different set of criteria to identify it as "unique". This made it challenging to build a data model which would be meaningful to anyone, and programmatically friendly.
We might have been able to make this a bit cleaner by using a more traditional approach of module nesting for resources, but this would make it much harder to enable some of the key features of the module. For example, enabling deployments using multiple pipelines (one for core resources, another for management resources, etc.) without breaking the integration which ensures resources created by the module are compliant with the corresponding policies. This was made harder by the fact that we need to ensure literally anything and everything can be customised for those edge cases which customers are experts at identifying 😄
For now (hacky or not), our recommendation is to use the data resource approach you mention, as this is actually a HashiCorp recommended approach.
Moreover, we recommend that you start to think about breaking up your deployment across pipelines in alignment with your operational processes. This allows you to simplify scenarios such as change management, as the scope of what's being changed is more specific, and therefore less impactful. e.g. firewall rule changes shouldn't risk impacting existence of the firewall itself, or the route tables which ensure traffic is directly to the firewall.
I'm going to close this issue as we've answered the original question but if you have any further questions please feel free to post them here or on a new issue.


Add support for Fragment factories to Henson

I love removing boilerplate and having better code and Henson is really nice for Activites, but for Fragments you are still left making your own .create() static method or a factory. Henson supporting fragments would make errors like mismatching bundle strings a non issue and reduce all this code just to create the activity.

We are open to suggestions, as we couldn't find any way to extend dart &
henson in a useful and elegant way.
Le lun. 7 nov. 2016 17:55, Buttink<EMAIL_ADDRESS>a écrit :

I love removing boilerplate and having better code and Henson is really
nice for Activites, but for Fragments you are still left making your own
.create() static method or a factory. Henson supporting fragments would
make errors like mismatching bundle strings a non issue and reduce all this
code just to create the activity.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/f2prateek/dart/issues/135, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABv33f-PRWUbfkCIgaX6n_WeVortzdOCks5q71f-gaJpZM4Krcqt
.

This can be done using the existing factory. Maybe it could be more elegant, but it's not so bad:
// In the fragment
@InjectExtra
int arg1;
@InjectExtra
int arg2;

...

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    Dart.inject(this, getActivity());
}

// In the starting activity
getIntent().putExtras(Henson.with(this)
        .gotoMyFragment()
        .arg1(arg1)
        .arg2(arg2)
        .build());
getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.container, new MyFragment())
        .commit();

This leaves quite a few question : how to generate an intent for multiple
fragments ? How to know which activity contains which fragment ? How to
deal with fragments that may or may nit be there ?
Le lun. 28 nov. 2016 06:40, Johan Reitan<EMAIL_ADDRESS>a
écrit :

This can be done using the existing factory. Maybe it could be more
elegant, but it's not so bad:
// In the fragment@InjectExtraint arg1;@InjectExtraint arg2;
...
@Overridepublic void onAttach(Context context) {
super.onAttach(context);
Dart.inject(this, getActivity());
}
// In the starting activity
getIntent().putExtras(Henson.with(this)
.gotoMyFragment()
.arg1(arg1)
.arg2(arg2)
.build());
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new MyFragment())
.commit();
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/f2prateek/dart/issues/135#issuecomment-263287648, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABv33RZLR1wPfIYPcYCVrp0i5JZWRlaWks5rCuf1gaJpZM4Krcqt
.

And how do you use the intent you have built ?
Le lun. 28 nov. 2016 07:35, Stéphane NICOLAS<EMAIL_ADDRESS>a
écrit :

This leaves quite a few question : how to generate an intent for multiple
fragments ? How to know which activity contains which fragment ? How to
deal with fragments that may or may nit be there ?
Le lun. 28 nov. 2016 06:40, Johan Reitan<EMAIL_ADDRESS>a
écrit :
This can be done using the existing factory. Maybe it could be more
elegant, but it's not so bad:
// In the fragment@InjectExtraint arg1;@InjectExtraint arg2;
...
@Overridepublic void onAttach(Context context) {
super.onAttach(context);
Dart.inject(this, getActivity());
}
// In the starting activity
getIntent().putExtras(Henson.with(this)
.gotoMyFragment()
.arg1(arg1)
.arg2(arg2)
.build());
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, new MyFragment())
.commit();
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/f2prateek/dart/issues/135#issuecomment-263287648, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABv33RZLR1wPfIYPcYCVrp0i5JZWRlaWks5rCuf1gaJpZM4Krcqt
.

In the simplest cases, this works, but you're right, this is dangerous if I had several fragments. If multiple fragments have extras with the same name, this wouldn't work, since I'm putting the extras in the activity's intent.

Henson support Intent builder. But, for Fragment we need Bundle instead. So, I think it need to improve for Fragment. I tested in version 2.0.2 and saw that builder for Fragment look so weird.
public CategoryListFragment$$IntentBuilder(Context context) {
intent = new Intent(context, CategoryListFragment.class); // Intent for fragment?
}
public CategoryListFragment$$IntentBuilder.AllSet parentId(String parentId) {
bundler.put("parentId", parentId);
return new CategoryListFragment$$IntentBuilder.AllSet();
}
public class AllSet {
public Intent build() {
intent.putExtras(bundler.get());
return intent;
}
}

Any update on this?

We are very open to PRs about this. As I said, we never found a good &
useful way to do it.
2017-05-04 20:27 GMT+02:00 Rainer-Lang<EMAIL_ADDRESS>
Any update on this?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/f2prateek/dart/issues/135#issuecomment-299269840, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABv33Xy8aCNxGxqM48wRsxRUCE63IZVxks5r2hiIgaJpZM4Krcqt
.


FetchStreamState before AggregateStream throws nullreferenceexception

On a clean IDocumentStore.
Given that I have a stream in the database with a typename.
If I do this
var state = await session.Events.FetchStreamStateAsync(streamId);
var aggregate = await session.Events.AggregateStreamAsync(streamId);

Then I get a nullreferenceexception in FetchStreamStateAsync that ends up in EventGraph.AggregateTypeFor where it doesnt seem to find the type in the _aggregates dictionary and as such tries to call the AggregateType property on a null ref.
However if we switch the order of those two lines
var aggregate = await session.Events.AggregateStreamAsync(streamId);
var state = await session.Events.FetchStreamStateAsync(streamId);

Then this works because AggregateStreamAsync will call EventGraph.AggregateFor<T> which will add the type to the _aggregates dictionary and as such it will be able to be resolved from there in the next call.
I would expect this to work no matter the order I call FetchStreamState or AggregateStream in.

@wastaz, I can't reproduce this problem. This test passes in master:
    public class fetching_stream_state_before_aggregator_is_registered : IntegratedFixture
    {
        [Fact]
        public async Task bug_705_order_of_operation()
        {
            var streamId = Guid.NewGuid();

            using (var session = theStore.OpenSession())
            {
                var joined = new MembersJoined { Members = new string[] { "Rand", "Matt", "Perrin", "Thom" } };
                var departed = new MembersDeparted { Members = new[] { "Thom" } };

                session.Events.StartStream<QuestParty>(streamId, joined, departed);
                session.SaveChanges();
            }

            using (var query = theStore.OpenSession())
            {
                var state = await query.Events.FetchStreamStateAsync(streamId);
                var aggregate = await query.Events.AggregateStreamAsync<QuestParty>(streamId);

                state.ShouldNotBeNull();
                aggregate.ShouldNotBeNull();
            }

        }
    }

If this is still failing for you, can you add a failing test that demonstrates what you're seeing?

Ok, I think I didnt leave enough details to reproduce this properly.
I cant really figure out how to make a good unit test out of this but here's some more details repro steps at least

New console app, run the following code (the FooEvent and FooAggregate types can be anything really, so I havent included them).

            var store = DocumentStore.For(_ =>
            {
                _.Connection(ConfigurationManager.ConnectionStrings["Marten"].ConnectionString);
                _.Events.AddEventTypes(new[] { typeof(FooEvent), });
            });

            using (var session = testDs.OpenSession())
            {
                var aid = Guid.Parse("1442cbbb-a49a-497e-9ee8-715ed2833bf8");
                session.Events.StartStream<FooAggregate>(aid, new FooEvent());
                session.SaveChanges();
            }

Modify console app to this instead

            var store = DocumentStore.For(_ =>
            {
                _.Connection(ConfigurationManager.ConnectionStrings["Marten"].ConnectionString);
                _.Events.AddEventTypes(new[] { typeof(FooEvent), });
            });

            using (var session = testDs.OpenSession())
            {
                var aid = Guid.Parse("1442cbbb-a49a-497e-9ee8-715ed2833bf8");
                var state = session.Events.FetchStreamState(aid);
                // We never get to the AggregateStream call because we get a nullreference exception on the FetchStreamState call
                var aggregate = session.Events.AggregateStream<FooAggregate>(aid);
            }

FetchStreamState only throws if the stream exists, if it doesnt exist it will just return null. Im not sure why this doesnt throw as expected in your test suite? When I do this in a separate console app (or when this happens in my actual application) it is reproducible 100% of the time.

@wastaz This is the next thing I'm gonna look at, thanks for the repro steps

@wastaz Bueno, I can reproduce it now.

@wastaz As a temporary workaround, can you just add this line to your DocumentStore configuration:
_.Events.AggregateFor<FooAggregate>();

I think I'd like to turn this one into "rip out the AggregateType on Stream's because nobody likes that, the original use case for it never got done, and it's causing folks problems" issue for the 2.0 release.

Im ok with turning this into that because I really dont like having AggregateType on the streams ;)


Feature request: conda recipe

Hello,
Conda is a centralized repository for many libraries, open source or otherwise. I'd like to request that a conda package be made for this project.
Thanks very much for your time,
Sean

@sdrobert
Thanks for your feedback!
We agree that providing a conda package would make Optuna more accessible from many ML/DS projects, and will think it over.

@g-votte Thanks for your consideration :)

I'm sorry to have kept you waiting, but Optuna is now available on conda-forge: https://github.com/conda-forge/optuna-feedstock


Support npm workspaces in set-workspace-version.js

Support npm workspaces - including patterns in set-workspace-version.js. Update logic for syncing the lock file to handle local packages without a name.
Context (and base): https://github.com/connectrpc/connect-query-es/pull/497

@paul-sachs, this might work, but let's make sure. Going to give it a test in the other repos tomorrow.

I've refactored the script in https://github.com/connectrpc/connect-query-es/pull/499/commits/16f4364b1aa57209cd75e311acacb57bd40bf642. It requires a package-lock.json file now, and checks conditions more rigorously. Workspace packages can omit a version, but only if they are private.
Also updating the script in https://github.com/connectrpc/connect-es/pull/1368 and https://github.com/bufbuild/protobuf-es/pull/1036.


Uninstall

Please let me know how to uninstall Audio Switch <IP_ADDRESS> from Windows 10.  Thanks!

It doesn't install anything, so you can just delete the exe, and it's gone!

it stays in task manager's startup tab even after removing the exe!

@backslashV
If you use the open on startup setting, it will create a startup registry entry to reflect that.
You can either uncheck the setting or remove the registry entry manually to remove it from the startup list.