Clean OSAL API

Cleaning OSAL API and make it more portable for other platforms.
Fixing function parameter signatures and add additional error handling where the OSAL APIs are used.
Removing linux header references, and using only OSAL to make the lib core independent on the platform.

Please share the test strategy/process being followed to test FreeRTOS specific changes and also to test existing Linux implementation(just to ensure nothing is broken for Linux)

Hi Everyone,
It has been tested manually.

Build test: make and ./build.sh
Smoke test: I went through step by step on the tutorial doc and the agent was able to connect to and communicate with the FND. I have a Cisco FND VM on a linux host, and I built and executed the agent on Raspberry Pi4 and  on the linux host. (Ubuntu 22.04)

Please share the test strategy/process being followed to test FreeRTOS specific changes and also to test existing Linux implementation(just to ensure nothing is broken for Linux)

@manojnacsl May I return the question? Do you have test infrastructure/suites that we could rely on?

@silabs-ThibautC - Currently we do not have a separate test suite as such. But the usual test practice we have been following for Linux target is to have the Linux agent connect to FND instance to test - registration, periodic metric refresh, and GET operations of the TLVs.

Hi @manojnacsl and @paduffy !
I solved all the findings from the current and previous PR reviews:

common osal API return code definitions
debug prints for API return code checking
osal source and header file refactor, common header and osal.c/h file hierarchy modified based on @manojnacsl proposal

Could you take a look at this again?
THX!

Run a spellchecker
Check from double withespaces

I executed spellchecker, and I standardised the comments, removed unnecessary white spaces etc.
I removed the doxy comments from osal.c, I note that I just copied comments from it, that was the original location of code documentation. If it's required, I can copy back the checked and fixed doxy comments into the source file, but I think we should avoid the duplications. It makes the c file cleaner also.

@ismilak @manojnacsl
I apologize because I'm re-opening a topic that I think you already closed but I'm really not a big fan of the file organization you agreed upon.

there's a file name duplication (osal.c, osal.h) which can be confusing. Today their are only two. A pair would be added for each new platform supported
osal.h looks like a public API but it is actually a platform-dependent header.
osal_common.h does not look like a public API header but it actually is.

osal/
├── osal.h
├── freertos/
|             └ public API header, can be included anywhere else in the project
│   ├── osal_freertos.c
│   └── osal_freertos.h
│            └ I'm not sure we need that file see my comment above. It should only be included in osal_freertos.c
├── linux/
│   ├── osal_linux.c
│   └── osal_linux.h
└── silabs/
├── osal_silabs.c
└── osal_silabs.h
If we agree that we could merge osal_platform.h into osal_platform.c it could even be simplified:
osal/
├── osal.h
├── osal_freertos.c
├── osal_linux.c
├── osal_silabs.c

@ismilak @manojnacsl I apologize because I'm re-opening a topic that I think you already closed but I'm really not a big fan of the file organization you agreed upon.

there's a file name duplication (osal.c, osal.h) which can be confusing. Today their are only two. A pair would be added for each new platform supported
osal.h looks like a public API but it is actually a platform-dependent header.
osal_common.h does not look like a public API header but it actually is.

Edit: Agreed that we need to keep the platform-specific header. Forget my two previous proposals.
osal/ ├── osal.h ├── freertos/ │ ├── osal_freertos.c │ └── osal_platform_types.h │ └ Only contains type definitions, could be renamed to make it clear. ├── linux/ │ ├── osal_linux.c │ └── osal_platform_types.h └── silabs/ ├── osal_silabs.c └── osal_platform_types.h
Invalid proposals
osal/ ├── osal.h ├── freertos/ | └ public API header, can be included anywhere else in the project │ ├── osal_freertos.c │ └── osal_freertos.h │ └ I'm not sure we need that file see my comment above. It should only be included in osal_freertos.c ├── linux/ │ ├── osal_linux.c │ └── osal_linux.h └── silabs/ ├── osal_silabs.c └── osal_silabs.h
If we agree that we could merge osal_platform.h into osal_platform.c it could even be simplified: osal/ ├── osal.h ├── osal_freertos.c ├── osal_linux.c ├── osal_silabs.c

I did the same proposal (except file names) ~1.5 month ago, what was dropped then Guys: https://github.com/CiscoDevNet/csmp-agent-lib/pull/12#issuecomment-2032051462
I don't really understand why do we need to include the platform names in the osal_xxxxx.c file names, because it's specified in the directory name, at this point in the make file you can specialise the linking for the particular platform, and disagree with the osal_platform_types.h file name too, why do we need to include "platform " in it?
Back to my proposal, I think we should use the simplest possible file names and "architecture". I note that @manojnacsl recommendation was the same as mine except the file names, so finally it seems we defined the same architecture in a long story :)

why do we need to include "platform " in it?
Because it only contains types that are platform-specific. All the other types should remain in osal.h
why do we need to include the platform names the simplest possible file names
Using the same filename multiple times is error-prone, I think we can all agree on that.
Like said, osal_common.h does not look like a public header. It looks like a header common to osal C files that should not be included elsewhere. I'd naturally include osal.h, not osal_common.h in my project.
It does not contain anything but type definitions. See it as the equivalent of stdint.h.

why do we need to include "platform " in it? Because it only contains type definitions that are platform-specific. All the other types should remain in osal.h
why do we need to include the platform names the simplest possible file names Using the same filename multiple times is error-prone, I think we can all agree on that.
Like said, osal_common.h does not look like a public header. It looks like a header common to osal C files that should not be included elsewhere. I'd naturally include osal.h, not osal_common.h in my project.
It does not contain anything but type definitions. See it as the equivalent of stdint.h.

Because it only contains type definitions that are platform-specific. All the other types should remain in osal.h -> Entire osal is platform specific, since it includes network programming interface, OS API and utils, like timer, etc. (IMHO). I would say, "osal_types.h" is crystal clear for anybody, see my 1.5 months old proposal ...
Using the same filename multiple times is error-prone, I think we can all agree on that.  -> just one of the several counter-examples is port.c in FreeRTOS. I note that if you try to build an efr32 project with linux version of osal.c, you will see the error at the build time immediately, so I don't think  it's a critical error-prone implementation as it is now.
See it as the equivalent of stdint.h. As I mentioned, 1.5 months ago I recommended the same solution: osal_types.h (https://github.com/CiscoDevNet/csmp-agent-lib/pull/12#issuecomment-2032051462)
Just to clarify:

I agree with having a types.h, the name of this header is not a top-prio topic I think (again, I have proposed the same earlier)
I agree with using osal.h name instead of osal_common.h in the library sources as the common header
I disagree with osal_platform_types.h name, I think osal_types.h it's quite enough
I disagree with osal_xxxx.c source file names for xxxx platforms, since the same file name is arranged to platform specific directories already, so I think it's overhead, just we can use osal.c instead (my example is FreeRTOS port.c)

Entire osal is platform specific
That is true today, it might not be always the case. For instance there's a scenario where we move all the RTOS functions in a single C file osal_cmsis.c for instance. That file could be re-used by several platforms.
And of course, osal.h is not.
That said, as long as we rename osal_common.h and osal.h, respectively osal.h and osal_(something-or-nothing_)types.h I'm fine.

As discussed in the meeting today (05/15):
osal/
├── osal.h
├── freertos/
│ ├── osal_freertos.c
│ └── osal_platform_types.h
│ └ Only contains type definitions, could be renamed to make it clear.
├── linux/
│ ├── osal_linux.c
│ └── osal_platform_types.h
└── silabs/
├── osal_silabs.c
└── osal_platform_types.h

Test with Cisco FND was successful:

No build issues, warnings on Ubuntu 22.04
Sample app connected to the FND, registration request was succesful
It sends the metrics to the FND

Hi @manojnacsl and @paduffy !
I solved all the findings from the current and previous PR reviews:
* common osal API return code definitions

* debug prints for API return code checking

* osal source and header file refactor, common header and osal.c/h file hierarchy modified based on @manojnacsl proposal

Could you take a look at this again?
THX!

@ismilak The latest code pushed looks good and inline to our syncup discussion. Approving.


Add bonuses to hw 3

Looks great @avahoffman!!
Given how the students were confused about bonuses last time, do you think we need to include a statement about how they aren't required?

sure! Will do!


Add clean-publish

Coverage remained the same at 98.095% when pulling 62894a98408957c8067e7f70c65c88785087c373 on clean-publish into dc751e0f4a12cf64e250b32fe2f39210053098d5 on master.

Coverage remained the same at 98.095% when pulling 62894a98408957c8067e7f70c65c88785087c373 on clean-publish into dc751e0f4a12cf64e250b32fe2f39210053098d5 on master.


prepopulate the playground with some query

currently if we open the playgound, we see an empty query field.
It would help developers to be able to have a query to go with when they first open the page.
I don't know if/how this could be done, but it would be useful to have also all the queries that are here

looking at github: https://docs.github.com/en/graphql/overview/explorer
there is an additional tab called "Explorer" which make it extra easy to add/create a query or a mutation.

the Explorer tab is not part of our playground.

@nicolasburtey assuming this is the playground we're talking about, and this where it's configured, it looks like we should be able to add a tabs property with a query specifying default text (reference).
Is that correct? If it is, I can make a pull request.

this issue has been done


(MAINT) Delete test_files directive to keep fixtures out of the gem

This gemspec directive test_files will cause the files it references to be
included in the built gem so they can be used during the gem test command.
We do not intend to support the ability for users to run gem test, and
furthermore this gem subcommand doesn't even exist anymore.

@waynr @joshcooper This time, I actually built and unpacked the gem to verify the test files are not in the gem.
Turns out test_files is deprecated / no longer used.
Some references:

http://stackoverflow.com/questions/18871541/what-is-the-purpose-of-test-files-configuration-in-a-gemspec
https://github.com/rubygems/rubygems/issues/735


add Fresium, a chillingly complex chemical to prank your friends with

Notice: I do not endorse pranking your friends with this chemical
About the PR

This PR adds Fresium. Fresium is a somewhat complex coolant that does a lot of things. The list is as follows:

It is slippery, like ice.
If you spill it on the ground, it will freeze the ground wherever it spills and also slip you.
It's cold enough to fight fires.

It reacts somewhat harshly with water, instantly freezing it into ice and releasing Frezon into the atmosphere.
If ingested, it will slow you down significantly for a while, even after the chemical is done metabolizing.
While metabolizing, it makes you very cold (capped at 160.15K, or -113C)
Leporazine will purge it from your bloodstream rapidly
Anyone who has more than 40 units in their bloodstream will notice that their legs have suddenly ceased function. This is a buff to wheelchair bound crewmates (I didn't forget about you o7) Your legs will not work until the chemical drops below 40 units once again. In testing you can use this in foam grenades to immobilize groups of people if they don't escape fast enough.

Fresium has a very complex reaction
The reaction works as follows:
3 units Frezon (uses the newly added gas condenser to make this a reagent)
1 unit Plasma (as a catalyst)
2 units Nitrogen (per 3 units Frezon)
0.22 units Cryoxadone (per 3 units Frezon)
0.08 units Table Salt (per 3 units Frezon)
1.5 units Water (per 3 units Frezon)
In this reaction, the Nitrogen is released into the air as gas.
Either table salt or water must be added last, or else Saline will be made before the reaction can happen.
Now, you may be thinking:
What the scallop? This reaction is COMPLICATED! nobody would EVER make this. explode this guy NOW!
The reaction produces 5 units of Fresium for your troubles, and less if you mess it up. However, assuming you don't dump a ton of water into the mix, you should always get Fresium out of the reaction. The main danger of this reaction is managing leftover water. If there is too much excess water (more than 0.99u) it will react with the newly produced Fresium to produce Frezon gas. The amount of Fresium you get in the end depends on how well you manage the excess water.
I've fiddled around with the reaction in the chemmaster a good bit and I think it's kind of fun to calculate the exact numbers of reagent that should be added at once to make the reaction clean, but that might just be me.
So, you made Fresium, what will ya do with it?
You could:

make a skating rink, slip the HoS on it, and get thrown in perma
put it in chem grenades and immobilize the entire station so that only those with wheelchairs may move
freeze the clown into a statue for drinking all your meds
dump a bunch of water in the beaker and release frezon in the bathroom/
you could probably use it to speed up how fast someone cools down in a cryopod

Why / Balance

More fun chemicals are fun. The gas condenser deserves something fun to go along with it and we need more complex and quirky chemical reactions in preparation for the chem rework. Precise reactions like this one and the bruizine one will reward chemists who do the math right as they will waste less of their chemicals. Additionally, it's just something new for chemists to play around with and inevitably mess up, causing a bit of havoc.
Technical details

it uses like the reagent code and the locale code and the yaml to add a new reagent.
To Do:

[X] Test the code more
[X] Tweak and balance it a bit
[ ] Make sure the tests don't fail because they definitely will
[X] Add it to maints pills

Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase
https://youtu.be/hsKZGQWTzJg
https://youtu.be/MSkBnk34eJU
Changelog

:cl:

add: Added Fresium, a military grade coolant that you SHOULD NOT INGEST OR SPLASH ON YOUR FRIENDS!

i feel like this could just be properties of frezon itself but this is interesting enough that im fine with it tbh

i feel like this could just be properties of frezon itself but this is interesting enough that im fine with it tbh

it would stop frezon from being a recreational drug anyways (reagent effects are shared between gas and reagent i think) which would spark the biggest atmos riots ever seen

i love this so much

i do not have the slightest clue why the linux test is exploding maybe they need to download open source headphones or something.
test fails seem erroneous but i might just be stupid, this should be ready for review

Might be a good idea to ensure this doesn't break thermodynamics/cargo economy by making more frezon than it takes to make.
Spilling water onto (number) units of this, siphoning said frezon and selling it yada yada

now takes 3 frezon to make 5 fresium, if you do it as efficiently as possible and harvest and recycle all the frezon produced from turning your 5 fresium back into frezon (you get 15 mol) you can recycle it into 2.8 frezon, so it is now at a loss.

merge conflicts fix this is good to go i think

put it in chem grenades and immobilize the entire station so that only those with wheelchairs may move

yet another win for the mechtide....

next up is fresium+ which just freezes your game

fuck it we ball


anaconda: preview

Don't hardcode the Final value being passed to the buildstamp stage as reported in #515. We mark Anaconda based images as Preview which is inverted Final.
In other build systems this information comes from pungi which passes it on to koji which then writes it correctly into the image. I'd like for us to support the same but that would involve passing it down the API so let's start here with a small duplication of efforts.
I could be convinced to call the property Final instead so we don't deal with the inversion but it felt more natural to mark images as preview images than saying they're the "final" artifact.

Do we also need to set this for the CoreOS installer?

Yes, this needs to be set for any anaconda installer image. It controls whether anaconda shows the pre-release warnings, which we always want for any pre-release image, regardless of the payload.
I am not sure the logic here works (though I don't know offhand exactly how we determine what the Branched number is). The problem is when we come to build the RCs for Final. We do not want to put the pre-release warnings on those images, because these are the composes we are aiming to actually release - ideally we build just one RC, and ship it. But at the time we build the RCs, the release is still Branched, it has not yet become a stable release.
This is why pungi's logic for this uses the compose "label" and considers composes with a label starting "RC-" to be "final". That is the label format used (only) for final release candidate composes.

Right, the CoreOS installer is not an Anaconda installer but does have a buildstamp file. I don't know if it does anything regarding previews.
As for the other yes that's a good point and a reason why this value should really be filled in from the requesting side. We have two options for that:

A customization that goes all the way through the API (or blueprint).
A separate field in the API to set this.

I'll CC people for that part: @thozza, @achilleas-k, and @ondrejbudai: for our Fedora builds we'd like to set a certain value in the buildstamp file that indicates if the image is a preview release. This information is known to pungi, in turn to koji, but after that we lose the information. How should we approach this?

Small correction: right now the info is not passed through to the koji-osbuild layer by pungi, but doing so would be trivial (see above diff).

Also I don't think this is actually Fedora specific, I believe it also affects RHEL. We want pre-release RHEL images to clearly indicate their status just as much as (or more than) fedora ones, I would think.

Note it may still be practical to do something like this as a temporary workaround. I think osbuild does know the value I'm calling "label" (that's what productmd calls it) at some level, because it winds up in the filename. In e.g. Fedora-Workstation-Live-osb-40_Beta-1.7.x86_64.iso - the filename of the Workstation live image built by osbuild in the latest Beta candidate compose - the Beta-1.7 part is the "label". I don't know offhand where osbuild gets that string from, but clearly it has it somewhere.

It might actually be logically easier if we default to not final (I.e. pre-release) and figure out a condition to decide the images are final.

@AdamWill exposing it in the API and letting the build configuration (from pungi/koji) set it should solve the issue, right?  Sorry, I'm just not sure if I'm understanding all the comments completely.

yes, if we can do that, it will definitely solve the issue. I was just struggling to figure out how to implement that.
Some of the discussion is around having osbuild "figure out" whether the image should be considered final - essentially duplicating what pungi does - as a possible workaround/short-term fix for this, if fixing it 'properly' is too hard to do quickly.

@AdamWill It depends, this fix is quick it'll take me a bit to work this through koji-osbuild and osbuild-composer.
My suggestion is; merge this PR for short term, leave open the issue to keep track of this for the service side of it.

yeah...merging this right now would dtrt in practice at least until final. even for final...if we only have non-blocking images built by osbuild that actually run anaconda (is it just the experimental osbuild workstation live, or am I forgetting something?), it's not critical that this would make those still show the pre-release warning, I guess...
I was going to try and whip up a variant that would actually give the correct results, I might still try and do that, but it's not urgent.

Alright, let's merge this and start pushing it up the stack to reach the service while we do the proper fix in parallel.  For me, adding it as a customization and putting the control in the builders hands is better than trying to be smart about it.

I moved #526 ahead of this PR in the merge-queue which should make it pass.

Has this been deployed yet? It looks like the osbuild ws live in the latest F40 beta candidate still doesn't have the pre-release warnings.

Has this been deployed yet? It looks like the osbuild ws live in the latest F40 beta candidate still doesn't have the pre-release warnings.

No, this is currently following our normal release schedule (which means it takes 1-2 weeks for it to end up on production). Does it need to go faster? I thought this was (for now) a relatively low-priority change :)

it's not disastrous since the image it affects is not release blocking, it just would've been nice to have it fixed for the Beta. no big deal, I should've let you know.

OK, so this has now gone wrong exactly the way I thought it would: we have F40 Final-targeted images showing the warnings when they shouldn't.

https://openqa.fedoraproject.org/tests/2557502 - osbuild-built Workstation live from the Fedora 40 Final RC, test fails because it shows pre-release warnings
https://openqa.fedoraproject.org/tests/2558883 - osbuild-built IoT image from the IoT nightly compose, test fails because it shows pre-release warnings

The IoT case is awkward because IoT doesn't have separate 'candidate' composes. It runs composes every day automatically, which in productmd terms are 'candidate' composes not 'nightly' composes (a difference from the main Fedora nightly composes), and we just pick one to release. probably all we can do here is implement some kind of lever for the IoT team to turn 'isFinal' on or off when they want to.
The Workstation case should be possible to handle better, though, because we should be able to distinguish when we're building an image as part of an RC compose and set it as final.

To write this down somewhere so I don't forget it, here's how this works for installer images not built by osbuild. Pungi has this heuristic which decides that any compose which has a label and whose label starts "RC-", "Update-", or "SecurityFix-" is 'supported'. When generating lorax commands, the two Pungi phases for building installer images using lorax - https://pagure.io/pungi/blob/master/f/pungi/phases/ostree_installer.py and https://pagure.io/pungi/blob/master/f/pungi/phases/buildinstall.py - use that compose.supported property when setting something that ultimately determines whether lorax is run with --isfinal (they each have two paths, for doing this via Koji or not, but they each use compose.supported on both paths).
This gets things right for mainline Fedora composes - nightlies and Beta candidates (and Alpha candidates, when we did those) get the warnings, Final candidates (which have "RC-" labels) do not. For IoT composes it just meant they never, ever showed the warnings, which wasn't really correct but we never bothered trying to fix it.

This makes me think that the most reasonable solution would be to make this customizable using BP customizations, which can be passed by Pungi when triggering the image build. IOW do not have the pre-release defined for specific Fedora versions in our tooling...

yeah, that might well overall be the best, and matching how the old tools work.


Just "raw" FASTA files shouldn't be allowed as an artifact.

Currently it is only possible to process FASTA studies that include quality files, otherwise you will get a pop-up saying that you need QUAL files.

This seems to be a bigger problem that we initially thought. It turns out that Qiita tries to support this by not passing -q and -d if there are no qual files provided, but --min_qual_score 25 also needs to be excluded from the command in this case.
This pull request adds a more useful error message if a user runs Preprocess without both a fasta and qual file.

Any luck using a different/new preprocessed parameters set?
On Wed, Mar 11, 2015 at 4:25 PM, Greg Caporaso<EMAIL_ADDRESS>wrote:

This seems to be a bigger problem that we initially thought. It turns out
that Qiita tries to support this by not passing -q and -d if there are no
qual files provided, but --min_qual_score 25 also needs to be excluded
from the command in this case.
This pull request adds a more useful error message if a user runs
Preprocess without both a fasta and qual file.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78386129.

I think that's one solution, but I think that's a bit deeper than I'm able to dive into Qiita at the moment (it sounds like that would have to be a change to the database schema, and that those are challenging to put in place). #972 improves the error message in the meantime.

Does the act of setting the min qual score value (even to None) force
split_libraries to need qual?
On Mar 11, 2015 7:47 PM, "Greg Caporaso"<EMAIL_ADDRESS>wrote:

I think that's one solution, but I think that's a bit deeper than I'm able
to dive into Qiita at the moment (it sounds like that would have to be a
change to the database schema, and that those are challenging to put in
place). #972 https://github.com/biocore/qiita/pull/972 improves the
error message in the meantime.
—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78409607.

Passing any value for --min_qual_score makes -q required. I don't
think passing None would parse as the option parser expects an int.
On Wed, Mar 11, 2015 at 8:29 PM, Daniel McDonald<EMAIL_ADDRESS>wrote:

Does the act of setting the min qual score value (even to None) force
split_libraries to need qual?
On Mar 11, 2015 7:47 PM, "Greg Caporaso"<EMAIL_ADDRESS>wrote:

I think that's one solution, but I think that's a bit deeper than I'm
able
to dive into Qiita at the moment (it sounds like that would have to be a
change to the database schema, and that those are challenging to put in
place). #972 https://github.com/biocore/qiita/pull/972 improves the
error message in the meantime.
--
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78409607.

--
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78417861.

That's annoying... so ya, even a new set of processed params wouldn't work.
It actually would be a small fix to make split_libraries handle this but
that would necessitate 1.9.1 and that would not be fun
On Wed, Mar 11, 2015 at 9:34 PM, Greg Caporaso<EMAIL_ADDRESS>wrote:

Passing any value for --min_qual_score makes -q required. I don't
think passing None would parse as the option parser expects an int.
On Wed, Mar 11, 2015 at 8:29 PM, Daniel McDonald<EMAIL_ADDRESS>
wrote:

Does the act of setting the min qual score value (even to None) force
split_libraries to need qual?
On Mar 11, 2015 7:47 PM, "Greg Caporaso"<EMAIL_ADDRESS>wrote:

I think that's one solution, but I think that's a bit deeper than I'm
able
to dive into Qiita at the moment (it sounds like that would have to be
a
change to the database schema, and that those are challenging to put in
place). #972 https://github.com/biocore/qiita/pull/972 improves the
error message in the meantime.
--
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78409607.

--
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78417861.

—
Reply to this email directly or view it on GitHub
https://github.com/biocore/qiita/issues/953#issuecomment-78418292.

As a group we decided to not allow just FASTA to be added in to the system as we can't actually use. Renaming the issue.

We need to change:

[ ] code and configuration of plugins
[ ] code in Qiita
[ ] documentation in Qiita
[ ] perhaps the upload configuration


Render vector data

The app loads GeoJSON data into Features, but it is not rendering.
The rendering needs to be fixed.

Done.


R0.8

Can one of the admins verify this patch?

Is this a misoperation?

I am pretty sure this is misoperation. Closing the PR.


Ensure that cilium can handle older node-monitor readers

Ensure that cilium can handle older node-monitor readers
Description of requested functionality
We encode node-monitor -> reader data with Go's gob. This works but it is easy to break compatibility with an older reader as we update the payload structs. We also, separately, encode the  monitor/payload.Meta struct and then the  monitor/payload.Payload struct on the wire. This requires a client to encode this behaviour as part of the protocol.
We should decide on the compatibility policy here, and support it. Some possible avenues:

Readers must indicate a version to the node-monitor on connection, and will receive an error or data in return. This might work a HTTP protocol upgrade.

The data encoding format, and the data we're encoding are guaranteed to be backwards compatible. This is easier on the readers and keeps our protocol simple. It does limit the changes we can make, however, and might mean we have redundant fields used by older and newer agents.

We simply include a version field in each payload and clients are expected to check that and report an error if they cannot support it.

@scanf  What do you think?

Thanks for following up. Not sure, need to think about this some more.
Adding API team.
cc: @cilium/api

How about moving to gRPC and using a gRPC stream? gRPC will offer multiple solutions to versioning. The gRPC method could take a version parameter. Or we could have multiple gRPC services or methods, one per version.
There were separate discussions about pushing filtering to node monitor. That will require something sophisticated like gRPC.

gRPC works too! I'll make this a 1.0-gap ticket so we at least look at it again before then.

I don't think I will have enough cycles for adding this. @raybejjani maybe you and @rlenglet can work on this together?

I'm also currently a little bogged down with other things, but I expect a gRPC switch would be best in the long term (this also implies using protobuf instead of gob/json).
Would either of you have more time in around November 27? I expect to have cleared out most of my backlog by then.


Init lib update winit 0.30

Started updating to new winit. Blocked by egui still.

egui master is now on winit 0.30: https://github.com/emilk/egui/pull/4849


Incorrect integer calculation

Describe the bug
Simple integer calculation inside a pure function returns the wrong result.
This happens for the compiler target Polkadot.
To Reproduce
Compile the following contract for the Polkadot compiler target:
contract Test {
    function test()
        external view
        returns (uint256 result)
    {
        return f(10_000_000_000);
    }

    function f(uint256 x)
        internal pure
        returns (uint256)
    {
        return x * x / 10_000_000_000;
    }
}

Deploy this contract and send the test message. The result will be 776_627_963 although it should be 10_000_000_000.
Compiling this contract for Ethereum and running it on an EVM (e.g., on Remix) yields the correct result:
    uint256: result<PHONE_NUMBER>0

It seems that the smallest constant where this effect starts to appear is 0x200000001 (replacing both occurrences of 10_000_000_000 by this number).
Hyperledger Solang version
Latest main branch (commit 01fbc6b)

I can confirm the bug. Seems like the strength reduction optimization pass is at fault here; compiling with --no-strength-reduce fixes the reproducer contract.

Strenght reduce thinks that for the divide expression (x * x) / 10_000_000_000, the maximum value of the left hand (x * x) is one (1). And based of that, x gets optimized into a narrower int type. Which is clearly wrong. I don't understand why strength reduce doesn't just assume the expression types max value, if it's not a constant expression anyways. CC @LucasSte could you please have a look at this?

I wrote strength reduce.
You are right, there is a problem with the calculation of the possible values of x * x, or of any unsigned multiply. We want an unknown bit mask for n..m where m is the maximum values of a * b. The n can be set to the sum of the leading 0 bits of a and b, since 0x10000 * unknown always has 4 leading 0 bits.


PSI integration

Description
This PR aims to integrate the Python binding of OpenMined/PSI into PyVertical. A new directory psi has been added to src/ where the corresponding files reside. A shell script build-psi.sh has been added along with a WORKSPACE file to facilitate the build process of PSI using bazel.
Fixes #13
Fixes #22
Affected Dependencies

bazel

How has this been tested?

Unit tests have been added
The example code of the README has been tested in a Jupyter notebook

Checklist

[x] I have followed the Contribution Guidelines and Code of Conduct
[x] I have commented my code following the OpenMined Styleguide
[ ] I have labeled this PR with the relevant Type labels
[x] My changes are covered by tests

I should add that the example that I added to the README gives an error if partition_dataset is called with remove_data=True. After discussion with @TTitcombe we decided to go forward with this for now. We should investigate this though, maybe someome with more insight on the matter could have a look at it?

@rsandmann looks like the bazel installation in the test script isn't working correctly. If you can't get it to work, remove the psi tests for now. We can get the tests working in a separate PR

@rsandmann a small conflict to fix (it looks simple - just keep everything).
The tests pass 🥳 but there's a mypy type checking error caused by _psi_bindings import in src/psi/__init__.py, I think you can get mypy to ignore this by putting  # type:ignore at the end of the from . import _psi_binding line


Feat: Introduce class for SessionInitData rather than using a dict

Introduce class for SessionConfig rather than using a dict

[X] Include this change in the Release Notes. If checked, you must provide an end-user friendly description for your change below

SessionConfig is now specified more formally.
We retain the existing serialization in init for backwards compatibility
Config changes are now applied only to the current session rather than to the shared global config.

Open Questions

I placed SessionConfig in the session module rather than the core/config module as it is specific to web and the session and different from the rest of the configuration. If it is more understandable to place this with the rest of the config I am open to doing this.

To run this PR locally, use the following command:
docker run -it --rm   -p 3000:3000   -v /var/run/docker.sock:/var/run/docker.sock   --add-host host.docker.internal:host-gateway   -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:d06e714-nikolaik   --name openhands-app-d06e714   docker.all-hands.dev/all-hands-ai/openhands:d06e714

Allow me to note another detail, related to the above, but not quite the same:
Currently, the UI settings offer to users only a handful of the settings the application actually has. To my knowledge, we are moving towards offering to users in the UI all or most of our settings. That will mean that this SessionConfig class would become a completely or almost completely duplicate hierarchy of our settings?
I'd appreciate to take the time to think this one over.

I did not envision this one resulting in so much discussion! Here is the rationale / use case as briefly as I can:
There are already 2 types of config:

Global shared defaults derived from config.toml / environment applying to the whole server
Session specific parameters from the Web UI, and apply only to the current user / session

Currently the session specific parameters are not formalized and represented by a dict. This PR really only formalizes them.
The justification for not simply using the existing config classes here is:

These entities have distinct origins (Config file vs web UI)
These entities have distinct scopes (A user session vs global)
The SessionConfig is likely to only be a subset of the global config (But this is not guaranteed - it may end up containing attributes for which no default makes logical sense)

I doubt we will ever offer a full listing of everything in the config.toml in the web ui:

Such a UI is likely to be very complex (and experienced users tend to prefer a config file for this level of detail anyway)
There are technical concerns - Some values require a server restart to be effective.
There are security concerns - Some values should NOT be shared between users.

If we later have config that makes sense in the context of a user rather than a session, I suggest we add such config at that time - in any case this is an interim step in that direction.

Those are good points! Please let me take a simpler part of it all, LLMConfig.
Currently, the UI only offers like three attributes, from all of it.

there's no reason, is it, why we wouldn't let all the attrs of litellm completion to be customized by users (there's a bunch of historical posts that converge towards the intention to do it, too)
because the UI offers the user the ability to override 3/n, the users experience the confusing issue linked above (and there are others like it), where they feel like modifying the toml should work and it doesn't. (it works for n-3 😅)
there are multiple LLMs possible in the backend, but the UI only offers one; that may change - e.g. we have a draft llm that users can configure
there is an LLM config per agent in the backend, and that... can be configured in the toml partially, and strange things may happen because the user HAS the ability to choose both stuff in the UI (an agent) and stuff in config.toml (agent llm) and the interference with the default LLM attributes... sorry, I don't remember what it breaks, but it breaks some expectations. 😅

What do think about a session-based configuration that starts like:
class SessionConfig
    llm_config: LLMConfig # main LLM
    draft_llm_config: LLMConfig # draft LLM
    ...

What do think about a session-based configuration that starts like:
class SessionConfig
    llm_config: LLMConfig # main LLM
    draft_llm_config: LLMConfig # draft LLM
    ...

I think you may be on to something here - If I understand you correctly, you refer to the issue where values that are specified in the WebUI seem to ignore any value from the config.toml / ENV.
Maybe we do need to separate these out for Web - though the CLI and Headless modes still accept values from the config.toml at present AFAIK. Let me think a little more and update the proposal.

@enyst I agree we have a real problem with the config.toml + UI configuration
Right now, I'm mainly concerned about the 80% of users who are UI-only. Keeping a simple UI in place, and making sure those settings persist across sessions (and across different browsers connected to the same server), is the main objective we're going after right now.
I do think we'll need to figure out how to properly sync between config.toml and the UI. Tim's next PR (which will create long-term server-side storage for the LLM configuration) will hopefully set us up a little better here. By default it'll create a file on the user's machine that they can modify (though it'd be separate from config.toml)

Also

are you considering multiple session_configs per user?

Good question--probably not in the near term. I don't see much use in e.g. having 1 session going with GPT and another going with Claude, except for just mucking about and experimenting

@enyst - the overall plan here is...

This PR formalizes the SessionInitData from a dict to a dataclass
The next PR will introduce server side storage for this so it is no longer in local storage. (In the OSS this will be a file store)

There will be no change to the current extensive config available to power users, aside from the documentation updates included in this PR

@rbren I see, and sure, I don't think this PR needs to solve our age-old problem there in a blink. 😅
@tofarr your point of view is most interesting: you're describing how things look like from the perspective of building the web ui / remote app. It's instructive.
I do want to note that, of course the distinction between user configuration and server/global configuration is real. And we're not currently making it anywhere really. We should. But I don't think it lies in "what happens to be available in the Web client today" vs "what is in files". That can't be right, there are other clients than the web client, there are other user-specific or session-specific settings. I would even argue that there is such thing as CLI sessions, although not formalized.
Re:

Tim's next PR (which will create long-term server-side storage for the LLM configuration) will hopefully set us up a little better here. By default it'll create a file on the user's machine that they can modify (though it'd be separate from config.toml)

For the record, we have the ability to define the location of the config.toml intended per user (e.g. can drop it in ~/config.toml), coming from previous chat, configurable location PR.
This was intended as a step for multi-user use, albeit a different one.


S3 buckets fail to delete when undeploying the solution

When undeploying the solution, there is an intermittent failure in the cleanup_bucket custom resource that empties S3 buckets before deletion: failure occurs because the bucket has already been deleted by the time the CR tries to execute the deletion code.

Fixed in v2.1.14


Add getting started documentation

Looks great! Can you add a vignette for utils as well?

It looks like most of utils is used in generating the public dataset. What would be a good example of something that someone would be run on the public dataset?

I was asked about process_consequences ~3 times in the last week, the whole suite of VEP-processing utilities. Also things like adjust_sex_ploidy and other QC functions have been shared to the community and used in other non-gnomAD pipelines now as well.

Ok. I'll suggest we leave this page as is, with a very simple example of obtaining gnomAD data that will be applicable to almost every user. And then add a separate section with examples of tasks, such as running VEP, etc. That can also serve as sort of an FAQ. I can start that section in this PR with process_consequences.

Since VEP/process_consequences usage will be affected by the reorganization in #207, we may not want to publish that immediately. I'll open a separate PR for it so that this one isn't held up.


tour: Lack of description about converting integer to string

Context: https://tour.golang.org/basics/13
It is lacking of description about converting Integer to String.
string method receives an argument.
If an argument is int or uint, it is recognized as a codepoint like below.
https://play.golang.org/p/x_88Grgd4ZG
And, If we want to convert integer to string, we must use strconv.Itoa.
Beginners may be confused.
So I think we should add the annotation.

Yeah, it's a common gotcha for beginners. May be worth adding a note in that lesson.


[FR] Support Azure Cosmos DB API for MongoDB

Instructions
Proposal Summary
Support Azure Cosmos DB API for MongoDB (feature level 4.2) to ease deployment of fiftyone in azure environments.
Motivation

What is the use case for this feature?
Deployment of fiftyone to azure.
Why is this use case valuable to support for FiftyOne users in general?
Azure comes with Cosmos DB API for MongoDB natively. Supporting this backend significantly simplifies adoption for Microsoft shops.
Why is this use case valuable to support for your project(s) or
organization?
Without support for Cosmos DB, one has to deploy either mongo's Atlas service (which is often not available in corporate environments) or deploy and manage its own vm which quickly becomes quite elaborate.
Why is it currently difficult to achieve this use case?
Fiftyone seems to rely on features that are currently not supported by Cosmos DB.

What areas of FiftyOne does this feature affect?

[ ] App: FiftyOne application
[x] Core: Core fiftyone Python library
[x] Server: FiftyOne server

Details
When currently starting fiftyone with the Cosmos DB backend, we get this error:
Error=2, Details='Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Message: {"Errors":["The index path corresponding to the specified order-by item is excluded."]}
ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e, Request URI: /apps/266260cc-aa5c-4d29-a19b-9549c6eb601b/services/3a28772e-5e64-4457-b594-b12a33e2d177/partitions/a2f83d84-0707-4205-95f6-4ff70271d3f7/replicas/133103169072839565s/, RequestStats: Microsoft.Azure.Cosmos.Tracing.TraceData.ClientSideRequestStatisticsTraceDatum, SDK: Windows/10.0.19041 cosmos-netstandard-sdk/3.18.0);););, full error: {'ok': 0.0, 'errmsg': 'Error=2, Details=\'Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e; Reason: (Message: {"Errors":["The index path corresponding to the specified order-by item is excluded."]}\r\nActivityId: eec9ddd8-e490-435f-9c8b-1a94b33b607e, Request URI: /apps/266260cc-aa5c-4d29-a19b-9549c6eb601b/services/3a28772e-5e64-4457-b594-b12a33e2d177/partitions/a2f83d84-0707-4205-95f6-4ff70271d3f7/replicas/133103169072839565s/, RequestStats: Microsoft.Azure.Cosmos.Tracing.TraceData.ClientSideRequestStatisticsTraceDatum, SDK: Windows/10.0.19041 cosmos-netstandard-sdk/3.18.0);););', 'code': 2, 'codeName': 'BadValue'}
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/graphql/execution/execute.py", line 353, in await_result
return await result # type: ignore
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/graphql/execution/execute.py", line 456, in get_results
await gather(*(results[field] for field in awaitable_fields)),
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/graphql/execution/execute.py", line 632, in await_result
self.handle_field_error(error, return_type)
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/graphql/execution/execute.py", line 666, in handle_field_error
raise error
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/graphql/execution/execute.py", line 625, in await_result
return_type, field_nodes, info, path, await result
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/strawberry/extensions/directives.py", line 19, in resolve
result = await await_maybe(_next(root, info, *args, **kwargs))
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/strawberry/utils/await_maybe.py", line 12, in await_maybe
return await value
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/strawberry/schema/schema_converter.py", line 396, in _async_resolver
return await await_maybe(_get_result(_source, strawberry_info, **kwargs))
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/strawberry/utils/await_maybe.py", line 12, in await_maybe
return await value
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/fiftyone/server/paginator.py", line 108, in paginate
return await get_items(
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/fiftyone/server/paginator.py", line 70, in get_items
data = await foo.aggregate(collection, pipelines)
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/fiftyone/core/odm/database.py", line 322, in _do_async_pooled_aggregate
return await asyncio.gather(
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/fiftyone/core/odm/database.py", line 328, in _do_async_aggregate
return [i async for i in collection.aggregate(pipeline, allowDiskUse=True)]
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/fiftyone/core/odm/database.py", line 328, in <listcomp>
return [i async for i in collection.aggregate(pipeline, allowDiskUse=True)]
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/motor/core.py", line 1158, in next
if self.alive and (self._buffer_size() or await self._get_more()):
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/motor/core.py", line 1626, in _on_started
pymongo_cursor = future.result()
File "/anaconda/envs/azureml_py38/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/collection.py", line 2502, in aggregate
return self._aggregate(_CollectionAggregationCommand,
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/collection.py", line 2419, in _aggregate
return self.__database.client._retryable_read(
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1525, in _retryable_read
return func(session, server, sock_info, secondary_ok)
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/aggregation.py", line 137, in get_cursor
result = sock_info.command(
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/pool.py", line 710, in command
return command(self, dbname, spec, secondary_ok,
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/network.py", line 161, in command
helpers._check_command_response(
File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/pymongo/helpers.py", line 167, in _check_command_response
raise OperationFailure(errmsg, code, response, max_wire_version)

Willingness to contribute
The FiftyOne Community encourages new feature contributions. Would you or
another member of your organization be willing to contribute an implementation
of this feature?

[ ] Yes. I can contribute this feature independently.
[ ] Yes. I would be willing to contribute this feature with guidance from
the FiftyOne community.
[x] No. I cannot contribute this feature at this time.

👍
Hi! Just wondering, since Azure has upgraded their MongoDB supported versions, is it possible to point fiftyone to Cosmos today? Is another table scheme (such as postgress) another option?
Basically I want to keep things in Azure if it is at all possible.


Add PHPStan to CI

After #4

@matthiasnoback There are two things on my wish list.

You read out loud your book to me.
I receive a printed copy.

Cool, can you rebase this?

Done 🍏

Thanks a lot!

You're welcome.


Add autoupdate or update command

It could be nice to have an auto update feature that download the last CLI and the last docker image and install it automatically. This can either be full automatic and checked every time the CLI runs or can be a mesg-core update command

Moved to https://forum.mesg.com/t/add-autoupdate-or-update-command/148


Funny display of backslashes in error message

If I try to load this file:
module EscapedBackslash where
open import Agda.Builtin.Char
open import Agda.Builtin.List
open import Agda.Builtin.String

s : List Char
s = "\\"

I get the following error message:
String != List Char of type Set
when checking that the expression "//" has type List Char

This behaviour is caused by line 111 in Emacs__Parser.re :
let result =
      ref(string |> Js.String.replaceByRe([%re "/\\\\\\\\/g"], "/"));

I can't fix it myself because I have no Windows system to test it on.

Thanks for reporting this.
Hmm, escape characters in string quotes need to be escaped somehow.


Message stuck in queue

When restarting the app service, user trying to send the message.
Then all message are stuck at queue status. and cannot cancel it.

when trying to restart the prep-function, we encounter the issue:
Microsoft.Azure.WebJobs.Script: Error building configuration in an external startup class. Microsoft.Azure.WebJobs.Script: One or more loaded extensions do not meet the minimum requirements. For more information see https://aka.ms/func-min-extension-versions. ExtensionStartupType DurableTaskWebJobsStartup from assembly 'Microsoft.Azure.WebJobs.Extensions.DurableTask, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=014045d636e89289' does not meet the required minimum version of 2.4.1. Update your NuGet package reference for Microsoft.Azure.WebJobs.Extensions.DurableTask to 2.4.1 or later. ExtensionStartupType ServiceBusWebJobsStartup from assembly 'Microsoft.Azure.WebJobs.ServiceBus, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not meet the required minimum version of <IP_ADDRESS>. Update your NuGet package reference for Microsoft.Azure.WebJobs.Extensions.ServiceBus to 4.2.1 or later. .

Hi @boscohwang ,
Thanks for raising the query.  Please perform the below procedure.

Disconnect the repository
Wait for 30-40minutes
Then connect to repository again.
Do the same for function apps which are showing this issue

Keep us posted

Hi @boscohwang , Thanks for raising the query. Please perform the below procedure.

Disconnect the repository
Wait for 30-40minutes
Then connect to repository again.
Do the same for function apps which are showing this issue

Keep us posted

I will try and let you know the result. Thanks

Issue resolved and thanks


✨ [New Demo Request]: Web Audio API

Please include the request by answering these questions.
What is the Example and Demo Topic?
Web Audio API
The Web Audio API provides a powerful and versatile system for controlling audio on the Web, allowing developers to choose audio sources, add effects to audio, create audio visualizations, apply spatial effects (such as panning) and much more.
Please explain why do you need it?
It can be used to incorporate audio into your website or application. It can also be used to create advanced interactive instruments. With that in mind, it is suitable for both developers and musicians alike.
Any Links, Reads?
https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
Do you want to contribute to the source code for this example?
Yes , I would love take on this opportunity to add a demo for web audio api to this amazing project.
If you are picking up this request to implement, PLEASE READ THIS

HOW TO ADD A DEMO

@atapas Please assign this to me so that issue to me . I want to add web audio api demo to the playground.


[FR]: Add the ability to do custom Regex text transformation

Issue validation

[X] My issue is not a question relative to Material Mkdocs nor Mkdocs (You can open a discussion to get more help!)
[X] I checked the issue to prevent duplicate

Workflow
Obsidian plugin 💠
Is your feature related to a problem ?
I am using the plugin to push notes to my digital garden repo, which uses Quartz. However, Quartz doesn't like date formats in frontmatter like 2022-06-20 18:34, and I have to regex it to remove the time part, then post date will be shown correctly.
What solution do you want to see ?
I would like the plugin to have an option for doing regex replace operations on text before copying note file. For example it can be a simple input field like other plugin settings, that user can set Regex replacements that will be performed on the file.
Describe the alternative you've considered
Writing my own shell script that will run in CI modifying files.
OS
Linux
Anything else?
No response

So your idea is a way to remove key in frontmatter? Or in all the contents? Why do you post an issue on Quartz ? The request seems to be pretty niche...

So your idea is a way to remove key in frontmatter? Or in all the contents? Why do you post an issue on Quartz ? The request seems to be pretty niche...

My idea is to add a general way to apply regex to note's text content while processing the note.

It can be useful to censor things throught...

It can be useful to censor things throught...

Yeah, this is one good usage too.

feature added in 3.16 ! You can add multiple regex / text to be replaced :)


Select onChange target doesn't return an html tag

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior
Get the input html tag under select
Current Behavior
Get only an object with value field
Steps to Reproduce (for bugs)
Try to render MySelect from
const setData = (e) => console.log(e.target)
export const MySelect = () => (
    <FormControl fullWidth>
        <InputLabel htmlFor="age-simple">Civilité</InputLabel>
        <Select
            value={'Monsieur'}
            onChange={setData}
            input={<Input />}
            label={'Civilité'}
            name='civility'
        >
            <MenuItem value={'Mr'}>Monsieur</MenuItem>
            <MenuItem value={'Mme'}>Madame</MenuItem>
        </Select>
    </FormControl>
)

Look at your console

Context
I need to get the name field of my Select
However this one is not present in the triggered event
Your Environment
Ubuntu 17.04 (64bit)

Tech
Version

Material-UI
1.0.0-beta.12

React
15.6.1

browser
Chrome 61.0.3163.100 (64bit)

node
8.1.4

npm
5.4.2

create-react-app
1.4.0

How about reproducing with the codesandbox link than was in the issue template?

@rosskevin This time, the provided information is enough to look into the issue.

I need to get the name field of my Select
However this one is not present in the triggered event

@robininfo-edsx The event is coming from a click/key interaction as you can find in:
https://github.com/callemall/material-ui/blob/6918de85cc2fc5a05ae400cc21f4d4319eae195a/src/Select/SelectInput.js#L149
You won't be able to access the hidden input field this way. This is not something we want to support. But then, I don't understand the use case. As you are the one providing a name to the input. Anyway, you can use the inputRef property on the <Input /> to get access the native hidden input field.
P.S. With the native version of the Select component, you can use the event to access the native select input field.

I do as React documentation does because if you use something like this
const setData = (name) => (e) => console.log(e.target)
export const MySelect = () => (
    <FormControl fullWidth>
        <InputLabel htmlFor="age-simple">Civilité</InputLabel>
        <Select
            value={'Monsieur'}
            onChange={setData(civility)}
            input={<Input />}
            label={'Civilité'}
        >
            <MenuItem value={'Mr'}>Monsieur</MenuItem>
            <MenuItem value={'Mme'}>Madame</MenuItem>
        </Select>
    </FormControl>
)

You create a function each time you rerender this Component, so using a depth 1 shallow comparison will return you to rerender each time.
I know that this not really usefull as actually material-ui components are rerender each time as when you rerender a child even with same same props, the props object is never the same wich cause a rerender of each material-ui components when you rerender the parent component.
The problem is actually that onChange event took 22ms to rerender my form, so it look like less reactive to user input.

I've been using the Formik library recently https://github.com/jaredpalmer/formik and it throws this warning:
Warning: You forgot to pass an `id` or `name` attribute to your input
Since event.target has no name or id, Formik can't figure out what input in the form changed. It works fine using <Select native> though.
Unless I'm missing something, using native selects is the only way around this?

@mgrijalva You are right. Formik uses the following logic. I'm curious about the integration with other form libraries. Still, you have an alternative on userland, you can write an adapter between Material-UI onChange output and Formik requirements. It's simple.
I'm adding the waiting for user feedback label. We might be able to implement something better on our side, but without more feedback, it's hard to tell. So please, people raised your voice if you encounter a similar situation.
So far we have:

@robininfo-edsx  want to access the field name in his onChange.event.target.name.
@mgrijalva that has Formik constraints to deal with.

I have been looking at what Ant Design is doing with their custom select. They don't even expose the event (using rc-select internally). So the situation is worth on their end. I couldn't find any other benchmark. I think that we can keep the issue closed until further use cases is discovered.

Hi @burcakulug, have you a running example of a solution that I could use for my project ? I struggle with this warning :-(

Hi @jfperrin , I have started this personal fun project, you can take a look at this as a sample.
https://github.com/burcakulug/mytvguide/blob/master/app/containers/UsersPage/index.js#L36
For my actual work project, I implemented some wrapper components using Formik's Field and Material UI components, if that project gets opensource, I can also post it here later. For now, the one above should give you the gist.

Hi, i'm also struggling with this warning when using Formik with the Material-ui SelectField. So i think it is enough for the devs to implement something better to resolve this issue.

i think a library wrapping mui components and bridging formik field to them would be good. that's what i sort of did for work, if i can manage, i may try to create a library for it.

I'm having the same issue.

Chiming in late for anyone also struggling with this, since I'm using MUI with Formik as well, but wanted the non-native Select. It seems you can achieve it by passing an ID down to the visible element that matches the form field name, like so:
<TextField
  name="mySelectField"
  label="Select something ..."
  select
  required
  value={values.mySelectField}
  SelectProps={{
    SelectDisplayProps: {
      id: 'mySelectField'
    }
  }}
  onChange={handleChange}
  onBlur={handleBlur}
  >
  {mySelectOptions.map(option => (
    <MenuItem key={option.value} value={option.value}>
      {option.label}
    </MenuItem>
  ))}
</TextField>

FYI, this last snippet seems like MUI v1.x
0.x versions would similar to the previous snippets.


Add introspection to get_sg_eos interface

PR Summary

When the library is built with debug flags, this adds introspection functions to the init and final functors in the get_sg_eos interface.
These functions check to make sure the values being passed are either zero or normal. I'm using slightly more complicated logic than just is_finite so that I can detect underflow values as well. For some quantities, I'm also including checks to make sure the returned value is strictly positive or non-negative where appropriate.
PR Checklist

N/A Adds a test for any bugs fixed. Adds tests for new features.
[x] Format your changes by using the make format command after configuring with cmake.
N/A Document any new features, update documentation for changes made.
[x] Make sure the copyright notice on any files you modified is up to date.
[x] After creating a pull request, note it in the CHANGELOG.md file.
[ ] LANL employees: make sure tests pass both on the github CI and on the Darwin CI

If preparing for a new release, in addition please check the following:

N/A Update the version in cmake.
N/A Move the changes in the CHANGELOG.md file under a new header for the new release, and reset the categories.

@Yurlungur @dholladay00 is going to be a bit unavailable for the next few days so I might need your review here.
Also please check me on whether you agree with what I'm requiring to be non-negative or strictly positive.

FYI - I did some reading on and vs && and it seems like the consensus is that because && has been used traditionally, it is preferred over and. Coming from Fortran and python, I find and more readable, but I'm happy to change them to the more commonly-used C++ symbols.

FYI - I did some reading on and vs && and it seems like the consensus is that because && has been used traditionally, it is preferred over and. Coming from Fortran and python, I find and more readable, but I'm happy to change them to the more commonly-used C++ symbols.

I strongly prefer &&. I wasn't even aware and was valid C++.

FYI - I did some reading on and vs && and it seems like the consensus is that because && has been used traditionally, it is preferred over and. Coming from Fortran and python, I find and more readable, but I'm happy to change them to the more commonly-used C++ symbols.

I strongly prefer &&. I wasn't even aware and was valid C++.

Apparently it's a holdover from the ancient times when some keyboards had limited symbols believe it or not. Again, I just liked it because coming from a non-C++ background it seems more readable. I'll change it

@jonahm-LANL or @mauneyc-LANL any ideas on what I'm doing wrong here?
/home/runner/work/singularity-eos/singularity-eos/singularity-eos/eos/singularity_eos.f90:410: undefined reference to `get_sg_eos'

I added the mass_frac_cutoff argument to the get_sg_eos() interface function both on the C++ side and the fortran side, and I'm adding an optional argument to the fortran interface. I can't for the life of me see where my mistake is and why the linker wouldn't be able to see get_sg_eos(). Any help is appreciated!

@jonahm-LANL or @mauneyc-LANL any ideas on what I'm doing wrong here?
/home/runner/work/singularity-eos/singularity-eos/singularity-eos/eos/singularity_eos.f90:410: undefined reference to `get_sg_eos'

I added the mass_frac_cutoff argument to the get_sg_eos() interface function both on the C++ side and the fortran side, and I'm adding an optional argument to the fortran interface. I can't for the life of me see where my mistake is and why the linker wouldn't be able to see get_sg_eos(). Any help is appreciated!

@dholladay00 with the fix. I forgot that the get_sg_eos() prototype exists in the singularity_eos.hpp header even though the function itself is defined the get_sg_eos.cpp file.

@mauneyc-LANL and @Yurlungur let me know if the most recent changes have addressed your comments. I think the new error_utils.hpp file needs a fresh review

I'm having trouble with one machine on our gitlab CI (network cloning issues... possibly proxy problems). Can one of you run the CI for me there? I think this is good to go otherwise.

I'm having trouble with one machine on our gitlab CI (network cloning issues... possibly proxy problems). Can one of you run the CI for me there? I think this is good to go otherwise.

Looks like it's passing on gitlab. Going to pull the trigger.


feat(datasource/dvid): add point annotation functions for DVID

This PR adds basic features for fetching, displaying and editing DVID bookmark annotations. It only involves changes in datasource/DVID, including:

Frontend DVIDAnnotationSource class for handling parameter parsing and point annotation creation. It will ask the user to specify in a user name to fetch annotations with a certain user tag. We do have more changes to handle annotations without tags by using multiscale chunks, but in this PR we decided to include tag-based annotation only.

Backend annotation fetching and parsing functions and DVIDAnnotationSource class designed for our own bookmark JSON format.

Helper functions in datasource/dvid/api.ts and datasource/dvid/utils.ts, including those for handling special properties in DVID bookmarks, which are instantiated the DVIDPointAnnotation class. The DVIDPointAnnotation class extends from Point to have additional properties. The helper functions will parse these additional properties and render annotations accordingly with our own shaders.

According to our testing, these changes do not affect any other functions in Neuroglancer if no DVID annotation layer is specified.

For the user-based tag, would it make sense to put that in the datasource URL so that you don't have to prompt for it?  It seems like having to enter it manually each time the browser refreshes may be undesirable.  Alternatively, it could be cookie based, but I'm not sure how convenient that would be.
Overriding the POINT rendering is kind of problematic since that does not work for the case where there are a mixture of DVID and non-DVID annotation layers.  The proper solution would probably be for an annotation source to support arbitrary per-annotation properties, with various supported types, and then allow defining a custom shader that sets the color based on those properties.  That would be a larger effort though.  Perhaps alternatively you could create a new annotation type?
It looks like currently every point annotation can be in one of 4 classes, meaning "default", "checked", "split", or "merge", and the goal is to display them with different colors/border colors?

The prompt box is a kind of temporary solution for authentication to be supported by DVID. We did have a version that stores the user name in cookies, but that requires some additional package (es-cookie) that supports cookies. We discarded this solution since we don't want to make any changes outside of dvid data source. Due to some future plan of DVID authentication,  if I understand correctly, @stephenplaza is against the idea of including the user name in the URL, which in fact was in the original implementation.
For our annotations, we have classes for "default", "split" and "merge". "checked" is an additional tag. We want to display them in distinguishable appearances, ideally with different shapes. But we only found ways to change colors without modifying code outside of dvid. We have designed the serialization and rendering overriding to be compatible with the default handlers. Therefore A non-DVID layer should also be displayed correctly. The additional attribute in DVID annotation serialization will be set to 0 for a non-DVID layer, making rendering behave the same as the default rendering does. But I agree that this creates some kind of coupling between these two parts, i.e. the compatibility might be broken if the default rendering is changed in the future.
Adding a new annotation type could be a better solution. Do you have any more suggestions on going this direction so that our implementation will not break any design principles in Neuroglancer ?

What other shapes would you like to use?  Currently the point annotations are drawn as squares (two triangles), and then the fragment shader just discards pixels outside the boundary of the circle, and chooses the center vs. edge color and handles the antialiasing.  So any other simple geometric shape wouldn't be too hard to draw instead using the same method.  How to fit that into the UI and the existing annotation model, though, is another matter.
In general because Neuroglancer does not yet support additional per-annotation attributes, we have used a workaround of having a separate layer per "class" --- e.g. one annotation layer for each of "default", "split", "merged".  That works okay if you have a small number of classes --- as then you can set a separate color for each layer, and rely on the existing layer visibility toggles to choose what to display, and your DVIDAnnotationSource could have an additional parameter that excludes all but a particular class.  That would also allow you to add annotations to a particular class --- as currently there would be no way to do that.  However, that solution may not be ideal for your use case, and with the additional "checked" bit it might be awkward to have 6 layers.

Yes, I understand the fragment shader part and actually played around with it in one of our hack branches. But I haven't found a way to write a new shader for DVID annotations without having to change the original code.
Using layers sounds like a good idea. But the number of classes might be more than what we have now in the future. BTW, if I use multiple layers for the same data, will the data be downloaded multiple times, or the chunks will be shared across the layers? What if I want to refresh annotations to get changes made by other programs? Currently I have to delete the old layer and create a new one. There must be a better way for that, but I haven't figured out how.

Regarding receiving updated data: this is kind of supported through Python
datasources, where it is possible from Python to invalidate the cache and
force all of the chunks to be reloaded.  In the ideal case, DVID itself
would support some protocol by which the client can subscribe to be
notified when something changes.  That might take some work to integrate,
though, since none of the existing data sources support such a thing.
Alternatively, if you want to control it externally (e.g. from the react
integration), you could just change the datasource URL (e.g. by adding some
parameter that is ignored) to force the data to be reloaded.  This would
have the downside that the existing data would not be displayed while it is
reloading.  There is also an existing "invalidateCache" mechanism (see
chunk_manager/frontend.ts) used by the Python datasource, which currently
has the same limitation that existing data is dropped from the cache before
the new data is downloaded, but it could be improved so that it doesn't do
that.
On Mon, Oct 28, 2019 at 9:02 AM tingzhao<EMAIL_ADDRESS>wrote:

Yes, I understand the fragment shader part and actually played around with
it in one of our hack branches. But I haven't found a way to write a new
shader for DVID annotations without having to change the original code.
Using layers sounds like a good idea. But the number of classes might be
more than what we have now in the future. BTW, if I use multiple layers for
the same data, will the data be downloaded multiple times, or the chunks
will be shared across the layers? What if I want to refresh annotations to
get changes made by other programs? Currently I have to delete the old
layer and create a new one. There must be a better way for that, but I
haven't figured out how.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/google/neuroglancer/pull/171?email_source=notifications&email_token=ABAEJ2SUSZJTUMVMGWLDPGTQQ4EIDA5CNFSM4JFFCKU2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECNNESI#issuecomment-547017289,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABAEJ2VCGKNQ6MM7FLWEKDTQQ4EIDANCNFSM4JFFCKUQ
.

As far as sharing the data for multiple layers --- the chunk data cache is
not directly tied to layers, so you can certainly share data.  However, for
the separate layers approach you would need the backend.ts code to perform
the filtering, i.e. creating annotation chunks that contain just the
annotations in a given class.  To download all classes as a single request,
and then split that into separate per-class chunks, you can use
GenericSharedDataSource, e.g. as in datasource/precomputed/backend.ts or
datasource/nifti/backend.ts.  That allows you to cache the result of
performing some request and use it to obtain the data for multiple other
chunks, in a way that integrates with the Neuroglancer caching system.
Regarding adding a new annotation type: taking another look at the existing
code I see that does involve some complications.  Probably the simplest and
most general thing would be to add support to the POINT annotation for
multiple markers and per-point colors, rather than just circles.  It sounds
like that would both solve your use case and would also be useful generally.

To support per-point colors, do I just add a color property to the Point class like
export interface Point extends AnnotationBase {   point: vec3;   type: AnnotationType.POINT;   color: vec3; }?
This seems conflict with the global color control widget.

You could represent the color with 4 bytes, the first 3 indicating the color as RGB, the remaining one set to 0 to indicate that the global color should be used, or otherwise set to 1.

To follow up on this, in order to support this and other use cases, I'm working on adding support for allowing an annotation source to specify an arbitrary set of additional properties that will be associated with each annotation, and allow custom shader code to determine such things as the color, size, etc. based on those properties.  Additionally, rather than a single set of associated segment ids, annotation sources  will be permitted to have multiple types of "relationships" (e.g. pre-synaptic, post-synaptic), and a set of segment ids per relationship.
I think that would avoid the need for any custom rendering code for DVID.

That's great! I'm looking forward to it!

It took a bit longer than expected, but I just pushed out the updated annotation support in Neuroglancer, including support for additional user-defined properties, custom shaders, much better spatial indexing support, and support for a precomputed annotation format.
I believe the custom property and custom shader support should address the custom rendering issues you raised in this pull request.
The UI support for user-defined properties is still a bit limited at the moment, though, and does not provide a way to modify them.
Let me know if you have any questions or issues.

Thank you! I'll have a try.

@jbms Do you have any instructions about defining a custom shader for the new properties field in AnnotationBase, or any example in the current code? (Sorry to bother you about that. It is hard for me to find time to figure it out by myself as we're rushing to the data release.)

There is documentation here:
https://github.com/google/neuroglancer/blob/master/src/neuroglancer/annotation/rendering.md
Suppose there is a float32 property score:
#uicontrol vec3 preColor color(default="red")
#uicontrol vec3 postColor color(default="blue")
#uicontrol float scorethr slider(min=0, max=1000)

void main() {
  setColor(defaultColor());
  setEndpointMarkerColor(
    vec4(preColor, 0.5),
    vec4(postColor, 0.5));
  setEndpointMarkerSize(5.0, 5.0);
  setLineWidth(2.0);
  if (prop_score()<scorethr) discard;
}

Thanks! Where should I specify the property name such as prop_score? I saw that AnnotationPropertySpec can be used to define the type of a property, but couldn't find how to give a name to a property so that it can be used in the shader.

You pass the list of properties to the constructor of MultiscaleAnnotationSource:
https://github.com/google/neuroglancer/blob/fed15a96fb2e0b91670cd10fa28923f2a0f33a8a/src/neuroglancer/datasource/precomputed/frontend.ts#L252

I got stuck at
https://github.com/google/neuroglancer/blob/fed15a96fb2e0b91670cd10fa28923f2a0f33a8a/src/neuroglancer/annotation/frontend_source.ts#L239
The DataView constructor rejected to take serializedAnnotations.data as its parameter. So I changed it to:
const dv = new DataView(serializedAnnotations.data.buffer);
It seemed solve the problem.

Thanks --- your fix is correct.  I see that there are a few other bugs related to modifying annotations that I'm working on fixing right now --- hopefully will be done in a few hours.

Thanks! I'm using AnnotationGeometryChunkSource with only one resolution level for handling point annotations in DVID. One rendering behavior confusing me is that when I zoom out the slice view, the annotations start disappearing in a certain order until all of them are gone. They will appear again if I zoom in. It's likely caused by something wrong in my code, but if you happen to know or be able to guess the reason, it will be great!

Regarding the zooming out issue, there are a few things going on:
When using the spatial index, Neuroglancer automatically displays only a subsample of the annotations in order to limit the maximum density of displayed annotations per screen pixel.  This happens for both the cross-section and 3d projection views, and is controlled by the "Spacing" setting in the "Annotations" tab.  The AnnotationGeometryChunkSource specifies a limit value in the AnnotationGeometryChunkSpecification.  If limit is set to too high a value, though, subsampling will occur prematurely.  If you specify a limit of 1, that indicates a very low density and Neuroglancer won't perform any subsampling.
In general the way annotations are displayed was designed assuming a multi-level source.  If you only have a single-level source, then as you zoom out in either the cross section or 3d projection view, the view frustrum covers a larger and larger area, and the amount of data required increases until all chunks are required.  Note that even in the cross-section view, as you zoom out the depth range within which annotations are displayed also increases by default, but you can control this by unchecking "Zoom-relative" and/or manually adjusting the depth range.
In general, I'm not sure what the best solution is, though.


feat: permissions request at Android 13

Fix next problems with requesting permission to access photo library at Android >= 13

Error message during build.

[stderr] /home/expo/workingdir/build/node_modules/react-native-image-crop-picker/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java:406: error: cannot find symbol
[stderr] permissionsCheck(activity, promise, Collections.singletonList(Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU ? Manifest.permission.WRITE_EXTERNAL_STORAGE : Manifest.permission.READ_MEDIA_IMAGES), new Callable<Void>() {
[stderr]                                                                                ^
[stderr]   symbol:   variable TIRAMISU
[stderr]   location: class VERSION_CODES

Error in runtime "Required Permissions Missing" when calling ImagePicker.openPicker

this can be solved adding permissions on app.config https://docs.expo.dev/versions/latest/config/app/#permissions


Fix Copy-SqlLogin requiring SA

Fixes #157
Changes proposed in this pull request:

Formatting changes around braces (vast majority of the changes) via \n\s+{ replaced with  {
Switching invoke of Connect-SqlServer to Connect-DbaSqlServer which does not assume you need SA

How to test this code:

Create  a security admin on both boxes.

CREATE LOGIN [securityadmintest] WITH PASSWORD=N'STRONGPASSWORDHERE=', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
ALTER SERVER ROLE [securityadmin] ADD MEMBER [securityadmintest]
GO

Invoke Copy-SqlLogin with both source and destination credentials.
Copy-SqlLogin -Source sql2014 -Destination sql2016 -SourceSqlCredential $(get-credential) -DestinationSqlCredential $(get-credential)

Has been tested on minimum requirements:

[ ]  Powershell 3
[ ]  Windows 7
[ ]  SQL Server 2000

Has been tested on maximum requirements:

[ ]  SQL Server vNext
[X]  Windows 10
[ ]  Azure Database

Tests for tester:

[ ] Working/useful help content, including link to command on dbatools web site
[ ] All examples work as advertised
[ ] Does not contain template content
[ ] Does not contain excessive/unnecessary amounts of comments
[ ] Works remotely
[ ] Works locally
[ ] Works on lower versions or throws error specifying version not supported
[ ] Works with named instances
[ ] Works with clustered instances
[ ] Handles offline/read only databases
[ ] Supports multiple servers (at the command line or piped from Get-SqlRegisteredServerName)
[ ] No un-handled errors which stop the command working with multiple servers

Hey Ck, Thank you! I love that everyone is on a roll! This solution does solve the problem but ultimately, Connect-DbaSqlServer shouldn't be used internally because it's a little different. You can pass -RegularUser to Connect-SqlServer, however, and that will work!

Roger that, will switch it up.

Bon, merci!


Revert "Merge branches 'master' and 'master' of github.com:flutter/fl…

…utter into timsneath-precache2"
This reverts commit 67ab890b60fc5b9edbb5304d6e83d4fb242b753f, reversing
changes made to eb0b17902876f1a75eb7180c0b9f3571efb312b8.
Description
Replace this paragraph with a description of what this PR is doing. If you're modifying existing behavior, describe the existing behavior, how this PR is changing it, and what motivated the change. If you're changing visual properties, consider including before/after screenshots (and runnable code snippets to reproduce them).
Related Issues
Replace this paragraph with a list of issues related to this PR from our issue database. Indicate, which of these issues are resolved or fixed by this PR.
Tests
I added the following tests:
Replace this with a list of the tests that you added as part of this PR. A change in behaviour with no test covering it
will likely get reverted accidentally sooner or later. PRs must include tests for all changed/updated/fixed behaviors. See Test Coverage.
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[ ] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ] I signed the CLA.
[ ] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] All existing and new tests are passing.
[ ] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[ ] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (Please read Handling breaking changes). Replace this with a link to the e-mail where you asked for input on this proposed change.
[ ] No, this is not a breaking change.

Landing now since the revert is trivial


[Docs] Update docs for configuring logs at runtime.

Notes for Reviewers
This PR fixes #
Signed commits

[ ] Yes, I signed my commits.

🚀 Preview for commit 7031efb19a87f777240e6c281d2e33cb89401ba6 at: https://65953576392796867974fb8d--meshery-docs-preview.netlify.app

// @leecalcote


Disabling security plugin - Kibana anonymous_auth_enabled

When temp disabling security plugin the following message pops up when accessing kibana. The message suggests to enable anonymous_auth_enabled.

We've set the following configs:
elasticsearch.yml
opendistro_security.disabled: true

kibana.yml
opendistro_security.auth.anonymous_auth_enabled: true

opendistro security config.yml
imported using securityadmin.sh before opendistro_security.disabled: true was set
...
  dynamic:
...
    http:
      anonymous_auth_enabled: true
...

The error remains.
Maybe the docu also needs additional details: https://opendistro.github.io/for-elasticsearch-docs/docs/security-configuration/disable/. Only opendistro_security.disabled: true is mentioned there. For kibana the docu states, that the plugin needs to be uninstalled. But this doesn't seem to be consistent with the error message (and also the kibana config opendistro_security.auth.anonymous_auth_enabled ) which suggests the anonymous auth can be configured in kibana.
Regards
Andreas

This will be useful especially with local docker setup, to avoid creation of custom image.
So this options should be read from environment variables

anonymous_auth_enabled is a part of security plugin. With disabling security plugin, anonymous authentication does not work. Please check the OpenSearch doc


Livedemo appears to be nonfunctional

Javascript console upon upload shows:
configurator.js:131 Uncaught TypeError: Cannot read property 'undefined' of undefined
    at configurator.js:131
    at lodash.min.js:26
    at _t (lodash.min.js:14)
    at lodash.min.js:25
    at Function.<anonymous> (lodash.min.js:30)
    at FileReader.reader.onload (configurator.js:130)
(anonymous) @ configurator.js:131
(anonymous) @ lodash.min.js:26
_t @ lodash.min.js:14
(anonymous) @ lodash.min.js:25
(anonymous) @ lodash.min.js:30
reader.onload @ configurator.js:130
FileReader (async)
(anonymous) @ configurator.js:142
(anonymous) @ lodash.min.js:25
(anonymous) @ lodash.min.js:30
load_config @ configurator.js:119
dispatch @ jquery-1.11.3.min.js:4
r.handle @ jquery-1.11.3.min.js:4

The basic functionality seems to be working for me at the moment.
When you say "upon upload" do you mean if you upload your own configuration?  If so could you send me the configuration?  Which version of clang-format did you make the config for?  I may not have updated recently enough.

When you say "upon upload" do you mean if you upload your own configuration?

Yep
.clang-format.txt
Also, before hand the left pane is completely blank:

IIRC there was supposed to be something on the left by default.
Attempting to save with nothing also results in javascript error on the console though perhaps that's expected?:
configurator.js:161 Uncaught TypeError: Cannot read property 'undefined' of undefined
    at get_config (configurator.js:161)
    at save_config (configurator.js:148)
    at HTMLButtonElement.<anonymous> (configurator.js:79)
    at HTMLButtonElement.dispatch (jquery-1.11.3.min.js:4)
    at HTMLButtonElement.r.handle (jquery-1.11.3.min.js:4)
get_config @ configurator.js:161
save_config @ configurator.js:148
(anonymous) @ configurator.js:79
dispatch @ jquery-1.11.3.min.js:4
r.handle @ jquery-1.11.3.min.js:4

Using that .clang-format.txt isn't producing javascript errors for me.  Are there network errors visible in your browser?

No visible network errors. All network requests appear to be 200.
Hard reload, and clearing cache for url has no effect.
Problem also exists on firefox, but message is different:
TypeError: clang_version is undefined
[Learn More]
configurator.js:131:9
load_config/</reader.onload/<
https://zed0.co.uk/clang-format-configurator/configurator.js:131:9
Zt/<
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js:26:23
_t
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js:14:392
Vt/<
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js:25:369
ur/<
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js:30:73
load_config/</reader.onload

I don't see anythin in the left window.
When clicking update I get:
TypeError: version is undefined
[Weitere Informationen]
configurator.js:161:2
get_config
https://zed0.co.uk/clang-format-configurator/configurator.js:161:2
request_update
https://zed0.co.uk/clang-format-configurator/configurator.js:91:19
<anonym>
https://zed0.co.uk/clang-format-configurator/configurator.js:76:3
dispatch
https://code.jquery.com/jquery-1.11.3.min.js:4:8497
add/r.handle
https://code.jquery.com/jquery-1.11.3.min.js:4:5235

Can you confirm that it is actually making a request to https://zed0.co.uk:2001/doc?

When I tried to open that URL in FF, I got a message that my (corporate) proxy blocked that request.
I assume it's because of the unusal port (2001).

That will be the issue.  I'll have a look at making some modifications so that it can all be served through 443.  I'm fairly pressed for time though so it might take me some time.

For me it just hangs while connecting, but may be a similar issue.

@catskul thanks, I've just fixed that.  Could have sworn I did that a few days ago.
In future please create a separate issue, thanks.

Everything should now be served on the default https port.  Let me know if you have any more difficulties.

Just confirmed it works behind my corporate proxy.
Thanks!