Expected authentication behavior?

At the top of the article the following statement is found

Using Azure Active Directory (Azure AD) Multi-Factor Authentication (MFA) with Azure Virtual Desktop prompts users during the sign-in process for another form of identification in addition to their username and password.

I'm trying to understand the "expected sign-in experience." From reading the articles around AVD, I have yet to get a sense of the expected user experience.
From my experience, the flow is:

Authenticate to Windows Remote Desktop client using credentials and MFA (or passwordless sign-in)
Authenticate to Windows Session host using domain credentials

If single sign-on (SSO) (preview) is enabled, the 2nd authentication request is bypassed. The SSO preview launched on 9/28, and I was looking for a section that talks about the 2 authentication prompts. I thought that section might have a note directing people to try out SSO, but couldn't find it.
https://learn.microsoft.com/en-us/azure/virtual-desktop/configure-single-sign-on
If the two authentication prompt experience is documented somewhere, please direct me to it. Otherwise, consider including a description of the expected sign in experience and a reference to eliminating the 2nd prompt using SSO (currently in preview and not intended for production!)
edit: fixed gramer and spelling

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 6d1666c5-5bed-be10-287e-0ce6b1c1432a
Version Independent ID: 65db01a7-bb49-aece-b464-df819e73fecd
Content: Enforce Azure Active Directory Multi-Factor Authentication for Azure Virtual Desktop using Conditional Access - Azure
Content Source: articles/virtual-desktop/set-up-mfa.md
Service: virtual-desktop
GitHub Login: @Heidilohr
Microsoft Alias: helohr

In case further explanation is needed

Using Azure Active Directory (Azure AD) Multi-Factor Authentication (MFA) with Azure Virtual Desktop prompts users during the sign-in process for another form of identification in addition to their username and password.

The above phrase does not read as 2 user authentication prompts and 1 MFA prompt. It reads as 1 user authentication prompt and 1 MFA prompt. However, the experience is 2 user prompts and 1 MFA prompt without SSO.
Experience with MFA without SSO:

authenticate to AVD client with username and password
authenticate to AVD client with MFA (if enabled)
authenticate to AVD host with username and password

Experience with MFA with SSO:

authenticate to AVD client with username and password
authenticate to AVD client with MFA (if enabled)
~authenticate to AVD host with username and password~

Experience with passwordless sign-on without SSO:

authenticate to AVD client with passwordless sign-on
authenticate to AVD host with username and password

Experience with passwordless sign-on with SSO:

authenticate to AVD client with passwordless sign-on
~authenticate to AVD host with username and password~

@jonwbstr
Thanks for your feedback! We will investigate and update as appropriate.

Closing the loop on this, sorry it took a long time - I've added some high-level clarification about authenticating to the service separately to session hosts, and where MFA happens. I've also referenced SSO and where this happens.  The changes should be visible later today.
#please-close


Not very well marked checkbox Tasks in the role EvmRole-administrator.

Hi guys.
In the process of troubleshooting connectivity issues with the openstack novnc console I found one strange thing that confuses me. (https://github.com/ManageIQ/manageiq/issues/14626) The Settings->Tasks checkbox for some reason not very well marked for the EvmRole-administrator role. Although all nested elements marked:

This "not very well marked" prevent users from this role do some tasks such as connecting to novnc console from Self-Service User Interface.
Workaround:
If I create new role from this builtin role and uncheck then check this Tasks item, everything is working I can access to html5 console.

@hayesr please confirm if this is the same issue you are working on.  Thx, Dan

@dclarizio I believe it will be covered by my changes here: https://github.com/ManageIQ/manageiq-ui-classic/pull/137 —at least for master.


Separate Rubocop and specs into two GH Action workflows

What?
Fix CI!
As requested in https://github.com/resque/resque-scheduler/issues/712#issuecomment-925380319 :)
How?
Separate Rubocop and Ruby specs into two different GitHub Action workflows.
Why?
Some builds were failing because Rubocop was failing on some Rubies. We don't need to run Rubocop against all Rubies so we now run Rubocop with only one ruby implementation.
I referred to https://github.com/rails/webpacker/tree/d7adcd20ddb77097a99a27f94491e78884c6ec59/.github/workflows for inspiration.

@iloveitaly I think you (/someone else with access) needs to turn off the TravisCI required check.

Do we still need AppVeyor? I don't think so. I will remove it after you confirm.

This looks great, thank you!


Implement gzip and Brotli in Erlang? or as dirty NIF

Even though Brotli is better for many or most cases, we still need gzip for some things, like Websocket compression. The zlib module coming with Erlang is implemented in C with zlib but seems to only ever use one core so that's not good.

deflate: https://tools.ietf.org/html/rfc1951
gzip: https://tools.ietf.org/html/rfc1952
brotli: https://tools.ietf.org/html/rfc7932

Implementing in Erlang is probably crazy talk. An alternative would be to wait for OTP 20 and implement as CPU? bound dirty NIFs.

Sounds like gzip was made much faster in OTP 20.1. I'll close for now and take a look later on.

Hello, planning to add Brotli now?

No plans unless a paid customer asks. There is https://github.com/yjh0502/erl-brotli if you want to try, but I don't know how it fares.

Thanks


Numba.Cuda.jit implementation ?

Hi Styfenschear,
Thank you for writing this extension and making it public, I use FFT-2D daily and this greatly reduces the time taken for the calculation.
Do you plan to expand this to cuda.jit for GPU implementation?
Kind Regards,
Step

Hi @StephenUL
I am glad that you find it helpful. Unfortunately, I lack the time, experience, and hardware to develop something that is of good quanlity and works reliably on a wide range of machines. So I very likely won't be able to do this in the near future.
Best regards
Styfen


hi3518ev100 + jxh22 produce dark image

Required information

Camera board id: hi3518ev100 + jxh22
OpenIPC version: master+7c12bf3, 2024-07-02
Commit:
Branch:
Tag:
installation method: coupler and upgraded to latest afterwards
modified majestic.yaml: yes (also tried with factory config, no change)
cat /dev/kmsg
killall majestic
ulimit -c unlimited
echo /tmp/%e.%p.%s.%t.core > /proc/sys/kernel/core_pattern
majestic
Core dump file from /tmp/ , e.g. /tmp/majestic.806.11.1619707881.core

Issue description
The image is very dark compared to stock firmware. When writing a high value to i2c reg 0x01 of the sensor, the image briefly flashes up correctly, until something resets it almost immediately. Seems like this is related to the exposure settings. I also tried manually specifying the exposure in the isp settings of majestic, but with no change.  I also tried to stop majestic, change the exposure with the i2c write, then bind-mount something else over the i2c device so majestic is unable to set the values over i2c, and then start up majestic, that yielded to a lot of errors during startup (due to majestic being unable to write to the i2c device) but no change in the picture brightness.
With a lot of sunlight it looks better, but still very dark. I also tried messing with the luminance, hue and contrast settings, which helps to some point but is not able to get a nice and bright image.
Expectations
An image that is not too dark is shown
Steps to reproduce

Look at the rtsp or mjpeg preview
Notice that it is too dark :(

Information to attach

[ ] Any relevant log output (logread -f)
[ ] majestic.yaml configuration (cat /etc/majestic.yaml)

What seems to help is doing a i2cset 0x60 0x12 0x30, however the picture is upside down afterwards, so I need to set both flip settings to make it work. The colors appear to be messed up though, red and blue appear to be swapped. The image is significantly brighter though.

This is rather a sensor driver issue. So this is at the wrong place.


Make doc does not work

Problem
make help claims that doc should work .Attempting it results in failure.
Proposed Solution
Figure out if we should have a doc step and if yes, then make it actually work

@gerickson  found that make -C docs is the magic incantation.
make help should be updated then

the -C docs did something, however I still cannot see the output. Still needs investigation

For info here is how I can successfully build docs from the vscode container on top of a clean tree:
 $ sudo apt-get install doxygen
 $ mkdir build/documentation
 $ cd build/documentation
 $ ../../bootstrap-configure --enable-docs
 $ make docdist

Outputs should be in build/documentations/docs/
Beside the missing doxygen into the Dockerfile, not sure what else I need to fix besides documentation.

Simpler:
$ sudo apt-get install doxygen
$ DOCS=1 make -f Makefile-Standalone

Outputs should be in build/target_name/docs/html/

@andy31415 I added a PR with some doc.
I would like to know if the last steps works for you, and if so if the documentation PR is good enough.


WARNING:tensorflow:Gradients do not exist for variables ['p_re_lu/alpha:0'] when minimizing the loss.

System information.
Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-74-generic x86_64)
TensorFlow 2.0.0 installed by anaconda
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
NVIDIA-SMI 460.80 Driver Version: 460.80 CUDA Version: 11.2
Describe the problem.
Sometimes when I'm using tf.keras.layers.PReLU() with a constant initializer, it occurs that the gradients do not exist as the warning infomation says'WARNING:tensorflow:Gradients do not exist for variables ['p_re_lu/alpha:0'] when minimizing the loss.'. However, I'm not sure why it occurs as somtimes it occurs but somtimes not. Further more, I have used many other layers for testing with various strange structure, but the warning only appear on PReLU, so I suggest it has something wrong with PReLU, but not my network structure. Or there must be something special on PReLU. If I am wrong, please correct me, thanks!
Describe the current behavior.
Sometimes when I'm using tf.keras.layers.PReLU() with a constant initializer, it occurs that the gradients do not exist as the warning infomation says'WARNING:tensorflow:Gradients do not exist for variables ['p_re_lu/alpha:0'] when minimizing the loss.'.
Describe the expected behavior.
Gradients for tf.keras.layers.PReLU() should always exists.
Standalone code to reproduce the issue.
Here is a network structure in json that will produce the bug:
{
"input_shape": [28, 28, 1],
"network": [
{"name": "Squeeze", "params": {"tensor_space": 4, "dim": 3}},
{"name": "Threshold", "params": {"threshold": 0.9880963343359307}},
{"name": "PReLU", "params": {"init": 0.4469039064898337, "share": true}},
{"name": "BiasAdd", "params": {"bias": 0.021902653299097977}},
{"name": "Sqrt", "params": {}}, {"name": "Sqrt", "params": {}},
{"name": "Sqrt", "params": {}}, {"name": "Ceil", "params": {}},
{"name": "ReduceSum", "params": {"keep_dims": false, "dim": 2, "tensor_space": 4}},
{"name": "Softmax", "params": {"dim": -1}},
{"name": "GaussianNoise", "params": {"stddev": 0.0052523236865178015}},
{"name": "Dense", "params": {"in_features": 28, "out_features": 10}},
{"name": "Softmax"}
]
}
If there is not a layer class in tf.keras.layers related to the above ops, I encapsulate the function using tf.keras.layers.Layer, and the PReLU will be interpreted as:
initializer = tf.keras.initializers.Constant(alpha)
if share:
shared = [i + 1 for i in range(len(input_shape))]
else:
if len(input_shape) == 1:
shared = None
else:
shared = [i + 1 for i in range(len(input_shape) - 1)]
p_relu = tf.keras.layers.PReLU(alpha_initializer=initializer, shared_axes=shared)
The training process is implemented using standardized code for 'with tf.GradientTape() as tape:'.
Source code / logs.
WARNING:tensorflow:Gradients do not exist for variables ['p_re_lu/alpha:0'] when minimizing the loss.

@beginner401, In order to expedite the trouble-shooting process, please provide a standalone code snippet to reproduce the issue reported here. Thanks!

@chunduriv It seems that I made a mistake, and the problem is triggered on ceil, but not PReLU. Ceil will 'steal' the gradients of layers before it. So, considering ceil function is non-differentiable, the gradients of layers before it seems meaningless. However, some functions like that will approximate a value, ReLU, MaxPool, e.g. So, I'm curious why ceil does not have a category designed like that, for example, a linear approximation, is it beause ceil is designed to be meaningless in nerual network? Or am I using the wrong pattern to define the Ceil layer? Thanks!
If you still need a code, the code below will trigger the same problem:
import numpy as np
import tensorflow as tf
class Ceil(tf.keras.layers.Layer):
def init(self):
super(Ceil, self).init()
def build(self, input_shape):
    super(Ceil, self).build(input_shape)

def call(self, x):
    return tf.math.ceil(x)

(x_train, y_train), (_, _) = tf.keras.datasets.mnist.load_data()
x_train = x_train.reshape((-1, 28, 28, 1))
materials = np.eye(10)
y = materials[y_train]
x = x_train
x = x.astype(np.float32)
y = y.astype(np.float32)
ceil = Ceil()
flat = tf.keras.layers.Flatten()
dense = tf.keras.layers.Dense(10)
softmax = tf.keras.layers.Softmax(-1)
inp = tf.keras.layers.Input((28, 28, 1))
conv = tf.keras.layers.Conv2D(1, 3, 1, 'same')
fx = conv(inp)
fx = ceil(fx)
fx = flat(fx)
fx = dense(fx)
fx = softmax(fx)
model = tf.keras.Model(inp, fx)
model.compile('adam', 'categorical_crossentropy')
model.fit(x, y, 100, 10)

@jvishnuvardhan, the issue was able to reproduce the issue on Colab using TF 2.7 , and TF-nightly(2.8.0-dev20211208). Please find the gist here for reference.Thanks!

Triage notes: Here is the output
2.8.0-dev20211208
Epoch 1/10
WARNING:tensorflow:Gradients do not exist for variables ['conv2d/kernel:0', 'conv2d/bias:0'] when minimizing the loss. If you're using `model.compile()`, did you forget to provide a `loss`argument?
WARNING:tensorflow:Gradients do not exist for variables ['conv2d/kernel:0', 'conv2d/bias:0'] when minimizing the loss. If you're using `model.compile()`, did you forget to provide a `loss`argument?
600/600 [==============================] - 9s 14ms/step - loss: 10.3094
Epoch 2/10
600/600 [==============================] - 8s 14ms/step - loss: 4.0716

Waiting for triage.
No gradients before tf.math.ceil().

The currently implementation of the tf.math.ceil() is correct.
We don't expect the gradients to go over it.
If you have any special use case for it, you may use the following API to define a custom gradient.
https://www.tensorflow.org/api_docs/python/tf/custom_gradient


hotfix for #549

Removes shared code in PushAdapter
replaces AdapterLoader.load by loadAdapter

for you @drew-gross

Awesome!


1.2.0 fails with "image not found"

Thanks a lot for this neat addon!
With 1.2.0, our docs would fails with
sphinx.errors.ExtensionError: Handler <function download_images at 0x7f4bf7164830> for event 'env-updated' threw an exception (exception: [Errno 2] No such file or directory: '/home/docs/checkouts/readthedocs.org/user_builds/zfit/checkouts/412/docs/_video_thumbnail/nGzyXVXfHnw.jpg')

where nGzyXVXfHnw is the youtube video code in the directive as
..  youtube:: nGzyXVXfHnw
       :width: 320

The whole build and failure can be found here.
With 1.1 it works

See https://github.com/sphinx-contrib/images/pull/31
This issue at it's core seems to be related to the usage of sphinxcontrib-youtube v1.2.0 with spinxcontrib-images

let me know but normally I've solved this one in #40

seems solved to me, closing


Folder Association by Name alone would break it for people who have a hacks folder in each system

I was just thinking that if someone were to have a hacks folder for each system, or homebrew or modern folder for each system, the program right now would assume all of the folders called that were associated to one system. this would mean that only one of their folders would be themed correctly. I'm not sure what a good compromise would be, maybe it should check the current folders name and the one below and make the association based on that?

Not an issue after updating for BANANA Release


Silence AudioPlayer2D if transform NaNs would poison audio system.

This cheap check prevents using NaN values for panning and volume in AudioStreamPlayer2D, which would result in NaN values being mixed as a result of multiplying samples by those values.
This NaN volume and panning would appear if the Transform has NaN values (this should not happen, but if it does it may poison the audio system through effects).
I thought of adding ERR_PRINT_ONCE to inform about this, but I'm not sure if that's appropriate. If so, please feel free to add a message (showing the offending node path might be interesting too but might potentially create a lot of output).
I think this is a safe and useful fix to backport to 3.2, especially now that other audio fixes are being applied.

What bug does it fix? Do you have a reproduction project that can be used to confirm?
@ellenhp has been fixing issues with NaN wrongly ending up in the audio system, maybe this is not needed anymore?
This will hide potential bugs which would likely need to be solved instead (it can still be considered as a temporary workaround but as it is now, it would likely lead to never fixing the bugs that actually cause NaNs to be in the audio system).

I don't have a reproduction project for this :(, but it can be reproduced by placing an AudioStreamPlayer2D with NaN values on the scene.  This was part of my workaround for NaNs prior to @ellenhp changes.
I have diagnosing the NaN bugs and then working a bit with @ellenhp, hence I decided to submit this one separately. I detected and fixed this issue in my codebase, and this seems to not be related to the "uninitialized buffers" problem.
In this case, we are just protecting the AudioSystem from bogus input from the user (like setting NaN values to transforms). This doesn't mask any error (the sample would not play anyway) but at least prevents the audio system from being poisoned. Also allows the user to better find the bogus Transform since only that sound will be missing, instead of the entire audio system.
(Despite the lack of a reproduction case, it's (relatively) easy to follow that NaN values in the object transform will cause NaN values to be mixed).

I agree though that we should make sure that this is still necessary. I suspect that #46151 may have fixed the issue this aims to solve, but there could definitely be other issues.

I switched to isfinite() from checking NaN, as infinites would cause the same problem. We are not looking for NaNs, we are looking for finite numbers, hence the isfinite().
I also don't understand how #46151 could help in this case.
Anyway I have just tested this without my fix and indeed it causes all audio to stop:

Load the WoobleBooble test project from #28110.
Disable the existing Music node (set autoplay to false). Test music doesn't play during game (other sounds do).
Add an AudioStreamPlayer2D node called AudioStreamPlayerNaN using the Trance song.ogg set to autoplay.
Add to level.gd:21 at the end of the _ready function:

$AudioStreamPlayerNaN.global_position = Vector2.ZERO / 0.0

Run the game. No sounds are played at all.

Yeah, I definitely agree that NaNs in the transform will kill the audio, and maybe that makes sense to fix just for the sake of handling it. But NaNs in a node's transform might be a bug that should be addressed separately too. I bet that breaks lots of other things, not just audio.

Well, In my case it seems to just break audio. Anyway, it does kill the audio. I agree that the NaNs in transforms or as result of operations would better be (if at all) be addressed separately. This fix is about preventing that from poisoning the audio system.
I was impacted by this and I'd still be if I hadn't debugged it, so I believe this is a very real problem indeed and without this fix if any operation happens to yield NaN at any point during runtime (like in my case) it may kill all audio.

I thought of adding ERR_PRINT_ONCE to inform about this, but I'm not sure if that's appropriate. If so, please feel free to add a message (showing the offending node path might be interesting too but might potentially create a lot of output).

If we end up merging this to work around the issue, I agree that we should have an ERR_PRINT_ONCE (or at least of print_verbose, but let's start with the more obnoxious one and change it if there's a need). Otherwise we're hiding the issue and won't ever fix it, while ERR_PRINT_ONCE serves as a reminder that there's a bug and we're simply working it around.

Is this still needed / is the issue that this aims to solve still reproducible in latest 4.x releases?
If it is, it would be really good to have a proper bug report / reproduction test project so it can be confirmed and investigated. As discussed above, we don't expect NaNs to happen and if they do, that's an engine bug that we need to investigate.
We can add a safety check like here but it should print an error that enables engine contributors to notice and fix the source of such bugs.

As far as I know all of the NaN issues were fixed, and I believe the fixes are all backported too. If anyone is aware of any remaining issues that cause NaNs to propagate into the audio buffer that would be good to have in the tracker.

Closing then, let's follow up with bug reports first if those issues are still reproducible.


Create a k8s cluster

Context
Part of https://github.com/2i2c-org/unnamed-thingity-thing/issues/17
We need to create a Kubernetes cluster to deploy the unnamed project to.
For simplicity sake and to reduce the scope so that the deployment fits in the proposed timeline, the cluster is to be:

created on GCP
deployed via the UI or console
tied to a 2i2c billing account
regional (I think there were some outage issues with the LIS cluster when we used to have it zonal?)
TBD

- [x] Create a new GCP project
- [x] Setup a billing account
- [x] Deploy a new ~regional~ zonal cluster in that project
- [x] Get `kubectl` access against this cluster

Definition of Done

[x] there is a cluster running on GCP
[x] Georgiana has kubectl access to that cluster

There is a cluster running, and here I gathered some of the decissions I made about the cluster and why https://hackmd.io/gtdnZv_jR7KOE1wy1zz4MQ?view.
I expect to delete and recreate this cluster a few more times until I find the right recipe when actually deploying the app. But given the current state I consider this done.


CLOUDP-220813 Add NilAway static analysis tool

Proposed changes
Add NilAway static analysis tool

Jira ticket: CLOUDP-220813

Checklist

[ ] I have signed the MongoDB CLA
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added any necessary documentation in document requirements section listed in CONTRIBUTING.md (if appropriate)
[ ] I have addressed the @mongodb/docs-cloud-team comments (if appropriate)
[ ] I have updated test/README.md (if an e2e test has been added)
[ ] I have run make fmt and formatted my code

Further comments

Analysis of the new check, looking at the first 10 instances:
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/telemetry/tracker.go:127:9: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- telemetry/tracker.go:71:20: result 0 of `New()` lacking guarding; assigned into field `store` via the assignment(s):
		- `store.New(...)` to `t.store` at telemetry/tracker.go:71:5
Error: 	- telemetry/tracker.go:127:9: field `store` called `SendEvents()`

FALSE POSITIVE: It says here the result of store.New(...) can potentially be nil, looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/store/store.go#L440-L476 the only way for it to be nil is if an error happens, which we are detecting.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/telemetry/tracker.go:125:9: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- telemetry/tracker.go:79:27: result 0 of `New()` lacking guarding; assigned into field `unauthStore` via the assignment(s):
		- `store.New(o)` to `t.unauthStore` at telemetry/tracker.go:79:6
Error: 	- telemetry/tracker.go:125:9: field `unauthStore` called `SendUnauthEvents()`

FALSE POSITIVE: same as above.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/telemetry/tracker.go:160:15: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- telemetry/command.go:40:24: result 0 of `newTracker()` lacking guarding; assigned into global variable `currentTracker` via the assignment(s):
		- `newTracker(...)` to `currentTracker` at telemetry/command.go:40:2
Error: 	- telemetry/ask.go:44:10: global variable `currentTracker` used as receiver to call `trackSurvey()`
Error: 	- telemetry/tracker.go:277:9: read by method receiver `t` used as receiver to call `save()`
Error: 	- telemetry/tracker.go:166:15: read by method receiver `t` used as receiver to call `openCacheFile()`
Error: 	- telemetry/tracker.go:160:15: read by method receiver `t` accessed field `fs`

FALSE POSITIVE: It says here the result of newTracker(...) can potentially be nil, looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/telemetry/tracker.go#L51-L85 the only way for it to be nil is if an error happens, which we are detecting.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/telemetry/tracker.go:89:19: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- telemetry/command.go:40:24: result 0 of `newTracker()` lacking guarding; assigned into global variable `currentTracker` via the assignment(s):
		- `newTracker(...)` to `currentTracker` at telemetry/command.go:40:2
Error: 	- telemetry/ask.go:44:10: global variable `currentTracker` used as receiver to call `trackSurvey()`
Error: 	- telemetry/tracker.go:250:7: read by method receiver `t` used as receiver to call `defaultCommandOptions()`
Error: 	- telemetry/tracker.go:89:19: read by method receiver `t` accessed field `cmd`

FALSE POSITIVE: same as above.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/watchers/watcher.go:197:13: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- watchers/watcher.go:197:13: unassigned variable `atlasErr` accessed field `ErrorCode`

FALSE POSITIVE: looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/watchers/watcher.go#L196-L197, there is nothing wrong, error.As the pointer is only set when return value is true, otherwise false.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/watchers/watcher.go:199:14: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- watchers/watcher.go:199:14: unassigned variable `atlasv2Err` called `Model()`

POSITIVE: There are indeed ways to not have a model associated with the error (example https://github.com/mongodb/atlas-sdk-go/blob/c25fc63418fe3e880e3750bd2b1896fa37b4691a/admin/api_root.go#L110)
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/watchers/watcher.go:218:13: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- watchers/watcher.go:218:13: unassigned variable `atlasErr` accessed field `ErrorCode`

FALSE POSITIVE: looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/watchers/watcher.go#L217-L218, there is nothing wrong, error.As the pointer is only set when return value is true, otherwise false.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/watchers/watcher.go:220:14: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- watchers/watcher.go:220:14: unassigned variable `atlasv2Err` called `Model()`

POSITIVE: There are indeed ways to not have a model associated with the error (example https://github.com/mongodb/atlas-sdk-go/blob/c25fc63418fe3e880e3750bd2b1896fa37b4691a/admin/api_root.go#L110)
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/cli/default_setter_opts.go:106:35: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- cli/default_setter_opts.go:106:35: unassigned variable `atlasErr` accessed field `HTTPCode`

FALSE POSITIVE: looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/cli/default_setter_opts.go#L106, there is nothing wrong, error.As the pointer is only set when return value is true, otherwise false.
Error: /home/runner/work/mongodb-atlas-cli/mongodb-atlas-cli/internal/cli/default_setter_opts.go:97:19: error: Potential nil panic detected. Observed nil flow from source to dereference point:
Error: 	- cli/default_setter_opts.go:65:20: result 0 of `New()` lacking guarding; assigned into field `Store` via the assignment(s):
		- `store.New(...)` to `opts.Store` at cli/default_setter_opts.go:65:2
Error: 	- cli/default_setter_opts.go:97:19: field `Store` called `Projects()`

FALSE POSITIVE: It says here the result of store.New(...) can potentially be nil, looking at https://github.com/mongodb/mongodb-atlas-cli/blob/498c92dbb55b4a361b3c8dfa211eaf03116ac5bc/internal/store/store.go#L440-L476 the only way for it to be nil is if an error happens, which we are detecting.
1 positive and 9 false positives, I suggest not pursuing this check for now, given the number of false positives.


Reflect existing selections when Datasets page is reloaded

Currently, if you make selections and then reload the Datasets page, the tick marks disappear but the selections still exist under the Selections tab.
It would be great if, on reloading the Datasets page, that the existing selections are reflected in the page.
We ran into this issue because the tick marks even disappear if you change the value of the numPageItems dropdown which is a little frustrating.

@ocaisa can you share which version of Clowder you are running? I was unable to reproduce this locally.
I cleared all selections, went to Explore > Datasets, selected three, and hit browser reload button. Those three were still selected with check marks. I changed page count from 12-24-96 and back, checking datasets in-between, and they remained checked after the refresh.

We're now running 1.13.0 (with some minor patching for GitLab authentication support). For me, the exact workflow you describe results in the ticks being cleared...not very helpful I'm afraid, sorry


"Intermediate locals" not handled correctly

Red/System allows (or at least not forbids) nested function definitions. Thus the question arises how the innermost procedure can address the locals (or formal arguments) of an enclosing procedure. Inspection of the compiler/emitter suggests there is no provision for this at all, and the following program seems to prove it.
b: 1 f: func [/local b][b: 2 g: func [][print b] g] f

f calls g which should print 2, but it prints 1
Short of a considerable overhaul, the solution may be to forbid nested procedure definitions... This would not seem to be a great loss.

Sorry for not answering earlier to this ticket.
The nested function definition does not automatically imply a hierarchical relation between different function contexts. This syntax was intended just for making a function "private" and callable only from a given scope (different from global scoping). Accessing to variables between private contexts (like functions) was never planned nor allowed by the current implementation of Red/System.
Not allowing such syntax might be better to avoid confusion from users, but it is not high-priority, so if someone else can make a minimal fix for that, I will accept it. It should not be complicated, just block func keyword compilation if already in a function (can be tested with locals <> none).


Get rid of the empty file

We don't need the empty file since .dvc dir is not empty. And other dirs will be created by the dvc commands when it is needed.


Allow Request-A-Team Approvers per Business Unit or Department.

This is a request i have had with most of my customers i have recommended to try out  the Request-A-Team app either in a POC or production as part of governance, compliance requirement to streamline the process of Teams creation.
The idea is to be able to specify different approvers for different users, such as, a user from HR requesting a team creation will have designated HR compliance manager approving or rejecting the request instead of broadcasting to all approvers org-wide.

To add to this, I've also had a request from one customer that would like to see line manager approval.

@henryphiri-star @garrytrinder This is a good idea. I will add this onto the roadmap.

Hello, I see this item, and i may suggest an easier implementation : a way to set specific approvers by template.
This way, it can be easy to provide Business Units / Departements specific template, wich have their own approvers.
This "template specific" parameter may override the global approvers.


Linkifier validation -- non-existant group name breaks rendering

With the following pattern and replacement:
#(?P<id>[0-9]+) / https://github.com/zulip/zulip/issues/%(bogus)s
...sending messages with #123 results in:
2020-10-06 19:14:23.691 ERR  [] Exception in Markdown parser; input (sanitized) was: '#xxx'
 (message unknown)
Traceback (most recent call last):
  File "/srv/zulip/zerver/lib/markdown/__init__.py", line 2344, in do_convert
    rendered_content = timeout(5, _md_engine.convert, content)
  File "/srv/zulip/zerver/lib/timeout.py", line 90, in timeout
    raise thread.exc_info[1].with_traceback(thread.exc_info[2])
  File "/srv/zulip/zerver/lib/timeout.py", line 50, in run
    self.result = func(*args, **kwargs)
  File "/srv/zulip-py3-venv/lib/python3.6/site-packages/markdown/core.py", line 267, in convert
    newRoot = treeprocessor.run(root)
  File "/srv/zulip-py3-venv/lib/python3.6/site-packages/markdown/treeprocessors.py", line 370, in run
    self.__handleInline(text), child
  File "/srv/zulip-py3-venv/lib/python3.6/site-packages/markdown/treeprocessors.py", line 131, in __handleInline
    self.inlinePatterns[patternIndex], data, patternIndex, startIndex
  File "/srv/zulip-py3-venv/lib/python3.6/site-packages/markdown/treeprocessors.py", line 285, in __applyPattern
    node = pattern.handleMatch(match)
  File "/srv/zulip/zerver/lib/markdown/__init__.py", line 1634, in handleMatch
    self.format_string % m.groupdict(),
KeyError: 'bogus'

We should at very least not fail to send the message -- especially since there are already such in existance.  But we should also prevent the creation of the linkifier in the first place, so people aren't confused why they silently aren't linking.

@aero31aero can you help investigate this?
I think #13398 might be what we need to validate this more correctly.  I think most correctly we should just block creating such an invalid linkifier, and purge any that have been already created.

@timabbott yes, the first commit of #13398 fixes this. I'll test and amend the commit message to close this issue and rebase the PR while I'm at it.

This is also possible in topic names.  The effects of this are worse if it's in a topic name, as it breaks for more than just a single message.

Let's see if we can get #13398 integrated.

@timabbott can I work on this issue ? Or is this dependant on the PR #13398.

I think ideally we should make a PR that extracts the first commit of #13398 as a separate PR addressing the comments related to that commit; that would allow us to close out this, since #13398 as a whole has a decent number of unresolved comments.


MNIST recognize a 6

I will do another notebook that is good at the entire dataset once i can
easly set up tensors for the proper labels

Awesome! Good job @bendecoste , I'm impressed


Bad Progress Location if container opened before view activated

My extension starts with the view not visible:
        "viewsContainers": {
            "activitybar": [
                {
                    "id": "todo-tree-container",
                    "title": "TODO Tree",
                    "icon": "resources/todo-tree-container.svg"
                }
            ]
        },
        "views": {
            "todo-tree-container": [
                {
                    "id": "todo-tree-view",
                    "name": "TODOs",
                    "when": "!todo-tree-is-empty"
                }
            ]
        },

On activation (onStartupFinished), it sets the todo-tree-is-empty flag to true (if nothing is found).
This hides the container (as the view is not visible) which is great.
The problem is that if the container icon is clicked before the view is activated, it generates a bad progess location error:
ERR Bad progress location: todo-tree-view: Error: Bad progress location: todo-tree-view
    at E.withProgress (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:6315:719)
    at G.withProgress (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:5758:494)
    at G.getChildren (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:5764:270)
    at file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1088:528
    at Object.a [as createCancelablePromise] (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:127:173)
    at z.doGetChildren (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1088:464)
    at z.doRefreshNode (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1088:80)
    at z.doRefreshSubTree (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1087:786)
    at z.refreshNode (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1087:520)
    at z.refreshAndRenderNode (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1087:298)
    at z._updateChildren (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1084:507)
    at async z.updateChildren (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:1084:184)
    at async Promise.all (index 0)
    at async X.doRefresh (file:///Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:5762:950)

At that point the view is broken and I have to reload the window.

Yes - can confirm, no longer an issue in insiders. Thanks!

/verified


add MD linter to jekyll container

I use the MD linter here:
http://dlaa.me/markdownlint/
Which is based upon this upstream:
https://github.com/markdownlint/markdownlint
The web page works pretty well but increases the dev cycle time of documentation as lint errors are resolved.  It would be nice if the jekyll container spit out any markdown errors (some MD lint rules would need to be excluded such as table heading checking).
Another more ambitious goal would be to make the markdown linter gate.

Should I close this then, or do you think we need more?

I can't think of additional work.  I'll close.


Load data on scroll up (chat like behavior)

Hello, I have used the library and it works pretty nice, however I was not able to find how to make it behave like a chat, Is there any option to load the data when the container reaches upper scroll limit?

Hello! Thanks for this feature request. No there is no built-in option for this kind of feature.
Add a 👍  reaction to this issue if you would like to see this feature added. Do not add +1 comments — They will be deleted.

I noticed this by surprise when I was viewing the demo. Reloading on a page numbered URL will allow continued scrolling down through subsidiary pages, but does not allow you to scroll 'back up' to view newer content. Not sure if this is the same as the 'chat like behaviour' since presumably that could just be looking for new content to insert at the top of the page (sort of a form of scroll/pull to refresh I suppose?) , but it definitely is another situation where scrolling up should load data.

but does not allow you to scroll 'back up' to view newer content

This is the intended behavior. Scrolling up on a previous page is a significantly more complex UX problem than scrolling down. You have to account for how the up-content affects the current scroll position. Also consider how unloaded images/media would throw off scroll position.
Scrolling up could be a nice feature, but I'm doubtful that Infinite Scroll is the correct plugin for it.

Does anyone have a recommendation for a plugin that can go in both directions?

@nickisnoble we use https://www.npmjs.com/package/react-infinite-scroller

It's really strange that there is no support for scrolling up. I really love this library; but can't use it without the scrollUp support. Can this be introduced?

Guys, it seems I am not the only one who likes to have this feature. But can't we develop this together? At least 20 people like to have this so I guess there are enough smart guys here. At least I will commit myself to testing and debugging. But my JS knowledge is not enough to develop this.

I solving this at the moment with a litle hack in appendItems:
if ( this.options.prepand ) {
	this.element.insertBefore(fragment, this.element.childNodes[0]);
}else{
	this.element.appendChild( fragment );
}

@stefangrosse as far as I can see this is not so much "a little hack". I tried your code on line 1071 of infinite-scroll.pkgd.js. Also added the prepand option in the div with the data-infinite-scroll=''; Now it adds the page on top when you scroll down.
So I've added a button on top with the previous page url. But it does not load when I get to the top of the page.
Anyone any idea how I get the script triggered on the top of the page?

I use the button option and show it above the results "load more"
https://infinite-scroll.com/options.html#button
my options:
'button' : '.view-more-button', 'scrollThreshold' : false,
before load save the items height and after load the next page you must set the scrollthumb position to hold the position to avoid browser scroll.
e.g
var holdScrollThumbAtBottom = function () { 			var messageList = jQuery('#messageBoxItem'); 			var scrollHeight = messageList.prop("scrollHeight"); 			var height = messageList.innerHeight(); 			var maxScrollTop = scrollHeight - height; 			messageList.scrollTop((maxScrollTop > 0) ? maxScrollTop : 0); 		}

Danke Stefan
So this prevents the problem of adding content above your position in the screen that the browser jumps to another position. Right?
Cool, that's a piece of the puzzle. And at least a starting point to get scrolling up working. Now we need to recode this to my favorite framework vanilla JS. I hope I'll handle that with my poor coding skills. If that works I can setup a demo to share.
@stefangrosse, does your modification still work both ways, so auto loading when scrolling down and loading with button "load more" going up?

This would be lovely..any plans to implement?


eventNames function does not work with wildcard events

Hello!
The recently added function 'eventNames' only works with 'wildcard' option disabled. If this is intentional it should be at least noted in the README.
I believe it's a bigger issue for all function that base on the 'EventEmitter2._events' being populated. In case of wildcard event a tree is used instead of a flat register. This seems not to be supported by some utility functions (listeners, etc.). The unit tests should also cover this scenario.
Core functionality (emitting, listening) works fine.

The "newListener" Event isn't fired as well, if wildcards are enabled.

Sadly I haven't had much time to spend on this repo since I'm not actively using it any more. Contributions from the community would be super welcome.


POC : added flag --interactive-after

The flag will start an interactive python shell after the run of the command.
The data returned by the command will be in the object command_return
This serve as a first POC on the use of elements for macro commands

Something feels off about calling the command as a callback.
There is probably another way I'll do some investigating


#305: Implemented RateLimit functionality

Nice job. I was wondering how it could be implemented. I thought about encapsulating the response object but this way seems way better ! Good job ! :)


Migrate plugin to new backend system.

Hey!
Backstage is now using new backend system and it would be nice if harbor plugin was also migrated to that new backend system.
Useful links to perform migration:

Plugin migration guide
Youtube video showing migration of a simple plugin
Documentation on Backend Services
Backend migration guide might come in handy

+!

hi @KatharinaSick, Have any plans for this feature?
Many thanks!

Hi,
I don't have any plans but I'm also not a maintainer of this plugin. Maybe @Vad1mo can help?

A migration to the new backend system is part of https://github.com/container-registry/backstage-plugin-harbor-backend/pull/117


Multiple webpack bundles with dynamic public paths cannot live together

Do you want to request a feature or report a bug?
Bug/feature

What is the current behavior?
You can set the __webpack_public_path__ global variable to change the url where webpack goes to fetch the resources like images. But if 2 or more webpack bundles live in the same page and each one has a different dynamic public path, it doesn't work because __webpack_public_path__ is global, and they are overwritten.
If the current behavior is a bug, please provide the steps to reproduce.
2 bundles with 2 assignments of __webpack_public_path__ => collision => no resources loaded.

What is the expected behavior?
If this is a feature request, what is motivation or use case for changing the behavior?
Have an option to define the global variable name? Default it to ${bundleName}_public_path?
Please mention other relevant information such as the browser version, Node.js version, webpack version and Operating System.
3.2.0 but I think it applies to all versions.

++1 This would a great new feature

__webpack_public_path__ is not global. It's local to the bundle.

__webpack_require__.p in each bundle. Thanks for the answer.


Clean up typescript errors and enable ts error check in pre-commit

Is your feature request related to a problem? Please describe.
We are seeing little bugs just because ts errors(shown in IDE) not get fixed. And currently there exist lots of ts errors inside the code base.
Describe the solution you'd like
Clean up typescript errors and enable ts error check in pre-commit.
https://stackoverflow.com/questions/60580867/prevent-git-commit-if-typescript-error-is-detected

Hi @bowenlan-amzn
Could I take this up? It should be a fun one and allow me to learn more about the codebase.
Is there a coding standard that needs to be followed for ts errors or would it be fine if I follow Prettier?
Thanks,
KC

@kohinoor98 as far as I know, we were not following a coding standard before. My suggestion is to check the dashboard core repo if any standard being followed there, otherwise, feel free to introduce one. Label this as a medium level task.


Gets it working again

I'm not sure which one you wanted, but they should both be working. If this doesn't work, you can just add me as a collaborator, and I will sort you out.

Sorry I didn't see this until now, but we got it working and turned it in. Thank you!


ha-bridge doesnt see harmony activity

Hi
i have ha-bridge-4.5.6 running on pi
all my Vera and harmony was working properly with Google home
not sure when the Google home cant control the TV so i check the ha-bridge all the harmony activity is blank but my Vera still there and everything working fine with Vera
tried delete data on ha-bridge and reinitialize the bridge no luck
tried change ip on harmony and rest harmony still wont work
do i need enter the user name and pass for harmony on ha-bridge ?(i don't see anywhere i can put those info)
this is the error message from ha-bridge log
ERROR	Cannot get harmony client (Harmony) setup, Exiting with message: Failed communicating with Harmony Hub	com.bwssystems.HABridge.plugins.harmony.HarmonyHome
if someone can give some advice will be much appreciate
thanks

Reboot the bridge. I observed this a few days ago and got it fixed that way. I am suspecting that it was due to some firmware upgrade from the cloud on the harmony units.

thanks for reply
i rebooted pi and reinitialized the bridge again
on the harmony activity still showing nothing

This is odd. I have not seen this. What version of hub firmware are you running?

ha-bridge-4.5.6
harmony is latest

the latest harmony might be your problem. You know for sure your Harmony addresses did not change? I have just checked my harmony hub and I also am on the latest.

yes i set the address in my router make sure they always have same IP
and after this issue i did try change different IP address as well
still same problem

@andynchou I had a similar problem when I updated to 4.5.6.  I deleted the harmony entry in the bridge, then clicked Save, then added a new, but exact harmony entry, then clicked Save.  After that my harmony hub was discovered and my configured activities and devices appeared on the Harmony Tabs.

just tried delete on bridge control then save
add the harmony bridge ip back then save again
still blank in harmony activity

finally i got it work after reinstall pi and habridge

Hi,
i have the same issue. No harmony activities or harmony devices found.
I've tried a new installation of ha bridge, but still now activities or devices.
I am using the latest version of habridge (v.4.5.6).
I hope, i can find any help here.
kind regards,
tholle

Exact same problem for me on a totally fresh newly installation
My java version seem fine:
# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)


Plugin: FroshConfigurationImportExport

Sometimes i need to get some configurations online from a local shop.
For example if i work on an documents template and use the configuration. The template files can be uploaded, but the configuration needs to be either configured by hand or imported through the database. I think an easier way would be to export and import the configuration in the backend.
I also was thinking if it makes sense to add other configuration, e.g. theme configuration.
Or do you have any other ideas? Maybe the configuration in generel (s_config_... table in the database)

After a discussion with shyim, we decided that the plugin could be useful. It should export and import the complete configuration of the shop.
I will build it!


Make installer with tiles

#12 will introduce designed tile covers.
Prepare installer, which will deliver tiles for DSW. Test it.

Supplied required info.


fix: MD001/heading-increment/header-increment

OPS Build status updates of commit 8da0fb0:
:clock10: Preparing: average preparing time is 3 min(s) 18 sec(s)

OPS Build status updates of commit 8da0fb0:
:clock10: Incremental building: average incremental building time is 53 min(s) 52 sec(s)

OPS Build status updates of commit 8da0fb0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Language/Concepts/Forms/add-a-watch-expression.md
:white_check_mark:Succeeded
View

Language/How-to/check-or-add-an-object-library-reference.md
:white_check_mark:Succeeded
View

Language/How-to/continue-code-execution.md
:white_check_mark:Succeeded
View

Language/How-to/copy-example-code-from-help.md
:white_check_mark:Succeeded
View

Language/How-to/create-a-procedure.md
:white_check_mark:Succeeded
View

Language/How-to/delete-a-watch-expression.md
:white_check_mark:Succeeded
View

Language/How-to/edit-a-watch-expression.md
:white_check_mark:Succeeded
View

Language/How-to/enter-a-declaration-in-code.md
:white_check_mark:Succeeded
View

Language/How-to/execute-a-specific-statement.md
:white_check_mark:Succeeded
View

Language/How-to/find-a-procedure.md
:white_check_mark:Succeeded
View

Language/How-to/find-a-variable-definition.md
:white_check_mark:Succeeded
View

Language/How-to/import-a-text-file-into-code.md
:white_check_mark:Succeeded
View

Language/How-to/replace-text-in-code.md
:white_check_mark:Succeeded
View

Language/How-to/restart-execution.md
:white_check_mark:Succeeded
View

Language/How-to/search-for-text-in-code.md
:white_check_mark:Succeeded
View

Language/How-to/set-and-clear-a-breakpoint.md
:white_check_mark:Succeeded
View

Language/How-to/set-project-properties.md
:white_check_mark:Succeeded
View

Language/How-to/set-reference-to-a-type-library.md
:white_check_mark:Succeeded
View

Language/How-to/set-visual-basic-environment-options.md
:white_check_mark:Succeeded
View

Language/How-to/split-the-code-window.md
:white_check_mark:Succeeded
View

Language/How-to/start-code-execution.md
:white_check_mark:Succeeded
View

Language/How-to/stop-code-execution.md
:white_check_mark:Succeeded
View

Language/How-to/trace-code-execution.md
:white_check_mark:Succeeded
View

Language/How-to/turn-syntax-checking-on-or-off.md
:white_check_mark:Succeeded
View

Language/How-to/use-quick-watch.md
:white_check_mark:Succeeded
View

Language/Reference/User-Interface-Help/use-the-immediate-window.md
:white_check_mark:Succeeded
View

Language/Reference/User-Interface-Help/use-the-object-browser.md
:white_check_mark:Succeeded
View

Language/Reference/User-Interface-Help/use-the-project-explorer.md
:white_check_mark:Succeeded
View

Language/Reference/User-Interface-Help/use-the-properties-window.md
:white_check_mark:Succeeded
View

access/Concepts/Data-Access-Objects/add-a-record-to-a-dao-recordset.md
:white_check_mark:Succeeded
View

access/Concepts/Date-Time/calculate-and-display-specific-date-values.md
:white_check_mark:Succeeded
View

access/Concepts/Miscellaneous/command-visual-c-plus-plus-syntax-index-with-import.md
:white_check_mark:Succeeded
View

access/Concepts/Miscellaneous/in-clause-microsoft-access-sql.md
:white_check_mark:Succeeded
View

access/Concepts/Miscellaneous/registering-a-custom-business-object.md
:white_check_mark:Succeeded
View

api/Outlook.explorer.displaymodechange.md
:white_check_mark:Succeeded
View

api/Project.Application.CheckField.md
:white_check_mark:Succeeded
View

api/Project.Application.FileOpenEx.md
:white_check_mark:Succeeded
View

api/Project.Application.FilePageSetupLegend.md
:white_check_mark:Succeeded
View

api/Project.Application.FilePageSetupLegendEx.md
:white_check_mark:Succeeded
View

api/Project.Application.FileSaveAs.md
:white_check_mark:Succeeded
View

api/Project.Application.FilterEdit.md
:white_check_mark:Succeeded
View

api/Project.Application.Find.md
:white_check_mark:Succeeded
View

api/Project.Application.FindEx.md
:white_check_mark:Succeeded
View

api/Project.Application.ProjectBeforeResourceChange.md
:white_check_mark:Succeeded
View

api/Project.Application.ProjectBeforeResourceChange2.md
:white_check_mark:Succeeded
View

api/Project.Application.ProjectBeforeTaskChange2.md
:white_check_mark:Succeeded
View

api/Project.Application.Replace.md
:white_check_mark:Succeeded
View

api/Project.Application.ReplaceEx.md
:white_check_mark:Succeeded
View

api/Project.Application.ResourceAssignment.md
:white_check_mark:Succeeded
View

api/Project.Application.SetAutoFilter.md
:white_check_mark:Succeeded
View

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@nschonni Thanks for contributing this, but heading levels are not your call. I've edited many of these topics already and purposely made the procedure headings level 3. I can't accept heading level changes apart from seeing the entire topic, so I'm not going to merge this request. You don't need to concern yourself with this type of thing. Instead, if you think formatting should be different, just create an issue where you ask us to consider a change. Thanks.

@nschonni I changed all of these manually, but many of them (procedure headings) I changed from headings to bold text. Changes will be live tonight.


[Caloris2] [Github Code] daily resync

Daily resync logic
2 possibilities:

cron like temporal workflow (but meh to add that to the github connector)
listen for code change webhooks and have a lastCodeSync element per repo to decide whether to start a new sync or not

@fontanierh WDYT? I think I'm in favor of 2?

listen for code change webhooks and have a lastCodeSync element per repo to decide whether to start a new sync or not

This means adding a new "repos" table right ?
cron has the advantage of not requiring a new table but we don't have any cron jobs right now so 1 feels "heavier" than 2.
aligned 👍

It's also not ideal to download the tarball everyday for repos that don't have code changes, so it seems like we would need to listen to code changes anyway and have some kind of long running workflow and use signals which sounds a lot more painful than storing lastCodeSync

How will we make sure we don't miss updates though ? What if there are several code changes before the due date, but then no change for several periods (eg weekend) ?

I think I'm fine with that. That means the repo is not active anymore and will fix itself as soon as it become active again

I think I'm fine with that. That means the repo is not active anymore and will fix itself as soon as it become active again

Fair 👍  That also means that repos data may become stale on weekends / vacations but we can revisit if that ever becomes an issue.


create system to provide parameter types and minmax bounds

Imported from redmine, Issue #77270
Opened by @iantaylor-NOAA on 2020-04-01
Status when imported: New
The issue that Dan Fu reported (files attached to #77268) was caused by use_dev = 1 values for the Spline_Knot parameters. The user manual notes "These must be held constant (not estimated, e.g., negative phase value) during a model run" but it would be good to check for either positive phase or use_dev > 0 and exit with a warning.
I think I could figure out how to do this in SS_readcontrol_324.tpl and SS_readcontrol_330.tpl by following logic similar to that under "check on conversion of retention parameter". However, perhaps this should be done in a more comprehensive way to check any selectivity parameters which should not be estimated, such as the bin range parameters for Pattern = 5.
@richard.methot, feel free to assign to me with any guidance you have if you prefer that I tackle this.

The issue here is that in SS_readcontrol, the code only knows what each parameter does when it is assigning parameter names.  And it creates those names in a code section that precedes the reading of the parameter lines.  When code does other things (like phase checks), it does so generically for all parameters.
So the fix would be to create a new vector containing an element for each parameter and assign that element a value that flags whether or not that parameter can be estimated.  It should also be possible to assign at the same time a logical min and max for the parameter.
There is a start to this already in the code.  Look at the quantities Parm_info and Parm_minmax in SS_global and in SS_readcontrol.
This is very incomplete implementation.

SS3_parmlabels.txt

I took a quick look at the spreadsheet of ParmLabels and categorized 47 of the 216 entries. I think it won't be too hard to fill in the rest if we chip away little by little.

Thanks Ian.  Please add additional categories as needed.

The FIMS project is developing a system for creating default parameter values as well as using parameter transformations to avoid the use of bounds. I would suggest applying the "wont-fix" and "FIMS" labels and closing this issue.
The Google Sheet linked above https://docs.google.com/spreadsheets/d/1VwSeSziSD2dy-umRKMM5lc5h52QJbZ8qCwT4n8sPgqU/edit#gid=0 listing all SS3 parameter labels (prior to appending things like fleet name or number) may be useful as a reference for future work even though we didn't get very far in the categorization of those parameters and didn't yet come up with any default initial values.
Tagging @Bai-Li-NOAA who is doing lots of the coding to set up the system for providing FIMS defaults.


[BUG] LSTMModule sets hidden state to 0.0 at every step when combined with ParallelEnv.

Describe the bug
While trying to use an actor network that contains an LSTMModule together with a vectorised environment, I detected the following:

When the vectorised environment is created using the SerialEnv class everything works fine.
When the vectorised environment is created using the ParallelEnv, the LSTM hidden states are not passed forward from step to step and are always 0.0.
I suspect somewhere in the ParallelEnv the hidden states are being reset at every step.

To Reproduce
Here is the complete code to reproduce the issue. Note that if in the method create_env_fn(), ParallelEnv is replaced by SerialEnv, the code works.

import torch
import tqdm
from tensordict.nn import TensorDictModule, TensorDictSequential
from torchrl.envs.libs.gym import GymEnv
from torchrl.modules import ProbabilisticActor, LSTMModule, MLP
from torchrl.collectors import SyncDataCollector
from torchrl.envs import (
    ParallelEnv,
    SerialEnv,
    TransformedEnv,
    InitTracker,
    StepCounter,
    RewardSum,
)

def create_model(input_size, output_size, hidden_size=256, num_layers=3, out_key="logits"):

    lstm_module = LSTMModule(
        input_size=input_size,
        hidden_size=hidden_size,
        num_layers=num_layers,
        in_key="observation",
        out_key="features",
    )
    mlp = TensorDictModule(
        MLP(
            in_features=hidden_size,
            out_features=output_size,
            num_cells=[],
        ),
        in_keys=["features"],
        out_keys=[out_key],
    )

    return TensorDictSequential(lstm_module, mlp)

def create_rhs_transform(input_size, hidden_size=256, num_layers=3):
    lstm_module = LSTMModule(
        input_size=input_size,
        hidden_size=hidden_size,
        num_layers=num_layers,
        in_key="observation",
        out_key="features",
    )
    return lstm_module.make_tensordict_primer()

def main():

    device = torch.device("cuda:0") if torch.cuda.is_available() else torch.device("cpu")
    test_env = GymEnv("CartPole-v1", device=device, categorical_action_encoding=True)
    action_spec = test_env.action_spec.space
    observation_spec = test_env.observation_spec["observation"]

    def create_transformed_env():
        env = GymEnv("CartPole-v1", device=device, categorical_action_encoding=True)
        env = TransformedEnv(env)
        env.append_transform(create_rhs_transform(input_size=observation_spec.shape[-1]))
        env.append_transform(StepCounter())
        env.append_transform(RewardSum())
        env.append_transform(InitTracker())
        return env

    def create_env_fn(num_workers=4):
        env = ParallelEnv(  # There is some bug here! When using ParallelEnv, hidden states are always zero
        # env = SerialEnv(  # This works!
            create_env_fn=create_transformed_env,
            num_workers=num_workers,
        )
        return env

    # Model
    ##################

    actor_model = create_model(input_size=observation_spec.shape[-1], output_size=action_spec.n)
    actor = ProbabilisticActor(
        module=actor_model,
        in_keys=["logits"],
        out_keys=["action"],
        distribution_class=torch.distributions.Categorical,
        return_log_prob=True,
    )
    actor = actor.to(device)

    # Collector
    ##################

    collector = SyncDataCollector(
            create_env_fn=create_env_fn,
            policy=actor,
            frames_per_batch=100,
            total_frames=1000,
            device=device,
            storing_device=device,
            max_frames_per_traj=-1,
            split_trajs=False,
        )

    # Collection loop
    ##################

    for data in tqdm.tqdm(collector):

        assert data["recurrent_state_c"].sum() != 0.0  # This is False when I use parallel envs
        assert data["next"]["recurrent_state_c"].sum() != 0.0  # This is False when I use parallel envs

    collector.shutdown()

if __name__ == "__main__":
    main()

Checklist

[x] I have checked that there is no similar issue in the repo (required)
[x] I have read the documentation (required)
[x] I have provided a minimal working example to reproduce the bug (required)

Looking into this thanks!


Enhance handling of template disk(s) if storage domain option is specified explicitly

This is based on #89 but it implements:

Cloning of disk(s) into a specified storage domain by setting the clone option in case any of the template's disk(s) originates on a different storage domain than specified. The VM creation may fail without setting the clone flag, because (at least) RHEVm tries to create a dependent/cloned VMs from a template.
Creation of VMs based on templates with multiple disks, i.e. all target disks are provisioned onto a storage domain that is specified in VM creation opts hash.
Proper handling of templates without disks.

Tests have also been reworked a bit to reflect the changes. One may even specify a template to use in tests by adding template configuration parameter into spec/endpoint.yml.
@pparkin, thanks for your work. Let me know if this PR is fine for you.
@jhernand, would be great if you cloud merge this into a master branch.

@pdilung, the change looks good to me. @pparkkin, can you please review as well?
@pdilung, @pparkkin as you are doing all the real work around this project, would you be interested in taking over the maintenance of the project?

@jhernand That is an honor for me but I do not feel skilled enough. I am however gladly help you with reviews of new feature a a co-maintainer.

@jhernand I'm here just fixing bugs and adding features that we need where I work. As I'm going to be switching jobs soon, and will likely not be using rbovirt where I'm going, I don't think I'm the guy to be taking care of things.
You may want to ask the people on https://github.com/fog/fog or https://github.com/myoung34/vagrant-ovirt3. Both those project use rbovirt, and they may have an interest in keeping the project alive.
Good luck!

@jhernand @pdilung The changes look okay to me. Thanks for taking the time to fix it all up! I'm okay with merging the PR.
When I was playing around with your code I came across something a little weird, though. It's not an issue with your code, but maybe with another part of rbovirt, or maybe even oVirt itself.
I have a template with multiple disks, but the disks are on separate storage domains. When I try to start up a VM from the template and set the storage domain, the creation fails with "The selected Storage Domain does not contain the VM Template." I think this is because the code doesn't set clone even though it should.
The reason why clone doesn't get set is because rbovirt thinks all the disks in the template belong to the same storage domain, the same storage domain I'm trying to start the template in. This is because in the XML response to the template disk API call, oVirt returns for all disks a list of all the storage domains, and rbovirt just picks the first one. https://github.com/abenari/rbovirt/blob/master/lib/ovirt/volume.rb#L56
The XML looks something like this for GET https://hosted-engine/ovirt-engine/api/templates/.../disks
<disk href="..." id="...">
        ...
        <storage_domains>
            <storage_domain id="49d5b5b7-..."/>
            <storage_domain id="de71258c-..."/>
        </storage_domains>
        ...
    </disk>
<disk href="..." id="...">
        ...
        <storage_domains>
            <storage_domain id="49d5b5b7-..."/>
            <storage_domain id="de71258c-..."/>
        </storage_domains>
        ...
    </disk>
<disk href="..." id="...">
        ...
        <storage_domains>
            <storage_domain id="49d5b5b7-..."/>
            <storage_domain id="de71258c-..."/>
        </storage_domains>
        ...
    </disk>

I'm not really sure why oVirt does that. Maybe it's supposed to do that. I don't have time to look into it. But it's something to be aware of at least.

@pparkkin that is strange behavior. Actually f7c3b7c should set clone option for the user if not set or in case that any disks of the template reside on the same storage domain than requested. I am using RHEVm <IP_ADDRESS>-1.4.el6dev. I am going to retest this again and eventually push a fix.

I'm on oVirt Engine Version: <IP_ADDRESS>-1.el6 here.

@pparkkin I have setup a template with two disks. Each disk is on a different storage domain:
<disks>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/e6aa2694-86ef-401f-b914-407cd2c7eaf2" id="e6aa2694-86ef-401f-b914-407cd2c7eaf2">
        ...
        <name>RHEL6-U6-64_its_init_v03_Disk1</name>
        <template href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b" id="7904e671-d51f-4048-bd16-44dff9f5242b"/>
        <alias>RHEL6-U6-64_its_init_v03_Disk1</alias>
        <image_id>6aa92092-0fd5-4e1b-a156-b431918c3b56</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
        ...
    </disk>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/aea7a217-dde8-4a7d-bf7f-ffc99a6392b3" id="aea7a217-dde8-4a7d-bf7f-ffc99a6392b3
aea7a217-dde8-4a7d-bf7f-ffc99a6392b3">
    ...
        <name>rh6pt-5.mgmt.sccloudpoc.net_Disk1</name>
        <template href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b" id="7904e671-d51f-4048-bd16-44dff9f5242b"/>
        <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
        <image_id>34779c17-1ec7-4f57-aecb-a6de993f251c</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
        ...
    </disk>
</disks>

The RHEL6-U6-64_its_init_v03_Disk1 (e6aa2694-86ef-401f-b914-407cd2c7eaf2) is a root disk provisioned on a storage domain ec1ce536-b1c8-4c8a-b117-daeca5bfca21:
<disk href="/api/storagedomains/ec1ce536-b1c8-4c8a-b117-daeca5bfca21/disks/e6aa2694-86ef-401f-b914-407cd2c7eaf2" id="e6aa2694-86ef-401f-b914-407cd2c7eaf2">
    ...
    <storage_domain href="/api/storagedomains/ec1ce536-b1c8-4c8a-b117-daeca5bfca21" id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
    <storage_domains>
        <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
    </storage_domains>
    ...
</disk>

The rh6pt-5.mgmt.sccloudpoc.net_Disk1 (aea7a217-dde8-4a7d-bf7f-ffc99a6392b3) is a data disk provisioned on a storage domain 46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2:
<disk href="/api/storagedomains/46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2/disks/aea7a217-dde8-4a7d-bf7f-ffc99a6392b3" id="aea7a217-dde8-4a7d-bf7f-ffc99a6392b3">
    ...
    <name>rh6pt-5.mgmt.sccloudpoc.net_Disk1</name>
    <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
    <image_id>34779c17-1ec7-4f57-aecb-a6de993f251c</image_id>
    <storage_domain href="/api/storagedomains/46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2" id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
    <storage_domains>
        <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
    </storage_domains>
    ...
</disk>

When I try to create a VM and request disk provisioning to a completely different storage domain 8318a94f-31f2-4925-aded-107612835330 without setting up clone flag explicitly (or even setting it to false), the VM is provisioned. Following would be the resulting XML that is POSTed to RHEVm by rbovirt:
<?xml version="1.0"?>
<vm>
  <name>rh6pt-5</name>
  <description/>
  <comment>Pavol Dilung</comment>
  <template id="7904e671-d51f-4048-bd16-44dff9f5242b"/>
  <cluster id="a240aac1-d03a-4c69-923e-a295200539fa"/>
  <type>Server</type>
  <memory>2147483648</memory>
  <disks>
    <clone>true</clone>
    <disk id="e6aa2694-86ef-401f-b914-407cd2c7eaf2">
      <storage_domains>
        <storage_domain id="8318a94f-31f2-4925-aded-107612835330"/>
      </storage_domains>
    </disk>
    <disk id="aea7a217-dde8-4a7d-bf7f-ffc99a6392b3">
      <storage_domains>
        <storage_domain id="8318a94f-31f2-4925-aded-107612835330"/>
      </storage_domains>
    </disk>
  </disks>
</vm>

Unfortunately, I was not able to reproduce the issue you described. It seems that RHEVm works fine.

@pdilung Good investigating!
Can you try one more thing, just to make things more in line with my situation? Can you try the exact same setup as above, but try to start the VM on storage domain 46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2?
That is the first storage domain listed in storage domains for your template here:
    <storage_domains>
        <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
        <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
    </storage_domains>

That's the way I have it set up, and that means that one of the disks is on the storage domain you are trying to start the VM on, and the other one isn't. And using the first one in the list is key, because, if I'm correct, that will trigger this part in the code, and cause clone to not get set to true.
template_disks.all? { |d| d.storage_domain == storagedomain_id }

Also, clone not set explicitly, of course.

@pparkkin I re-tested it and I confirm that I ended up with the same error as you did.
I think however that there is nothing wrong with this PR.
IMHO, it is caused by the way the @storage_domain is populated. Actually, OVIRT::Volume::parse_xml_attributes! simply picks the first storage domain id from <soragedomains>...</storagedomains> and assign it to @storage_domain instance variable.
It's a bit weird for me why oVIRT/RHEVm returns multiple storage domains for a given disk. In my opinion this would only make sense if disks could stretch over several storage domains (though I am not sure if this is supported by oVIRT/RHEVm). Anyway, no disk stretches over multiple domains in this template.
Following could be done here:

Remove setting of clone from this PR and let the user specify it explicitly -> IMHO not the best way
Re-implement OVIRT::Volume::parse_xml_attributes! so it does an additional lookup in <API_HOST>/api/storagedomains/<EACH_SORAGE_DOMAIN_ID>/disks in order to assign a proper @storage_domain` ID for a given disks. -> Better way, given the disks do not span over multiple storage domains.

What do you think of this?

@pdilung I agree that this is not something that is wrong with this PR.
And I am in favor of leaving the PR as it is. The logic feels correct to me, and I can't come up with a good way of working around this issue within this PR.
I don't know enough about oVirt or RHEV to be able to comment on the thinking behind the way it works there. It feels like it's not correct, but it's also possible there is a reason behind it working the way it does.
To me your option 2. sounds like the right way to go here.

@mureinik was kind enough to explain me why there are multiple storage domains in disks of templates. The reason is that a template may have copies of the disks in multiple storage domains, so that a single template can be used to create VMs with disks in different storage domains. Using the oVirt GUI you can create this can of template going to the main "Templates" tab, then to the "Disks" subtab, selecting the relevant disk and clicking the "Copy" button.
Later, when creating a VM it is important to specify the storage domain correctly, only one is allowed.

@jhernand Thanks for the info :+1: , that is nice feature I missed, however there is still something suspicious.
Let's have the following scenario:

Two identical templates with two disks, i.e. they were imported from the same source.
Three storage domains:

lab1ch-sas_pool01 identified by 46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2 UUID,
lab1ch-sas_pool02 identified by ec1ce536-b1c8-4c8a-b117-daeca5bfca21 UUID,
lab1ch-ssd_pool01 identified by b2531c84-e586-4b54-8e7d-76d455ad22fd UUD.

A template called RHEL6-U6-64_its_init_v03_pdilung-2d2p-1c identified by 7904e671-d51f-4048-bd16-44dff9f5242b UUID with following disks:

RHEL6-U6-64_its_init_v03_Disk1 (e6aa2694-86ef-401f-b914-407cd2c7eaf2). This disk exists only on lab1ch-sas_pool02 storage_domain.
rh6pt-5.mgmt.sccloudpoc.net_Disk1 (aea7a217-dde8-4a7d-bf7f-ffc99a6392b3). This disk exists only on lab1ch-sas_pool01 storage_domain.

A template called RHEL6-U6-64_its_init_v03_pdilung-2d2p-2c identified by daec51cf-5a7a-474f-bc12-b01f2a78799a UUID with following disks:

RHEL6-U6-64_its_init_v03_Disk1 (eb624d5f-3ec3-4e61-8f63-573d98f50901). This disk exists on lab1ch-sas_pool02 as well as on lab1ch-ssd_pool01 storage_domain.
rh6pt-5.mgmt.sccloudpoc.net_Disk1 (959ef7e9-2c9a-4eca-95ee-22a224466def). This disk exists only on lab1ch-sas_pool01 storage_domain.

The XML representation of RHEL6-U6-64_its_init_v03_pdilung-2d2p-1c 42b is following (GET https://<RHEVM_ENTRY_POINT>/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks):
<disks>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/e6aa2694-86ef-401f-b914-407cd2c7eaf2" id="e6aa2694-86ef-401f-b914-407cd2c7eaf2">
        ...
        <alias>RHEL6-U6-64_its_init_v03_Disk1</alias>
        <image_id>6aa92092-0fd5-4e1b-a156-b431918c3b56</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
        ...
    </disk>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/aea7a217-dde8-4a7d-bf7f-ffc99a6392b3" id="aea7a217-dde8-4a7d-bf7f-ffc99a6392b3">
        ...
        <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
        <image_id>34779c17-1ec7-4f57-aecb-a6de993f251c</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
    </disk>
</disks>

The XML representation of RHEL6-U6-64_its_init_v03_pdilung-2d2p-2c s following (GET https://<RHEVM_ENTRY_POINT>/api/templates/daec51cf-5a7a-474f-bc12-b01f2a78799a/disks):
<disks>
    <disk href="/api/templates/daec51cf-5a7a-474f-bc12-b01f2a78799a/disks/959ef7e9-2c9a-4eca-95ee-22a224466def" id="959ef7e9-2c9a-4eca-95ee-22a224466def">
        ...
        <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
        <image_id>8c66fb07-b380-404b-b68e-95c36f15b55b</image_id>
        <storage_domains>
            <storage_domain id="b2531c84-e586-4b54-8e7d-76d455ad22fd"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
        </storage_domains>
        ...
    </disk>
    <disk href="/api/templates/daec51cf-5a7a-474f-bc12-b01f2a78799a/disks/eb624d5f-3ec3-4e61-8f63-573d98f50901" id="eb624d5f-3ec3-4e61-8f63-573d98f50901">
        ...
        <alias>RHEL6-U6-64_its_init_v03_Disk1</alias>
        <image_id>62fe75d1-93ae-4d20-8b04-4948ec0df60d</image_id>
        <storage_domains>
            <storage_domain id="b2531c84-e586-4b54-8e7d-76d455ad22fd"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
        </storage_domains>
    </disk>
</disks>

As one can see, each disk of RHEL6-U6-64_its_init_v03_pdilung-2d2p-1c template contains a pointer to two storage domains: lab1ch-sas_pool01 and lab1ch-sas_pool02. Likewise, each disk of RHEL6-U6-64_its_init_v03_pdilung-2d2p-2c points to three storage domains: lab1ch-ssd_pool01, lab1ch-sas_pool02 and lab1ch-sas_pool01.
In my opinion this is kind of incorrect and the proper representation should be the following:

RHEL6-U6-64_its_init_v03_pdilung-2d2p-1c

RHEL6-U6-64_its_init_v03_Disk1

lab1ch-sas_pool02

rh6pt-5.mgmt.sccloudpoc.net_Disk1

lab1ch-sas_pool01

RHEL6-U6-64_its_init_v03_pdilung-2d2p-2c

RHEL6-U6-64_its_init_v03_Disk1

lab1ch-sas_pool02,
lab1ch-ssd_pool01

rh6pt-5.mgmt.sccloudpoc.net_Disk1

lab1ch-sas_pool01

The XML representation of RHEL6-U6-64_its_init_v03_pdilung-2d2p-c1 should resemble something like this:
<disks>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/e6aa2694-86ef-401f-b914-407cd2c7eaf2" id="e6aa2694-86ef-401f-b914-407cd2c7eaf2">
        ...
        <alias>RHEL6-U6-64_its_init_v03_Disk1</alias>
        <image_id>6aa92092-0fd5-4e1b-a156-b431918c3b56</image_id>
        <storage_domains>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
        ...
    </disk>
    <disk href="/api/templates/7904e671-d51f-4048-bd16-44dff9f5242b/disks/aea7a217-dde8-4a7d-bf7f-ffc99a6392b3" id="aea7a217-dde8-4a7d-bf7f-ffc99a6392b3">
        ...
        <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
        <image_id>34779c17-1ec7-4f57-aecb-a6de993f251c</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
        </storage_domains>
    </disk>
</disks>

Likewise, the XML representation of RHEL6-U6-64_its_init_v03_pdilung-2d2p-c2 should resemble:
<disks>
    <disk href="/api/templates/daec51cf-5a7a-474f-bc12-b01f2a78799a/disks/959ef7e9-2c9a-4eca-95ee-22a224466def" id="959ef7e9-2c9a-4eca-95ee-22a224466def">
        ...
        <alias>rh6pt-5.mgmt.sccloudpoc.net_Disk1</alias>
        <image_id>8c66fb07-b380-404b-b68e-95c36f15b55b</image_id>
        <storage_domains>
            <storage_domain id="b2531c84-e586-4b54-8e7d-76d455ad22fd"/>
            <storage_domain id="ec1ce536-b1c8-4c8a-b117-daeca5bfca21"/>
        </storage_domains>
        ...
    </disk>
    <disk href="/api/templates/daec51cf-5a7a-474f-bc12-b01f2a78799a/disks/eb624d5f-3ec3-4e61-8f63-573d98f50901" id="eb624d5f-3ec3-4e61-8f63-573d98f50901">
        ...
        <alias>RHEL6-U6-64_its_init_v03_Disk1</alias>
        <image_id>62fe75d1-93ae-4d20-8b04-4948ec0df60d</image_id>
        <storage_domains>
            <storage_domain id="46f1f8b5-89e2-4e13-93a0-706dd9d4bbb2"/>
        </storage_domains>
    </disk>
</disks>

@jhernand As it stands now, I can do the following:

Remove setting of clone from this PR and let the user specify it explicitly
Try to clarify this behavior with RedHat and eventually reimplement OVIRT::Volume::parse_xml_attributes! in a different PR.
I would much appreciate if this PR could be merged with master. Please let me know whether I should remove the setting of clone until the storage domain assignment thing is clarified.

Guys, I noticed tests fail now for me with oVirt 3.6:
Failures:

  1) Admin API VM Life cycle admin basic vm and templates operations behaves like Basic VM Life cycle test_should_set_vm_ticket
     Failure/Error<EMAIL_ADDRESS>:start)
     OVIRT::OvirtException:
       Cannot run VM because the VM is in Powering Down status.
     Shared Example Group: "Basic VM Life cycle" called from ./spec/integration/vm_crud_spec.rb:128
     # ./lib/rbovirt.rb:202:in `handle_fault'
     # ./lib/rbovirt.rb:129:in `rescue in http_post'
     # ./lib/rbovirt.rb:124:in `http_post'
     # ./lib/client/vm_api.rb:138:in `vm_action'
     # ./spec/integration/vm_crud_spec.rb:54:in `block (2 levels) in <top (required)>'

  2) VM API support functions options processing should process template option into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

  3) VM API support functions options processing should process template_name option into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

  4) VM API support functions options processing should process template and storagedomain options into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

  5) VM API support functions options processing should process template_name and storagedomain options into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

  6) VM API support functions options processing should process template and storagedomain_name options into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

  7) VM API support functions options processing should process template_name and storagedomain_name options into disk decriptions
     Failure/Error: @template_name = @config['template'] || @client.templates.first.name
     NoMethodError:
       undefined method `name' for nil:NilClass
     # ./spec/integration/vm_crud_spec.rb:159:in `block (2 levels) in <top (required)>'

Looks like no template is found on my system. Perhaps a misconfiguration on my side? What changed?

@lzap Let me find some time to look into this during the week.

Thanks, I believe it's regression caused by this patch.

@lzap So finally, it looks like I'll have some time to recheck this week. Sorry for the delay. I'll run tests against RHEV-m 3.5.6 and will let you know.


Password is asked for multiple times

From #115:

I ran sshcode <ssh alias> and I was asked for my password 4 times. I can't set up passwordless ssh because of the way Kerberos and AFS are set up on the remote server.
It would be great if there was somehow a way to only ask for the password once. However, this would probably sacrifice some security.

This issue came back. Yesterday, December 29, 2019, I re-ran go get -u go.coder.com/sshcode to update the package.

Output of sshcode tj:
2019-12-29 13:11:06 INFO	starting SSH master connection...
<EMAIL_ADDRESS>password:
2019-12-29 13:11:37 ERROR	failed to start SSH master connection: SSH master wasn't ready on time: max number of tries exceeded: 30
2019-12-29 13:11:37 INFO	ensuring code-server is updated...
<EMAIL_ADDRESS>password:
++ uname -m
+ '[' x86_64 '!=' x86_64 ']'
+ pkill -f /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ mkdir -p /afs/csl.tjhsst.edu/students/2022/2022sratna/.local/share/code-server /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode
+ cd /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode
+ curlflags='-o latest-linux'
+ '[' -f latest-linux ']'
+ curlflags='-o latest-linux -z latest-linux'
+ curl -o latest-linux -z latest-linux https://codesrv-ci.cdr.sh/latest-linux
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
+ '[' -f /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server ']'
+ rm /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ ln latest-linux /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ chmod +x /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
2019-12-29 13:13:11 INFO	syncing settings
<EMAIL_ADDRESS>password:
building file list ... done

sent 192 bytes  received 20 bytes  24.94 bytes/sec
total size is 172032  speedup is 811.47
2019-12-29 13:13:19 INFO	synced settings in 7.225311372s
2019-12-29 13:13:19 INFO	syncing extensions
<EMAIL_ADDRESS>password:
building file list ... done

sent 76 bytes  received 20 bytes  27.43 bytes/sec
total size is 0  speedup is 0.00
2019-12-29 13:13:22 INFO	synced extensions in 10.508270347s
2019-12-29 13:13:22 INFO	starting code-server...
2019-12-29 13:13:22 INFO	Tunneling remote port 51107 to <IP_ADDRESS>:31419
<EMAIL_ADDRESS>password:
info  Server listening on http://<IP_ADDRESS>:51107
info    - No authentication
info    - Not serving HTTPS
^C2019-12-29 13:14:30 INFO	shutting down

Output of sshcode --ssh-flags '-o "ControlPath=~/.ssh/control-%h-%p-%r"' tj:
2019-12-29 13:16:03 INFO	starting SSH master connection...
<EMAIL_ADDRESS>password:
2019-12-29 13:16:34 ERROR	failed to start SSH master connection: SSH master wasn't ready on time: max number of tries exceeded: 30
2019-12-29 13:16:34 INFO	ensuring code-server is updated...
Control socket connect(/Users/suman/.ssh/control-remote.tjhsst.edu-22-2022sratna): Connection refused
<EMAIL_ADDRESS>password:
++ uname -m
+ '[' x86_64 '!=' x86_64 ']'
+ pkill -f /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ true
+ mkdir -p /afs/csl.tjhsst.edu/students/2022/2022sratna/.local/share/code-server /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode
+ cd /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode
+ curlflags='-o latest-linux'
+ '[' -f latest-linux ']'
+ curlflags='-o latest-linux -z latest-linux'
+ curl -o latest-linux -z latest-linux https://codesrv-ci.cdr.sh/latest-linux
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
+ '[' -f /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server ']'
+ rm /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ ln latest-linux /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
+ chmod +x /afs/csl.tjhsst.edu/students/2022/2022sratna/.cache/sshcode/sshcode-server
2019-12-29 13:17:10 INFO	syncing settings
Control socket connect(/Users/suman/.ssh/control-remote.tjhsst.edu-22-2022sratna): Connection refused
<EMAIL_ADDRESS>password:
building file list ... done
deleting state/global.json
deleting state/empty-window.json
deleting state/-721c4179.json
deleting state/
./

sent 198 bytes  received 26 bytes  10.93 bytes/sec
total size is 172032  speedup is 768.00
2019-12-29 13:17:30 INFO	synced settings in 20.892316347s
2019-12-29 13:17:30 INFO	syncing extensions
Control socket connect(/Users/suman/.ssh/control-remote.tjhsst.edu-22-2022sratna): Connection refused
<EMAIL_ADDRESS>password:
building file list ... done

sent 76 bytes  received 20 bytes  21.33 bytes/sec
total size is 0  speedup is 0.00
2019-12-29 13:17:34 INFO	synced extensions in 23.973192331s
2019-12-29 13:17:34 INFO	starting code-server...
2019-12-29 13:17:34 INFO	Tunneling remote port 64098 to <IP_ADDRESS>:60900
<EMAIL_ADDRESS>password:
info  Server listening on http://<IP_ADDRESS>:64098
info    - No authentication
info    - Not serving HTTPS
^C2019-12-29 13:18:08 INFO	shutting down

I'm on macOS 10.15.3 Beta. sshcode --version prints a newline (#154), but I installed sshcode via go get.
sshcode --ssh-flags '-o "ControlPath=/tmp/test" -o "ControlMaster=auto" -o "ControlPersist=5m"' tj works fine, but I still think #116 should be fixed because the SSH connection will be kept after sshcode is quit.

2019-12-29 13:11:37 ERROR	failed to start SSH master connection: SSH master wasn't ready on time: max number of tries exceeded: 30

For some reason the master doesn't connect in time. Are you typing in the password and hitting enter quick enough?

Sorry for the late reply! I just tried again and I entered the password immediately after it was asked for. sshcode works fine, but the original problem still stands—I was asked for my password 5 times.

I face the same issue with public key auth:
2020-05-20 09:04:21 INFO	starting SSH master connection...
2020-05-20 09:04:51 ERROR	failed to start SSH master connection: SSH master wasn't ready on time: max number of tries exceeded: 30
2020-05-20 09:04:51 INFO	ensuring code-server is updated...
...

The following sync and startup succeeds, but the first connection always times out.


Conversation.user.storage does not update across conversations

Following the Actions on Google documentation regarding saving and clearing data across conversations, I tried to update the values set at Conversation.user.storage to persist a set of parameters for future use:
const app = dialogflow({debug: true});

var myIntentHandler = (conv, params) => {
  conv.user.storage.myKey = params;
  conv.ask(`Ok. I have bookmarked your query so you can access it via "favourite".`);
};

app.intent('dialogflow_intent_name', myIntentHandler);

My implementation seems similar to the example given in the nodejs guide. Doing so changes the user.storage.myKey value within the conversation, but in my case the change did not persist after leaving for a new conversation session (saying 'cancel' after the response and re-invoking my assistant app). I have also tried to set it to an empty object as proposed in the documentation, but it didn't clear the storage across conversation too:
const app = dialogflow({debug: true});

var myIntentHandler = (conv, params) => {
  conv.user.storage = {};
  conv.ask(`Ok. I have cleared your query from favourite.`);
};

app.intent('dialogflow_intent_name', myIntentHandler);

Is this expected or have I missed out something in my approach? Thanks.

Hi, take a look at the section on that doc about User storage expiration.
There are cases when userStorage cannot be persisted across conversations like

When voice match is set up and there is no match.
When the user disabled personal data.

For a more permanent and reliable storage of user data, you should perform account linking which has been made easy with Google Sign-In for the Google Assistant (currently in developer preview). This way, you can store user data in a database you control and associate it with a user on the Google Assistant.

@canain Thanks for pointing to account linking and Google Sign-In. Will try that out instead!

i am having the same problem the account linking isn't working for me. doe's anybody know another way to solve it?


Add custom commands

Anyone knows how to make this bot accept custom commands? It's kind of hard trying to figure out the program flow of where the user inputs the command in the first place.

see https://github.com/Just-Some-Bots/MusicBot/wiki/Modification

Information is in the link given above.

Link not working. :(

The bot is now licensed under MIT and that basically means your free to use the code, modify, and use as you please, however we aren't responsible for anything that may happen from modification, nor will we help with it.


VaC: First email to the MIT

Based on our investigations, we should be able to send an initial email to the MIT with questions as well as well thought proposals.
You can follow and comment on our progress regarding this email here: https://docs.google.com/document/d/1KKcJBdTl95NE8bBrvD-QWMY138Iytr4XOjaGpHtWtSw/edit?usp=sharing

The main thing I'd like to highlight from the email proposal is the questions:
Do forced migrants qualify as Refugees?
Could we start with a first batch of asylum seekers in the United States?
Is 90 points on the TOEFL required?
Are the current courses already designed for any kind of refugee or should we also plan on working together to develop a specific study program for Venezuelans?
How would the selection be? We know at least a hundred asylum seekers in the USA that have an STEM background, should we invite them all?
Can the program be initially remote? Even within the United States, the participants are likely to be distributed across the nation.
Can the program have an optional physical location for practices or to reinforce the studies? We could host this location in the areas of higher density of Venezuelan asylum seekers in the United States. For example: Weston and/or Doral, both in Florida.
What is the estimated cost per person? José Montes de Oca told me that it is going to be about $5000, but I wanted to confirm.
Can we assign a couple of our team members to do an equivalent parallel Micro-Master? They would pay for the course. It’s so that fellow Venezuelans are able to help the other participants reach the maximum number of graduates.
How many companies should we find to accept graduates from this program? What are the requirements for these companies?
💛💙❤

@sadasant For the email, it may be a good idea if I send it to Prof. Masic as part of a warm intro for the team that will be tackling this project.
This will be the Kick-off email for the project, letting Prof. Masic know about the current status of the project, who is going to lead it and make sure proper intros are made 🙏
WDYT?

Go for it! Can I assign you this issue? (or just assign yourself to it, I'll make sure you have permissions)

Also, another goal for this email is to try to set up a video conference with Prof. Masic. perhaps is a better setting for him to answer those questions and start putting faces to the project members.