feat: allow consumer to set tag for CircleCI images

This feature is modeled after https://github.com/CircleCI-Public/shellcheck-orb/blob/master/src/jobs/check.yml#L7 .
I'm attempting to author an Orb within my company's CircleCI Server v3 instance.  We have imported the orbs published under the circleci/* namespace. When using the jobs defined in this Orb, I'm getting the following error message at the checkout step:
Using SSH Config Dir '/home/circleci/.ssh'
git version 2.38.0
Cloning git repository
Cloning into '.'...
error: cannot create async thread: Operation not permitted
fatal: fetch-pack: unable to fork off sideband demultiplexer

exit status 128
CircleCI received exit code 128

I'd like this feature as a work-around to the potential underlying issue described here. The workaround is to use an Alpine or Ubuntu 21.04 based image.

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/circleci/orb-tools?version=dev:faeb34c3272eda2814f0c61a33bb41cf1c23e0b9

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/circleci/orb-tools?version=dev:77d207d38f3907fb5ffeca96cef61cd4b0c439c0

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/circleci/orb-tools?version=dev:b21ac739a57580616ea10cab6c8bf0cf28fbeadc

Your development orb has been published. It will expire in 30 days.
You can preview what this will look like on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/circleci/orb-tools?version=dev:b21ac739a57580616ea10cab6c8bf0cf28fbeadc

Your orb has been published to the CircleCI Orb Registry.
You can view your published orb on the CircleCI Orb Registry at the following link:
https://circleci.com/developer/orbs/orb/circleci/orb-tools?version=11.5.0

Thanks for getting this pushed through!


lt Selector Feature Request

GoQuery doesn't currently support the jQuery lt selector which would be a nice feature to see.
Here is a stack overflow question explaining this feature in detail:
http://stackoverflow.com/questions/14005796/jquery-limit-element-query-results

Hello Ari,
The selector string is the domain of Cascadia, the (awesome) selector engine used by goquery. It would be a request on that repo to add that feature (though I'm not sure the author is interested in adding non-standard CSS features).
However, note that goquery does support Slice, so the second stack overflow solution can be done with goquery.
Hope this helps,
Martin


[Documentation]: Crashing is not defined in several test cases

Describe the bug
Crashing is a criteria in several test cases, but it is not defined what is a crash.
Test cases are:

Test if the CNF crashes when network latency occurs
Test if the CNF crashes when disk fill occurs
Test if the CNF crashes when pod delete occurs
Test if the CNF crashes when pod memory hog occurs
Test if the CNF crashes when pod io stress occurs
Test if the CNF crashes when pod network corruption occurs
Test if the CNF crashes when pod network duplication occurs

To Reproduce
Steps to reproduce the behavior:

Go to https://github.com/cncf/cnf-testsuite/blob/main/USAGE.md
Read descriptions
See error

Expected behavior
A clear definition what crash is.
Screenshots
N/A
Device (please complete the following information):

All

Many of these testes are resiliency tests driven by the Litmus Chaos test experiments.  The usage guide has drop downs with provides some information.  There are links to the experiments which provide additional details on what is being tested.
At the moment the test suite is not checking that an application functions with e2e tests.  What is expected is that the readiness and liveness probes will be successful after a chaos experiment ends.

"What is expected is that the readiness and liveness probes will be successful after a chaos experiment ends." maybe this should be explained in the description.

"What is expected is that the readiness and liveness probes will be successful after a chaos experiment ends." maybe this should be explained in the description.

Agree, current documentation has only one usage of "crash" in that ambiguous meaning, but litmus chaos tests mostly use "should continue to function", which is not much clearer.


Twitter verification problem.

In the fact i try to make the verification of my twitter profil but all the time the verifaction process for the Twitter going wrong. Is the reason why i write right there to have possibility to make the verification of my profil : https://twitter.com/ASiegfrid

It’s not a Keybase problem. Your tweets are private. Keybase cannot see it.

Hello,
It's appreciated to have your reply.
I will made my profile unprivate this can help keybase and other platform's to have access on it easily ...
Also thank you for the new information.
This one help me so much.
Best  regards.
AMOUSSOU Eyadelin Arnold Siegfrid
De: @.***
Envoyé: 23 novembre 2022 04:09
À: @.***
Répondre à: @.***
Cc: @.; @.
Objet: Re: [keybase/client] Twitter verification problem. (Issue #25255)
It’s not a Keybase problem. Your tweets are private. Keybase cannot see it.
—
Reply to this email directly, view it on GitHubhttps://github.com/keybase/client/issues/25255#issuecomment-1324491213, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AWK26FX3PNR2PKWUXBFH4FTWJWDFZANCNFSM6AAAAAAR4MPRC4.
You are receiving this because you authored the thread.Message ID: @.***>


Added Flink 1.4.2.

Diffing File config.json:

Diffing File marathon.json.mustache:

Diffing File package.json:
5c5
<     "version": "1.4.1.-1",
---
>     "version": "1.4.2-1.0",

Diffing File resource.json:
5c5
<         "flink": "mesosphere/dcos-flink:1.4.1-1.0",
---
>         "flink": "mesosphere/dcos-flink:1.4.2-1.0",```

+1


As a user, I want the calculated field on the Budgets, Expenses & Payments form to update dynamically, so that I can see what effect my data entry has on calculations immediately

Description:
On the Budgets, Expenses & Payments form, when Additional Funding Source(s) and Amount(s) are added, it impacts the calculated value of the following fields:

Total Project Value
Proponent's Share Percentage

However, the changes in value of the above fields are only reflected on the front-end after the revision is submitted. We want to display the changes immediately to the users before they submit the revision.
Acceptance Criteria:
Given I am a user filling out the Budgets, Expenses & Payments form
When I update any of the values used to calculate the Total Project Value field and the Proponent's Share Percentage field
Then the calculation updates immediately
Development Checklist:

[ ] The computed column should take a form_change as an argument (not a project revision or a record from any other table). If the computed column is on something other than form_change, deprecate it and make a new computed column called form_change_[computed column name].
[ ] Update/rewrite the calculation so that it calculates the value based on the most recent form change
[ ] Update the graphql query and form on the front-end to use the new computed column (skip this step if the column is just revised, not new)
[ ] Example of a computed column that correctly uses form_change: computed_columns/form_change_calculated_net_amount_this_milestone.sql
[ ] Example of a PR that converts a computed column on project_revision into one that takes form_change: https://github.com/bcgov/cas-cif/pull/1389/files#diff-2aa18f386b9662410b092bb8ff4c196167e59099c55fa48036bb99c69d21502f
[ ] Meets the DOD

Definition of Ready (Note: If any of these points are not applicable, mark N/A)

[ ] User story is included
[ ] User role and type are identified
[ ] Acceptance criteria are included
[ ] Wireframes are included (if required)
[ ] Design / Solution is accepted by Product Owner
[ ] Dependencies are identified (technical, business, regulatory/policy)
[ ] Story has been estimated (under 13 pts)

·Definition of Done (Note: If any of these points are not applicable, mark N/A)

[ ] Acceptance criteria are tested by the CI pipeline
[ ] UI meets accessibility requirements
[ ] Configuration changes are documented, documentation and designs are updated
[ ] Passes code peer-review
[ ] Passes QA of Acceptance Criteria with verification in Dev and Test
[ ] Ticket is ready to be merged to main branch
[ ] Can be demoed in Sprint Review
[ ] Bugs or future work cards are identified and created
[ ] Reviewed and approved by Product Owner

Notes:

Thanks for open the issue, @BCerki! - I've added in details to both ticket title and description with previous discussions in Teams and Miro copied over below.
@LindsayMacfarlane's comment: We should probably have a standard approach to this. It would be good to get dev perspective on this one. My assumption would be that nothing should auto calculate until submitted.
@nanyangpro's comment: I strongly agree with Lindsay on having a standard approach, but have the opposite assumption in terms of displaying updates for the calculated fields. I'm open to either approach which makes the most sense, your perspectives would be appreciated.
@BCerki's comment: I believe we decided to go with immediate autocalculation because otherwise we end up with bugs related to out-of-date information.

Hi @BCerki - I re-tested the issue as described in the ticket after the debrief session (Mon, Feb 27) with @LindsayMacfarlane, and realized that the Total Project Value and Proponent's Share Percentage fields are auto-updated based on the Additional Funding Status. I'll close this ticket confirming there's no correction needed here.
On another note, I noticed that the updates for the impacted fields aren't showing up on the diff page, only the ones that are mannually updated by users are there. Are we intentionally doing so? If yes, why? If no, should we create a ticket addressing it? @BCerki, @dleard


Slow on some large repo

@wezm reported that even --dry-run takes more than 2 mins.

It uses commit-tree to check whether the branch is squash-merged or not, and it'll launch a subprocess using std::process::Command for every branch in the repository so it'll be slower on windows.

Yes I see git processes in top like this:
git rev-list --cherry-pick --right-only --no-merges -n1 refs/remotes/origin/master...add-rust-crate-to-build

Would you let me know how big is your repository and how many branches do your repository have? (git rev-list --all --count, git branch --all | wc?)

$ git rev-list --all --count
12729
$ git branch --all | wc -l
188

What is your OS?

Arch Linux. ext4 file system on Samsung 970 EVO, M.2 NVMe drive.

Can you tell which operations seem slow if you might be able to see the speed of log with RUST_LOG=trace?

Here's some log output showing the git rev-list commands taking several seconds each to complete:
[2020-02-17T06:32:26Z DEBUG git_trim] Branch: Some("add-rust-crate-to-build")
[2020-02-17T06:32:26Z INFO  git_trim] > git rev-list --cherry-pick --right-only --no-merges -n1 refs/remotes/origin/master...add-rust-crate-to-build
[2020-02-17T06:32:33Z TRACE git_trim] merged: true
[2020-02-17T06:32:33Z TRACE git_trim] fetch: None
[2020-02-17T06:32:33Z TRACE git_trim] push: None
[2020-02-17T06:32:33Z DEBUG git_trim] merged local: the branch is merged, and deleted
[2020-02-17T06:32:33Z DEBUG git_trim] Branch: Some("adrianwong/fixme")
[2020-02-17T06:32:33Z INFO  git_trim] > git rev-list --cherry-pick --right-only --no-merges -n1 refs/remotes/origin/master...adrianwong/fixme
[2020-02-17T06:32:41Z INFO  git_trim] > git merge-base refs/remotes/origin/master adrianwong/fixme
[2020-02-17T06:32:41Z INFO  git_trim] > git rev-parse adrianwong/fixme^{tree}
[2020-02-17T06:32:41Z INFO  git_trim] > git commit-tree 36ab06f101c06c71d5d2331523141dfaf496b864 -p bfa729e534eaaf1de1a6955e3f3fd539d5a0e117 -m git-trim: squash merge test
[2020-02-17T06:32:41Z INFO  git_trim] > git rev-list --cherry-pick --right-only --no-merges -n1 refs/remotes/origin/master...352caceafb120e753cf328c0dc9e1081dd044a86
[2020-02-17T06:32:41Z TRACE git_trim] merged: false
[2020-02-17T06:32:41Z TRACE git_trim] fetch: None
[2020-02-17T06:32:41Z TRACE git_trim] push: None
[2020-02-17T06:32:41Z DEBUG git_trim] gone local: the branch is not merged but gone somehow

Great thanks for the reporting the numbers!
188 branches are a way bigger than my expectations. Also, I was amazed that the {no-ff,rebase} merge test takes much more than the squash merge test. I was worried about whether it makes the overall process slower. However, in my quick test, the squash merge couldn't replace the other merge test. Existing tests fail when I just replace {no-ff,rebase} merge test to just squash merge test.
The core logic is basically
for LOCAL in $(git branch); do
	if [ "$(git rev-list --options $BASE...$LOCAL)" == "" ]; then
		MERGED=1
    elif [ squash merge test ]; then
        MERGED=1
    fi
done

So the total time is proportional to the number of local branches and the time to git rev-list. I assume that these branches are very deviated from the base branch so it takes much time to compare.
I'll prepare some stress test suites. I cannot guarantee that it'll come out with the best result this time. Just branch filtering with glob and branch age and time-out would be my best.
Thank you!

I could cache some commits where we confirmed that the branch haven't merged into the base for.
<branch name>:<base remote ref>:<last confirmed commit>
...

Some psuedo code:
for entry@(branch, remote_ref, commit) in entries {
  if commit is not a ancestry of remote_ref {
     ditch the cache entry
  }
  let result = if the cache entry exist {
    git rev-list $OPTIONS base...branch --not remote_ref
  } else {
    git rev-list $OPTIONS base...branch
  }
  if result.is_partially_merged() or result.is_gone() {
    ditch the cache entry
  } else {
    update the cache entry to the base head.
  }

I'm not confident that it stops to walk ancestry above the remote_ref.

The 188 branches are why I need git-trim! 😅 With ~10 developers working on the code base the branches add up over time. I imagine the run time will get better after actually cleaning up some of the old branches.
Thanks very much for looking into this and your efforts so far.

FWIW/btw: I am using the following zsh function currently for cleaning things, but want to try git-trim additionally/instead:
https://github.com/blueyed/oh-my-zsh/blob/eaf02fd706fe6942150606388783ec762de1ebf0/plugins/git/git.plugin.zsh#L233-L403
It might help to pick some ideas, i.e. there is also some caching, but the algo/method might be different in itself already.

@wezm Thank you very much for looking into this. You've encouraged me very much and helpful!
@blueyed Thank you very much. I'll carefully look into it.

@wezm I've quickly tested with https://github.com/git/git/ repo.
Although it doesn't have much branches, I could make rev-list slow enough to experiment with some various flags.
 I'll pick MERGE_BASE: 4096, FORK=256 for further experiments. Time to execute git merge-base master tmp was 0.39 for it. it is 4~5 times fasster
git docs  (https://git-scm.com/docs/git-rev-list)  says git rev-list A..B is equivalent to git rev-list A B --not $(git merge-base A B). However the execution time is different.
> /usr/bin/time --format "%e" git rev-list --cherry-pick --right-only --no-merges refs/remotes/origin/master...tmp > /dev/null
1.71

> /usr/bin/time --format "%e" git rev-list --cherry-pick --right-only --no-merges refs/remotes/origin/master tmp --not $(git merge-base refs/remote/origin/master tmp) > /dev/null
0.37

/usr/bin/time --format "%e" git cherry refs/remotes/origin/master tmp > /dev/null
1.70

It is weird that manually giving merge-base is much fatster.

@blueyed I've looked into your code. It gave me ideas to pick. I'll try git branch --merged and git branch --no-merged first to reduce minimum time. They seems to be faster when there is large fork.
Also replacing current rev-list based merge check with your merge-tree based one seem to pass my test cases. I'll put more scenarios in my test and try to replace it.
Can you elaborate how this code section works? https://github.com/blueyed/oh-my-zsh/blob/eaf02fd706fe6942150606388783ec762de1ebf0/plugins/git/git.plugin.zsh#L320-L337 I think it looks like that it checks whether a branch is squash merged, but the comment says it checks cherry-picks.

I've applied various possible optimizations.
I parallelized the test by explicitly set current working directory https://github.com/foriequal0/git-trim/pull/26
I filtered no-ff style merges first https://github.com/foriequal0/git-trim/pull/27 thanks @blueyed
I parallelized the classification with some (spooky 👻) unsafe Send + Sync coersion https://github.com/foriequal0/git-trim/pull/28
I'm not an expert in libgit2 and rust unsafe, so I need your reviews!

I've released v0.2.1! I hope this release improves the performances on large repo!

Thanks @foriequal0 it is quite a bit faster now and puts all available CPU threads to good use!

@wezm Thanks! That's great to hear that! Let me know if there any problems anytime.

I can close this issue for now.


[Event Change Request] Table 5407 - Prod. Order Component - OnBeforeAutoReserve

Dear ALAppExtensions team,
Through this issue we would like to request event publisher OnBeforeAutoReserve in Table 5407 "Prod. Order Component" to be extended with the following parameter:

    procedure AutoReserve()
    var
        Item: Record Item;
        FullAutoReservation: Boolean;
        IsHandled: Boolean;  // << IsHandled variable added
    begin
        if Status in [Status::Simulated, Status::Finished] then
            exit;

        TestField("Item No.");
        Item.Get("Item No.");
        IsHandled := false;   // << IsHandled variable set to false
        OnBeforeAutoReserve(Item, Rec, IsHandled); // << IsHandled parameter added
        if not IsHandled then begin // << IsHandled implementation (to ensure OnAfterAutoReserve is triggerd)
            if Item.Reserve <> Item.Reserve::Always then
                exit;

            if "Remaining Qty. (Base)" <> 0 then begin
                TestField("Due Date");
                ReservMgt.SetReservSource(Rec);
                ReservMgt.AutoReserve(FullAutoReservation, '', "Due Date", "Remaining Quantity", "Remaining Qty. (Base)");
                CalcFields("Reserved Quantity", "Reserved Qty. (Base)");
                Find();
                if not FullAutoReservation and
                (CurrFieldNo <> 0)
                then
                    if Confirm(Text99000009, true) then begin
                        Commit();
                        ShowReservation();
                        Find();
                    end;
            end;
        end; // << IsHandled implementation

        OnAfterAutoReserve(Item, Rec);
    end;

Additional context
The IsHandled parameter should be added as it is also available in other tables wich uses reservations (e.g. SalesLine, AssemblyLine etc.).  We want to stop the reservation in some cases.

Hello @tvwijk
In the procedure AutoReserve (codeunit Reservation Management) you already have an event OnBeforeAutoReserve with IsHandled pattern, which you can use to stop auto reserve.

Hi @AleksandricMarko ,
Thats correct, for now I can handle it the way you proposed but it would be more consistent (with service, sales) if the isHandled pattern is also implemented here.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 13270.


[charred] add support for charred

README can also be adapted

I moved charred up, should I change the wording or something anywhere?

Oh sorry, I missed that


Add option to compare two files (enhancement)

It would be useful to have an option on the Search menu 'Compare files'

Sorry, although useful, we're not going to implement this because there are better tools for the job (e.g. kdiff3).
Probably in the future, if we gain git support.

pycharm has file-compare built-in.
I'd rather see it in spyder.

Yeah,I hope this func also,haha

I also hope this would be usefull

Comparison tools are essential for IDEs so that users do not have to open other windows.


Code-128 CODE-C Barcode Support

@dilucide  based on the review of this doc: https://reference.epson-biz.com/modules/ref_escpos/index.php?content_id=128
It looks like CODE-C should support alpha characters in addition to numeric, is there a reason that your PR had a validator that only allowed numerics?

If you look at ISO 15417 (or the table in the aforementioned reference under heading [Notes for CODE128 (m = 73) process]) you'll see that Code Set C encodes the digits as BCD, thus per byte two numerals are encoded. In contrast to Code Sets A and B, Code Set C does not support alphanumeric characters. This is why you cannot have a content length that is not divisible by two.
For clarification: If you wanted to encode the numerals 12345678, these would be encoded as 0x3132333435363738 using Code Set A or B in contrast to Code Set C in which 0x12345678 would be encoded.

Regarding your comment on the PR: Do you still want me to update to explicit block syntax and add a comment? I've downloaded the files I found to be problematic directly from GitHub and found them to have consistent line endings. Where did you notice additional issues?

No worries, I just pushed a new version with the more explicit block syntax.  As for the newlines, I think this was my error and that these were introduced by previous PRs, and your PR fixed them.  I just saw the line ending changes in the PR and thought that it was yours but I think yours was correcting other PRs.
I've done a few refactors on the code, could you pull master and make sure I didn't break it?  If it's still working I'll push this new release to Nuget.

The master looks fine.
I've just noticed an error that is persistent pre-refactor and post-refactor, though: The FilePrinter does not support creating a file, but you take this as a prerequisite in the large byte array test. A simple fix would be to change FileMode.Open to FileMode.OpenOrCreate in Line 14 in FilePrinter.cs of ESCPOS_NET.ConsoleTest.

And there is an oversight on my part in TestBarcodeTypes.cs in Line 23: As a result of what can only be a typo, the test string for CODE128 Code Set C is not of even length.

@dilucide  The FilePrinter is used on unix-like OSes because the serial port is exposed as a file:
                else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                {
                    Console.Write("File / virtual com path (eg. /dev/usb/lp0): ");
                    comPort = Console.ReadLine();
                    if (string.IsNullOrWhiteSpace(comPort))
                    {
                        comPort = "/dev/usb/lp0";
                    }
                    printer = new FilePrinter(filePath: comPort);
                }

In that case we probably don't want to create the file if it doesn't exist.  I went ahead and added a default-false boolean called createIfNotExists that will call OpenOrCreate to support that, and used it in the FilePrinter test.  Let me know if you have any other thoughts on that implementation, I'm going to go ahead and close this issue.
The TestBarcodeTypes typo was resolved by a separate PR @paul-turner-github  opened #65 that has been merged.


Switch to yarn instead of npm

Try switching to yarn instead of npm.
This solves https://github.com/mads-hartmann/bash-language-server/issues/20

@skovhus Thanks!


wip upgrade tests

Wow, thanks @hexfusion This was on the back of my mind, Iet me know if you need any help with this.
I was thinking of creating a local registry in kind. We could deploy and expose this image on a port: https://hub.docker.com/_/registry
In that way we could push our bootc images there, and the running agent VM could access that registry. I believe it also involves setting the images to accept insecure registries (to avoid all the TLS pfff).


add set branch step

This step is necessary in order to be able to checkout the correct branch from discovery-client when running in the internal CI runners.
Also, moved from managed runner to run on self hosted runner.
Issue: None

Summary by CodeRabbit

New Features

Introduced a new input parameter for the CI workflow to specify the branch name.
Added an output variable to enhance the workflow's capability in identifying the branch being used.

These updates improve the flexibility and clarity of the CI process, ensuring better handling of branch-specific operations.

Thanks @elada-lb, makes sense to me


LDAP test against Active Directory

Test ldap against samba running in docker container pretending to be AD
domain controller. It looks and acts very much like a regular AD LDAP server.
Also add ldaptive properties for ldap specific truststore used to
trust certs if using ldaps or starttls

If I am not mistaken, these tests show is that the enhanceWithEntryResolver=true property is not doing what is supposed to do with the UnboundID provider. The ActiveDirectoryBindDnSSLLdapAuthenticationHandlerTests test is using SSL and UnboundID but it will fail with:
errorMessage='Unable to parse string<EMAIL_ADDRESS>as a DN because it does not have an equal sign after RDN attribute<EMAIL_ADDRESS>
<authenticate response=[org.ldaptive.auth.AuthenticationHandlerResponse@2020883928::connection=[org.ldaptive.DefaultConnectionFactory$DefaultConnection@1284161223::config=[org.ldaptive.ConnectionConfig@1298780808::ldapUrl=ldap://localhost:10636, connectTimeout=PT5S, responseTimeout=PT5S, sslConfig=[org.ldaptive.ssl.SslConfig@1131577797::credentialConfig=[org.ldaptive.ssl.KeyStoreCredentialConfig@397828864::trustStore=file:/tmp/adcacerts.jks, trustStoreType=JKS, trustStoreAliases=null, keyStore=null, keyStoreType=null, keyStoreAliases=null], trustManagers=null, hostnameVerifier=org.ldaptive.ssl.AllowAnyHostnameVerifier@787178b1, hostnameVerifierConfig=null, enabledCipherSuites=null, enabledProtocols=null, handshakeCompletedListeners=null], useSSL=true, useStartTLS=false, connectionInitializer=[org.ldaptive.BindConnectionInitializer<EMAIL_ADDRESS>bindSaslConfig=null, bindControls=null], connectionStrategy=org.ldaptive.DefaultConnectionStrategy@27da994b], providerConnectionFactory=[org.ldaptive.provider.unboundid.UnboundIDConnectionFactory@1173504479::metadata=[ldapUrl=ldap://localhost:10636, count=1], providerConfig=[org.ldaptive.provider.unboundid.UnboundIDProviderConfig@255259469::operationExceptionResultCodes=[SERVER_DOWN], properties={}, controlProcessor=org.ldaptive.provider.ControlProcessor@72e36677, connectionOptions=null, socketFactory=null, sslSocketFactory=null, searchIgnoreResultCodes=[TIME_LIMIT_EXCEEDED, SIZE_LIMIT_EXCEEDED, REFERRAL]]], providerConnection=org.ldaptive.provider.unboundid.UnboundIDConnection@6b86826a], result=false, resultCode=INVALID_DN_SYNTAX, message=LDAPException(resultCode=34 (invalid DN syntax), errorMessage='Unable to parse string<EMAIL_ADDRESS>as a DN because it does not have an equal sign after RDN attribute<EMAIL_ADDRESS>ldapSDKVersion=4.0.9, revision=29290), controls=null] for<EMAIL_ADDRESS>with request=[org.ldaptive.auth.AuthenticationRequest@407254816::user=[org.ldaptive.auth.User@1693375960::identifier=admin, context=null], returnAttributes=[sAMAccountName, cn], controls=null]>

The ActiveDirectoryBindDnLdapAuthenticationHandlerTests test works because it is using the JndiProvider but that is not using LDAPS or startTLS due to the JDK-8217606 bug.
That leaves users of Active Directory that login via sAMAccountName in a bind of not being able to use encryption (which could be required by the DC) unless I am missing some configuration that would work with UnboundID. (That is certainly possible, I just know the config that was working for me with JndiProvider doesn't work as-is with UnboundIDProvider.)
Now that I have a way to recreate the issue I can try to debug what is going on.
@tduehr I know you are working on refactoring the tests and I haven't looked to closely at what you are doing but the tests I am adding certainly have lots of duplication across the properties so if you are doing something to alleviate that, I will adopt it once it is merged. I can adapt this stuff to whatever you are doing.
I also want to create a test user in the AD/samba directory that has different values for cn, userPrincipalName, and sAMAccountName because now they are all "admin" and in real life that isn't usually true. I can bind to this directory in Apache Directory Studio as cas\admin<EMAIL_ADDRESS>and cn=admin,cn=Users,dc=cas,dc=example,dc=org but some of the tests that are doing that in CAS with ldaptive don't seem to be returning attributes even though they can authenticate.

Don’t worry about how my stuff is affected. It’s easy enough to make these changes for a class or two. Not sure if I’ll get the first part done early enough for this PR anyway.

One thing I have learned is that I should probably be using AUTHENTICATED instead of AD (even though I am using Active Directory). There is probably a better name for the AD type and it may have some valid use cases (e.g. authenticating without a separate bind user to look up the DN of the user authenticating and using the AD specific auth formats domain\user and<EMAIL_ADDRESS>but I think it has some bugs (e.g. it doesn't seem to be able to return attributes as part of the authentication).
I also don't think the UnboundID provider makes sense for the AD type b/c it would require a dnFormat that mapped to the full DN of users in a specific folder in AD. That would require all users to be in a single folder or OU. Trying to use a dnFormat without an equals sign in it will fail with UnboundID when Ldaptive creates and UnboundID DN.
I still have some cleanup and more tests to work on but this samba container makes it must easier to play around with AD.

I am done with this for now, aside from any feedback or changes that someone requests. Some of the tests that are using the AD type pass but only because they don't check that attributes requested during the authentication are returned. I don't have time right now to track that down. I also observed a possible issue with the CLOSE ldap connection passivator but the test is not using that so it passes. There are comments about those issues in the tests.

Thanks @hdeadman. Looks excellent to me!


chore: Update rubocop-performance to 1.22.0

Update the rubocop-performance gem for all gems in the repo. We had a mixed version requirement, some had a minor version lock and others had a patch version lock. Happy to revert back to a minor constraint if everyone would prefer.
This will close the related dependabot PRs.

@xuan-cao-swi  - Thankfully, yes! There's an update-dependencies script in the repo, it's a huge help!


FabFedLib/Mobius - User interface and workflow

Driving the federation modeled workflow from the user perspective will require extensions to the existing Mobius framework. Some initial considerations that will need to be addressed:

[ ] 1. User credential handling for CF and external API access.  At the moment all resource provider credentials are explicitly setup in a config.yml file. Tooling should be extended to work with SSO (CIlogon) prompts and avoid tasks like manual project token maintenance.
[ ] 2. Extend the Mobius API to enable specification of resource details outside of config.yml.  This includes, but is not limited to, things like the slice name, resource counts, etc.
[ ] 3. ERA plugins (i.e. resource providers) will need to be invoked asynchronously with a scheme for managing dependencies between plugins. For example, we may need a successful response from a particular plugin before another dependent plugin is activated.
[ ] 4. Mobius API extensions for chaining extensible ERAs as developed in #1. (Task 3).
[ ] 5. Support for adding services on top of provisioned resources. This includes DTNaaS demonstration and perhaps FABRIC MF services. Such persistent services will run within existing FABNetv4/v6 slices and will require reachability with node resources instantiated with FabFedLib/Mobius.

Let's use "FIM for Federated Network Topology and Stitching Workflow" Sections 1-3 for reference and add some model / schema / format related design to Section 4, as an outcome of this task.

Some initial high level slice model considerations @abessiari:

A Slice interface is used internally by controller to manage user resources. User API should probably not expose this directly.
The Slice manages Node, Network, and Service capabilities.  Services may be provider-native (as in l3vpn) or external (as in DTNaaS), so we will need a way to define how such services are invoked.
Some providers may only create Slices with Nodes, some with Networks and Nodes, etc. Providers do not necessarily need to implement all interfaces capabilities.

(Optional) Allow updated framework to continue to be useful in allocating non-federated/networked resources.

The Slice interface will also require methods to retrieve state about a subset of important slice resources. For example, selected network vlans, network subnets, service endpoints, etc.

Slice:
  - Node nodes[]
  - Network networks[]
  - Service services[]

  create_slice():
     <instantiate all defined resources>
  delete_slice()
  modify_slice()
  add_resource()
  get_state(type)
...

The chi provider in the existing code provide much of this already.  Some aspects are not implemented fully (see Network)

Each provider client will need to ensure that CF state is managed in a way to allow fully formed slice requests to be instantiated.

This means refactoring any shared state between Node/Network/Service routines.
Eventually modify may be introduced to make provisioning less sequential

A ProviderManager orchestrates Slice objects.

Loads FABRIC Information Model objects. Used to learn constraints/dependencies on networked Slice resources.
Makes use of rule sets to define dependencies between resource providers
Defines ordering for create calls based on rule sets
Bound to user sessions to track state of Slice resources over time

ProviderManager:
  - FIM model
  - Slice slices[]
  - RuleSet rules[]
  - priority_dict -> slice ordering

  create_and_wait()
  create_async()
  get_status()

@xi-yang @disprosium8
I took a different approach. In this repo fabric_model_example there is a README file and a sample config file to explain the concept/approach.  We still use yaml config for now.  This config can be converted to HCL if and when  we decide to integrate with terraform and implement a terraform plugin.
We can discuss this later today in the meeting.

For the record, we agree to code up with the following stack and reshape the structure of this repo.

A layer to model the fabfed slice in "Node / Network / Service" data structure with functions /calls to support slice lifecycle operations.
A layer under 1 to support policies and rules for workflow logic with needed workflow management functions
A layer above 1 to to interpret user abstraction (for example a HCL compatible YAML / JSON description) that transform that into the codes / data in 1 and 2.

The abstraction in 3 may include implicit data dependency rules that need to be translated into the internal code structure in 2. It should also be possible for explicitly defined workflow policies / rules to be added into 2 through system config or additional user input.
We should try to keep the slice data structure similar to what fablib has, to make it easy to integrate with fablib in the future.

To extend @xi-yang comments about fablib, and per Ilya's comments in our last update call, let us look at fablib's modeling of slice/node/services to make sure we

don't miss anything obvious
evaluate it as a potential model for direct use/extension into a fabfed controller
ensure a consistent user experience given that our federation workflow solution will be FABRIC-focused.

https://github.com/fabric-testbed/fabrictestbed-extensions/tree/main/fabrictestbed_extensions/fablib


feat(Text): add dir prop

Summary
Type

Feature

Summarise concisely:
What is expected?
Add a new dir prop to <Text /> to change the direction of the text: https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/dir
Relevant logs and/or screenshots

not sure to understand clearly what you mean by "the direction of the ... " ?

@vincentaudebert it's when you use the oneLine prop, the text is truncated with '...' at the end


Support for 3D scatter plots

Hi,
Thanks for this, it has been very useful! I am wondering if it would be possible to support 3D scatter plots. I think it would be quite useful (I for sure would use it :) ).
Thanks again!
Sahil

Hi,
I think it should be possible (since I recently made changes to using display coordinates), will look into it soon! Thank you for the suggestion and great that you found it useful even in 2D :)
/Christoffer

Made an update so that 3D plotting is now supported. It was a bit more tricky than I expected, so if you try it out and find something that is not working properly, please open a new issue! :)
You can check out the example in the readme or the demo notebook for how to use the new functionality.


Requires the ability to systematically change file paths in Jupyter

I want to change the file path to the parent of the file that is currently running. The solution now is to use the Python OS module to change the working directory. Use the os.chdir() of the os module to manually set the file path.  It's like this:
import os
os.chdir(os.path.expanduser("~"))

I'd like to have a way to do this systematically instead of manually modifying it every time.

Related on StackOverflow：here

Thank you for filing this issue, please can you provide more details here.
I've checked stack overflow and that doesn't seem to be realted, i.e. I do not see anyone in that issue trying to change the cwd to the user folder, in your case you are trying to change the directory to the user folder and not the parent folder.
Please can you share more information by roviding details that is missing in the issue template

Version of VS Code
OS
Version of extension
Workspace folder opened & folder structure and the file you are running in Jupyter (is it a notebook or Interactive window)
What is the expected CWD with respect to the file in the workspace folder

Version of VS Code: 1.90.2
Commit: 5437499feb04f7a586f677b155b039bc2b3669eb
Date: 2024-06-18T22:54:35.075Z
OS: MacOS (or perhaps you meant VS Code OS: Darwin arm64 23.5.0)
Version of Extension: Jupyter extension: v2024.5.0
Local workspace: ~/workspace/learning/Python/nlp/src/ containing clone of https://github.com/LinkedInLearning/advanced-nlp-with-python-for-machine-learning-3807097
being run locally as an interactive window
expected CWD ~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2/ (when executing this file . Actual recognized CWD in the editor: ~/workspace/learning/Python

being run locally as an interactive window

What commands are you using exactly here.
Or how did you achieve this?

Please can you share a screen recording using gifcap.dev or the like

This works as expected for me.

Here is my setting

Can you check if the settings under Workspace tag are different/
Please could you enable logging as follows:

Open settings & go into Jupyter->Logging
Change the value to verbose
Reload VS Code,
Attempt to repro the issue & then copy the output from the Jupyter output panel.

Under the workspace tab, same Jupyter root tag -- no difference
I added the verbose option (and the settings.json file with that new setting is showing up under /Users/jm/workspace/learning/Python) and ran both Developer: Reload Window and Python: Clear Cache and Reload window.
Same behavior as before when running the cell containing os.getcwd() ("/Users/jm/workspace/learning/Python") -- and this was the output in the console:
09:37:33.786 [info] Disposing kernel .jvsc74a57bd0d0fb27f5aef107e0a3b82a4c76b7f537ca4a5f6b97d318ca945c3103546b5d9c./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12.-m#ipykernel_launcher for notebook /Interactive-1.interactive due to selection of another kernel or closing of the notebook
09:37:33.787 [info] Dispose Kernel '/Interactive-1.interactive' associated with '~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2/Ch2_challenge.py'
09:37:33.794 [info] Dispose Kernel '/Interactive-1.interactive' associated with '~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2/Ch2_challenge.py'
09:39:19.459 [info] Starting interactive window for resource '~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2/Ch2_challenge.py' with controller '.jvsc74a57bd0d0fb27f5aef107e0a3b82a4c76b7f537ca4a5f6b97d318ca945c3103546b5d9c./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12.-m#ipykernel_launcher (Interactive)'
09:39:19.592 [info] Starting Kernel (Python Path: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12, Conda, 3.12.3) for '/Interactive-1.interactive' (disableUI=false)
09:39:19.595 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 -c "import ipykernel; print(ipykernel.version); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.file)"
09:39:19.601 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 -m ipykernel_launcher --f=/Users/~/Library/Jupyter/runtime/kernel-v2-491522L0D46pqWO1h.json
> cwd: //Users/~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2
09:39:21.099 [info] Kernel successfully started
09:39:21.101 [info] Generated code for 1 =  with 5 lines
09:39:21.106 [info] Generated code for 2 =  with 2 lines

Same behavior as before when running the cell containing os

Please can you share all of the output,
There are some parts that I need, e.g. we calculate the working directory and set it up, spawn the processes, etc.
You can see the information and feel free to strip out any sensitive information, we try not to include the user names and the like.
If you do strip anything out, then do let me know what was replaced, thanks.

Steps taken:

In settings, Jupyter Logging level is set to "info" with "verbose logging for tasks" enabled.

reloaded the window and this appears in the console under "output":
Visual Studio Code (1.90.2, undefined, desktop) Jupyter Extension Version: 2024.5.0. Python Extension Version: 2024.8.1. Pylance Extension Version: 2024.6.1. Platform: darwin (arm64). Workspace folder ~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097, Home = /Users/jm

ran this in a notebook (and interactive editor):

import os
print(os.getcwd())

The resulting output was "/Users/jm/workspace/learning/Python"
The output in the console was:
09:45:09.350 [info] Starting interactive window for resource '~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2/Ch2_challenge.py' with controller '.jvsc74a57bd0d0fb27f5aef107e0a3b82a4c76b7f537ca4a5f6b97d318ca945c3103546b5d9c./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12./Users/~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12.-m#ipykernel_launcher (Interactive)'
09:45:09.511 [info] Starting Kernel (Python Path: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12, Conda, 3.12.3) for '/Interactive-1.interactive' (disableUI=false)
09:45:11.222 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 -m pip list
09:45:11.292 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)"
09:45:11.294 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 -m ipykernel_launcher --f=/Users/~/Library/Jupyter/runtime/kernel-v2-70162Ov4Fy8nwMJKl.json
    > cwd: //Users/~/workspace/learning/Python/nlp/src/advanced-nlp-with-python-for-machine-learning-3807097/Chapter 2
09:45:13.098 [info] Kernel successfully started
09:45:13.102 [info] Process Execution: ~/opt/anaconda3/envs/nlp_linkedin_prof_stripling/bin/python3.12 /Users/~/.vscode/extensions/ms-toolsai.jupyter-2024.5.0-darwin-arm64/pythonFiles/printJupyterDataDir.py
09:45:13.103 [info] Generated code for 1 = <ipython-input-1-9e96808d78df> with 5 lines
09:45:13.107 [info] Generated code for 2 = <ipython-input-2-9f0f8fa44d85> with 2 lines

(see screen shot)
Should I be looking elsewhere for the verbose logs other than the console?

Please go into your user settings
enable trace logging as per below screenshot,
Re-load VS Code
Try again & share the logs


Modified app introduction in conceptual guides

Hi @mmabrouk,
For the sake of clarity, I changed "Language Model (llm)" to "Large Language Model (LLM)".

Thanks @aybruhm :)


Replace sphinx.ext.pngmath with sphinx.ext.imgmath

https://github.com/sphinx-doc/sphinx/issues/6739
Experimentally, make html works fine just changing sphinx.ext.pngmath to sphinx.ext.imgmath and nothing else.

How do you do that?
I'm installing package from Google Colab directly with !pip instal git+.
How can I update a configuration list?

Wow, what the heck happened here. I thought I wrote rather more than that...in any event, what I mean is https://github.com/scikit-video/scikit-video/blob/f6a49e7d0a3f4c68d5cee15e80264a473f05df42/doc/conf.py#L32 . As it says, "sphinx.ext.pngmath has been deprecated. Please use sphinx.ext.imgmath instead."
Hmm, it looks like this hasn't been resolved yet. Um, hmm, looks like I didn't make a pull request for this. If you want to just pip install from a branch, you could e.g. pip install git+https://github.com/dHannasch/scikit-video.git@compare-two-videos. That's https://github.com/scikit-video/scikit-video/pull/131, but it has the imgmath change.

Sorry for not giving detailed description. I'm new to this.
I'll explain further.:
I installed a package that I need to use from:  https://github.com/ismrmrd/ismrmrd-python-tools.git

I wanted to see the toolbox's documentation so I installed 'sphinx' via  https://github.com/sphinx-doc/sphinx.git.
Before executing the code to build the sphinx documentation of the toolbox (python setup.py build_sphinx), I tried editing the conf.py file (this file didn't include _sphinx.ext.pngmath nor sphinx.ext.imgmath as you can see in the next image ).

So after trying to edit conf.py, I tried to build the documentation file with (python setup.py build_sphinx) , but got the following error:
Extension error: Could not import extension sphinx.ext.pngmath (exception: No module named 'sphinx.ext.pngmath')

Ok, I found out what was the problem.
I edited the conf.py file from the toolbox I installed previously (not the one within the sphinx directory)
Then I runned the python setup.py build_sphinx command and it worked!


Add support for VSCode

It would be fun to invoke a board in VSCode based on - say - the contents of the current file, or a few files selected in the tree.
Would need the board runtime to work entirely in node, as that's how VSCode runs its extensions.

It already runs in node! See graph-playground/src/index.ts as a CLI runner. It lacks the auto-magic "UI" generation, just falls back to assuming "text" for input nodes.


License Information Metric

Update on search for ways to get license information:
I looked into DoSOCSv2 for license information.  It examines project files that are present locally.  We would have to download a project's files from GitHub in order to run something similar.  I think it might be technically possible to download the files automatically.  We could use the API's contents to get the download URL https://developer.github.com/v3/repos/contents/#get-contents and then download using that URL.  However, I'm not sure downloading and storing entire projects, even temporarily, would be viable in terms of speed and storage.
As far as I can tell, DoSOCSv2 uses https://github.com/ardumont/fossology-nomossa to examine files for license information.  Fossology lists the following as things it uses.  The top two would appear to scan files for license information (though I haven't looked in depth into either Nomos or Monk).
Nomos, a license scanner based in regular expressions.
Monk, a license scanner based on text comparison.
MonkBulk, an extension to Monk for user-based phase searching.
Copyright, an Agent searching for copyright, URL, e-mail and authorship statements.
ECC, export control and customs as an extension to Copyright.
Package Agent, an agent exporting metadata from installation packages.
Maintenance Agent, (new in 2.4.0)
Mimetype Agent, running over files trying to determine the mimetype.
Buckets, an agent to categorize files based un user-defineable definitions.

Yes, it essentially strips away FOSSology to simply get at Nomos, the scanner
Regarding the download, yea, it would really have to come from the repository. I wouldn't expect to store the package locally but you are right -- downloading and scanning is a time-consuming process. Yet, this is pretty important information and we could leave it to a user to decide if they want to pay that overhead for that information.

It seems like the GitHub API already aggregates license information https://developer.github.com/v3/licenses/

It may but not to level of identifiability of something like Nomos, or LiD (Qualcomm's new scanner). I believe that in the case of GH, the license would have to be declared by the repo owner. In the case of the scanners, they can look for identifiable text that the repo owners may not have declared.

https://help.github.com/articles/licensing-a-repository/
I think the API is getting it from the files license.txt or license.md.
"The open source Ruby gem Licensee compares the repository's LICENSE file to a short list of known licenses. Licensee also provides the Licenses API and gives us insight into how repositories on GitHub are licensed. If your repository is using a license that isn't listed on the Choose a License website, you can request including the license.
If your repository is using a license that is listed on the Choose a License website and it's not displaying clearly at the top of the repository page, it may contain multiple licenses or other complexity. To have your license detected, simplify your LICENSE file and note the complexity somewhere else, such as your repository's README file."

Since using the API is trivial compared to using third party software, I suggest we start by using the API and if we find it doesn't meet our needs we can put more effort into getting better license data further down the line.
The challenge with many more robust license scanners is that they require downloading the project. Unless we drastically limit our search space, we don't have the storage nor compute resources to provide that kind of data. Even if we did have those resources, how long could we sustain that for?
The advantage of using the API is we can trust that it will be around as long as GitHub is. The link that @abuhman posted referred to the Licensee project, which detects all of the licenses on https://choosealicense.com/
The License API is more sustainable than these other projects :)

The License information is part of the Risk Health:
License Declared can be answered by the API.
License Coverage, License Conflict, and License Count can only be answered by scanning all files in the repository.
Comment: The scanning is not trivial. Binaries or images might not have declared licenses and might or might not be counted in the overall percentage.

What I've been finding online was that if a license isn't declared for something, you should assume that you can't use it.  Maybe we should output something along those lines to the user in the event we don't find a license?

An argument for more detailed license information is their critical importance in OSS -- not just at the project level but also at the file level. I think that GH only provides license information at the package level (could be wrong). Things like reported % of files with declared license can be very interesting. So too with the different licenses throughout a single package. As @GeorgLink points out, risk health is pretty important for many/all of these organizations.
It is true that it would entail a download and that is a big overhead. No doubt there. I don't think that we would hold the actual downloaded package post scan. Nor would we necessarily have to hold the results.
I'm suspecting that the tools I mentioned above will be around for a while based on their Linux Foundation and corporate support. You never know though.
@abuhman - yes, no license you can't assume use. Source available but not open source.

@abuhman and @germonprez : What are your thoughts on putting some of the license work into the ghdata project road map?

@GeorgLink : I think we are unsure how to measure this right now.  Is there a metric defined?

We currently have the section "Copyright and License Factors" that speaks to license metrics. Right now, the qualitative license metric that is a list of licenses in a project.
At one point, we were discussing a quantitative metric, but dropped the idea for now.

@GeorgLink : Since there is an option to specify a license on a GitHub repository, do you think we should provide this information where available, or some aggregate navigation between projects with similar licensing policies at a "gestalt" instead of at the repository level?
@howderek , here is the text from below and I think some of these "Activity Metrics" be put on our implementation path:

Activity Metric
Description

Copyright Declaration
The degree to which the project properly declares copyright ownership, including the copyright symbol or 'copyright' word, the year of the creation, the name of the author, and a rights statement.

Package License Declaration
A list of license declarations on the software package.

File License Declarations
A list of license declarations on the software package files.

License Identification Methods
A list of methods or tools used for identifying licenses in files.

If you would only show the repository level license that is obvious from looking at the GitHub repository, then there is no additional information GHData would be providing and thus I do not see it as valuable.
Can you elaborate on the "gestalt" idea?

Closed due to inactivity


Expand on the documentation to include examples of building images from docker file

This is a pretty simple change, it would be a case of updating the docs to include examples on building an image from a docker file.

Is there anything particular missing? I can add an example to the Wiki.

I think we could add some examples of using the image builder, using a custom docker file.

https://github.com/testcontainers/testcontainers-dotnet/wiki/Quickstart


Intermittent failures to deal on fork

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (2c25b89 2022-11-09T00:07:40.191383165Z)
What command(s) is the bug in?
forge test
Operating System
Linux
Describe the bug
We have a test suite that runs a lot of fork tests which deal ETH to a fresh address, prank that address and run a situational test from that address. For example:
uint256 fromPrivateKey = 0x1234;
address from = vm.addr(fromPrivateKey);
vm.createSelectFork(vm.envString("FORK_URL"), blockNum);
vm.startPrank(from);
vm.deal(from, 1 ether);

// run simple send simulation
address(recipient).call{value: 0.1 ether }("");

Intermittently (~1/20 test runs) the deal call seems to fail to actually deal ETH to the address. This results in an error: EvmError: OutOfFund -- this is a native evm error that the account didn't have enough ETH to pay for gas.
Strangely, if checking the balance first like assertEq(from.balance, 1 ether), the check passes.
Note that on similar but non-fork tests this intermittent error never happens. Seems to be related to interplay between vm.createSelectFork and vm.deal. Let me know what other info I can provide

there's likely something of with when and how the account for from is fetched. It's likely related to the prank call.
Thanks for the repro will try to replicate and fix.


chore(main): release 1.13.0

:robot: I have created a release beep boop
1.13.0 (2024-12-04)
Features
Docker
This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.13.0
:sunflower:


Inconsistent Pluralization Issue in File Explorer

Description
I apologize in advance if I've categorized this issue incorrectly, as I wasn't sure which category it falls under. When I navigate to the Desktop folder, for example, and there are no applications displayed, instead of showing "0 item," it displays "0 items" with an unnecessary "s".
Steps To Reproduce

Go to a directory that contains no files or folders

Requirements
Identify the source of pluralization inconsistency within the Files interface.
Files Version
Version <IP_ADDRESS>
Windows Version
Windows 11 (22H2): 22621
Log File

0 items is the correct way of saying it.

Ah yes, it's true I had forgotten that zero is considered a number and therefore follows the same grammar rules as other numbers.


(GH-2022) Pickup puppet agent 4.1.1

Puppet agent 4.1.1 includes several updates we'd like to pick up,
including:

Stopping agent runs if Puppet is upgraded mid-run
Adding a puppet_agent::run plan to run the agent on remote targets

This allows users to run the agent without Bolt erroring due to a
non-zero exit code.
Closes #2022
!feature

Add puppet_agent::run plan to run the agent (#2022
The puppet_agent::run plan will run the agent if it's available and
returns a resultset including agents that failed and the results from
runs that succeeded.

CLA signed by all contributors.


Clipboard Copy Off-by-one Column in BeakerX table

Using the Groovy kernel I make a table like this:
[
    [foo: 1, bar:2],
    [foo: 10, bar:20]
] * 5

This displays like so:

I then select some values from the foo column and choose "Copy" from the menu:

Choosing Copy:

Then I paste the values into the next cell - but only empty values are pasted:

However if I also select the column to the left:

Then it pastes the values I wanted originally:

The same behavior happens for the bar column. To copy the values from bar I have to also select the values from foo, which then copies only the bar column and not foo and bar.
Expected behaviour: the column I select should be copied when only that column is selected.
I am using Chrome with a checkout and build from master (commit #774fa4)

Hi, I am having the same issue, and I am rendering my BeakerX table in both JupyterLab and Voila. Do you know if there has been a fix for this issue yet?

Hi, I am having the same issue, and I am rendering my BeakerX table in both JupyterLab and Voila. Do you know if there has been a fix for this issue yet?

Due to lack of inactivity here I have made a fork:
https://github.com/ssadedin/beakerx
With the fix for this in:
https://github.com/ssadedin/beakerx_tabledisplay
Fingers crossed activity picks up here again and we can merge this into the main repository. To get the fix from the above you would have to set up a development installation and install from there.

Due to lack of inactivity here I have made a fork:
https://github.com/ssadedin/beakerx

I've updated my extension to your Maven 1.5.0 version:
https://github.com/axkr/symja_android_library/commit/d359a348b4770c6612f215ef0db5ea41453a3212
but I didn't find the beakerx JUnit test classes for example:

com.twosigma.beakerx.evaluator.ClasspathScannerMock;
com.twosigma.beakerx.evaluator.EvaluatorTest;
com.twosigma.beakerx.evaluator.MagicCommandAutocompletePatternsMock;

what is the preferd MAVEN way to use these classes in my own extension?


Native SASL support

Hi! ^^
This PR adds native SASL support using rsasl. I've been testing usability of the rsasl API by patching existing crates to use rsasl and this PR is basically this testing code for rust-imap.
So in essence this is an issue asking if this is someting that you would be interested in merging, but already coming with some code attached ^^
Why would we want this?
While with the current Authenticator system most of SASL can be implemented there are a few advantages in using an external crate.
For one, features like SASL security layers and channel bindings aren't really doable with the current approach. The latter specifically is something that would want explicit support by this crate as the strongest channel binding — tls-exporter — needs access to the TLS state otherwise managed by rust-imap.
Mechanism selection is another thing that could be implemented somewhat easier upstream as an user of the crate doesn't have access to capability without authenticating first.
Lastly it would allow us to drop the direct dependency on base64 (although rsasl itself depends on the very same again) ^^
What's the cost?
Of course this will result in an additional dependency, but I designed rsasl to make heavy use of feature unification to make it as cheap as possible when not used — when I checked for lettre it added 2.2KiB in (pre-LTO) binary size and less than a second in compile time.

This change is

Sorry for the slow reply!
This seems like a totally reasonable thing to add, though I'd want to add it behind a feature flag. I also think we could do it in an additive way. That is, keep the current Authenticate-based API, and then provide a SASL-authenticate method (e.g., Client::sasl_auth) when the SASL feature is enabled that does auth through SASL. Authenticate may still be useful on its own for users who are working with relatively simple (or experimental) mechanisms, such as during testing.
One thing that surprised me when glancing over the changes was the need for Arc-wrapping the config — can that be avoided? Why is that required by the SASLClient API?

Oh, also, we'd want to make sure by the time this lands that we can take a regular crates.io dependency on rsasl rather than a git dependency, so that we can in turn continue to publish imap on crates.io.

Sorry for the slow reply!

Hey no worries, we're all doing unpaid volunteer work here — I don't mind waiting a few days, your README already states you don't have much time for this project. :)

This seems like a totally reasonable thing to add, though I'd want to add it behind a feature flag. I also think we could do it in an additive way. That is, keep the current Authenticate-based API, and then provide a SASL-authenticate method (e.g., Client::sasl_auth) when the SASL feature is enabled that does auth through SASL. Authenticate may still be useful on its own for users who are working with relatively simple (or experimental) mechanisms, such as during testing.

Sure thing! I'd like to note that I designed rsasl specifically to be extensible so this would still allow experimental / testing mechanisms to be used, just like with Authenticate, without further changes to rsasl or rust-imap being required. The main reason I removed that method was really because I like deleting code since it means less code this library has to worry about and maintain, but I'm very much not set on that.

One thing that surprised me when glancing over the changes was the need for Arc-wrapping the config — can that be avoided? Why is that required by the SASLClient API?

The main reason for this is that SASLConfig is an unsized type, specifically a trait object. Since the config comes from user code and not from either rsasl or libraries using rsasl, having the config be a generic instead of a trait object would quickly lead to a generic explosion as every code path handling SASL would have to be generic over a type they never interact with directly. Arc specifically was chosen because I wanted to have one config for both server- and client-side and especially on the former a global config being used by multiple threads simultaniously is quite likely. So of the typical DST containers Box, Rc and Arc I considered Arc to be the best option, and it is not much more expensive than Box when used only by one thread.
That all being said, I am debating making SASLConfig (and related) generic types in a future version of rsasl, especially now that GATs become an option. However, that's somewhat further in the future and I do think it can be done in a backwards-compatible manner.

Oh, also, we'd want to make sure by the time this lands that we can take a regular crates.io dependency on rsasl rather than a git dependency, so that we can in turn continue to publish imap on crates.io.

Oh yeah of course! I was only using the git dependency as I was trying out a changed API that I did not yet release, as I said I am doing this PR partly to make sure that my API makes sense — and I did in fact find an issue ^^

I pushed a new version of this PR with the changes you requested so far.
There are still a few to-dos I'd like to implement in rust-imap for the rsasl feature, but most of them can be added in a future PR too if we want to get this feature into a release sooner.

Hi!
I was linked your stream VoD recently and I noticed that I could have explained myself a bit better, especially since most people won't have deep familarity with SASL, rsasl, and all that surrounds it ^^'
So to answer some questions you asked into the ether in that video:
A first thing; I'm currently working on an updated version of rsasl (hey, just like you with imap 3.0.0-alpha.*! ;p) that is written entirely in Rust and doesn't depend on an external library like the previous version did. So the default docsrs link will not help you with most of the types as this is in essence a full rewrite. The version you'd want to look at is the 2.0.0-rc.* (https://docs.rs/rsasl/2.0.0-rc.3/rsasl/index.html), and its API is exactly what I'm trying to test with these PRs ;)
"Channel Binding" in one sentence is taking some unmistakable information from an underlying secure transport (so e.g. TLS in the common IMAP case) and including it in the authentication exchange in a way that will make the authentication fail if the information doesn't match up. It only works for a limited number of SASL mechanisms but it can help detect some cases of active MitM that has intercepted the TLS stream using e.g. a faked certificate. It's a fringe feature as most servers don't offer the mechanisms required and even then Channel Binding support is somewhat brittle as it doesn't have good negotiation.
SASL authentication using e.g. client certificates or other contextual information is a specific SASL mechanism called EXTERNAL.
Also, the magic method of rsasl is Session::step64, it takes base64 data, does the authentication magic part, and puts base64-encoded data into a provided writer ^^

That's helpful, thank you!

EHLO!
With rsasl now being fully released as 2.0.0 I cleaned this PR up and squashed it down somewhat. It also depends on the commit in #255 which we said would potentially be better as an entirely separate PR.

Thanks! I'll hold off on reviewing this until #255 lands :+1:


Update App Service examples for removal of MarkedAsPushed.

MarkedAsPushed has been removed, so examples need to be updated to remove usage in code and configuration.

No examples use MarkAsPushed.


hugo error using latest version

using v0.49.2 build ok, but use v0.51 build error:
error info:
Building sites … ERROR 2018/11/25 19:54:35 render of "section" failed: execute of template failed: template: _default/list.html:13:9: executing "_default/list.html" at <partial (printf "%s/...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/flex/body-beforecontent.html:2:10": execute of template failed: template: partials/flex/body-beforecontent.html:3:7: executing "partials/flex/body-beforecontent.html" at <partial "header.html...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/header.html:2:10": execute of template failed: template: partials/header.html:2:10: executing "partials/header.html" at <where .Site.Pages "S...>: error calling where: Source isn't a field of struct type *hugolib.Page
ERROR 2018/11/25 19:54:35 render of "section" failed: execute of template failed: template: _default/list.html:13:9: executing "_default/list.html" at <partial (printf "%s/...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/flex/body-beforecontent.html:2:10": execute of template failed: template: partials/flex/body-beforecontent.html:3:7: executing "partials/flex/body-beforecontent.html" at <partial "header.html...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/header.html:2:10": execute of template failed: template: partials/header.html:2:10: executing "partials/header.html" at <where .Site.Pages "S...>: error calling where: Source isn't a field of struct type *hugolib.Page
ERROR 2018/11/25 19:54:35 render of "section" failed: execute of template failed: template: _default/list.html:13:9: executing "_default/list.html" at <partial (printf "%s/...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/flex/body-beforecontent.html:2:10": execute of template failed: template: partials/flex/body-beforecontent.html:3:7: executing "partials/flex/body-beforecontent.html" at <partial "header.html...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/header.html:2:10": execute of template failed: template: partials/header.html:2:10: executing "partials/header.html" at <where .Site.Pages "S...>: error calling where: Source isn't a field of struct type *hugolib.Page
ERROR 2018/11/25 19:54:35 render of "section" failed: execute of template failed: template: _default/list.html:13:9: executing "_default/list.html" at <partial (printf "%s/...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/flex/body-beforecontent.html:2:10": execute of template failed: template: partials/flex/body-beforecontent.html:3:7: executing "partials/flex/body-beforecontent.html" at <partial "header.html...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/header.html:2:10": execute of template failed: template: partials/header.html:2:10: executing "partials/header.html" at <where .Site.Pages "S...>: error calling where: Source isn't a field of struct type *hugolib.Page
Total in 170 ms
Error: Error building site: failed to render pages: render of "section" failed: execute of template failed: template: _default/list.html:13:9: executing "_default/list.html" at <partial (printf "%s/...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/flex/body-beforecontent.html:2:10": execute of template failed: template: partials/flex/body-beforecontent.html:3:7: executing "partials/flex/body-beforecontent.html" at <partial "header.html...>: error calling partial: "/Users/tianou/go/src/github.com/gin-gonic/website/themes/docdock/layouts/partials/header.html:2:10": execute of template failed: template: partials/header.html:2:10: executing "partials/header.html" at <where .Site.Pages "S...>: error calling where: Source isn't a field of struct type *hugolib.Page

my project: https://github.com/gin-gonic/website
ci: https://travis-ci.org/gin-gonic/website
thanks!

See https://discourse.gohugo.io/t/page-builds-in-47-but-errors-in-51/15468/6


Add JSONPatch example for modifying Bootstrap config using the EnvoyProxy resource

According to Customize EnvoyProxy Bootstrap Config, it is possible to merge a user defined config into the default bootstrap config.
I'm running envoy gateway in k8s and created the following EnvoyProxy in the envoy-gateway namespace (the corresponding Gateway refers to this EnvoyProxy in infrastructure.parametersRef):
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
  creationTimestamp: "2024-11-19T18:16:38Z"
  generation: 1
  name: custom-proxy-config
  namespace: envoy-gateway
  resourceVersion: "1823706"
  uid: f1a91a45-5c9b-42ab-9193-78620a83c78b
spec:
  bootstrap:
    type: Merge
    value: |
      static_resources:
        clusters:
        - name: xds_cluster
          dns_lookup_family: V4_ONLY
  logging:
    level:
      default: warn

Apparently, the config was applied as the envoy gateway pod restarted and I got the the following clusters in my gateway deployment (see attached the complete envoy gateway deployment yaml file):
            clusters:
            - connectTimeout: 0.250s
              loadAssignment:
                clusterName: prometheus_stats
                endpoints:
                - lbEndpoints:
                  - endpoint:
                      address:
                        socketAddress:
                          address: <IP_ADDRESS>
                          portValue: 19000
              name: prometheus_stats
              type: STATIC
            - connectTimeout: 10s
              loadAssignment:
                clusterName: xds_cluster
                endpoints:
                - lbEndpoints:
                  - endpoint:
                      address:
                        socketAddress:
                          address: envoy-gateway
                          portValue: 18000
                    loadBalancingWeight: 1
                  loadBalancingWeight: 1
              name: xds_cluster
              transportSocket:
                name: envoy.transport_sockets.tls
                typedConfig:
                  '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
                  commonTlsContext:
                    tlsCertificateSdsSecretConfigs:
                    - name: xds_certificate
                      sdsConfig:
                        pathConfigSource:
                          path: /sds/xds-certificate.json
                        resourceApiVersion: V3
                    tlsParams:
                      tlsMaximumProtocolVersion: TLSv1_3
                    validationContextSdsSecretConfig:
                      name: xds_trusted_ca
                      sdsConfig:
                        pathConfigSource:
                          path: /sds/xds-trusted-ca.json
                        resourceApiVersion: V3
              type: STRICT_DNS
              typedExtensionProtocolOptions:
                envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
                  '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
                  explicitHttpConfig:
                    http2ProtocolOptions:
                      connectionKeepalive:
                        interval: 30s
                        timeout: 5s
            - connectTimeout: 10s
              loadAssignment:
                clusterName: wasm_cluster
                endpoints:
                - lbEndpoints:
                  - endpoint:
                      address:
                        socketAddress:
                          address: envoy-gateway
                          portValue: 18002
                    loadBalancingWeight: 1
                  loadBalancingWeight: 1
              name: wasm_cluster
              transportSocket:
                name: envoy.transport_sockets.tls
                typedConfig:
                  '@type': type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
                  commonTlsContext:
                    tlsCertificateSdsSecretConfigs:
                    - name: xds_certificate
                      sdsConfig:
                        pathConfigSource:
                          path: /sds/xds-certificate.json
                        resourceApiVersion: V3
                    tlsParams:
                      tlsMaximumProtocolVersion: TLSv1_3
                    validationContextSdsSecretConfig:
                      name: xds_trusted_ca
                      sdsConfig:
                        pathConfigSource:
                          path: /sds/xds-trusted-ca.json
                        resourceApiVersion: V3
              type: STRICT_DNS
              typedExtensionProtocolOptions:
                envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
                  '@type': type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
                  explicitHttpConfig:
                    http2ProtocolOptions: {}
            - dnsLookupFamily: V4_ONLY
              name: xds_cluster

So instead of patching the existing xds_cluster, Merge created one more xds_cluster. Is this the way it's suppossed to work or am I missing something? I expected "dns_lookup_family: V4_ONLY" to be merely added to the xds_cluster. I also tried tweaking bootstrap.value in the EnvoyProxy, but all to no avail.
Environment:
envoy gateway version: v1.2.1
kubernetes client version: v1.31.2
kubernetes server version: v1.30.5
Configuration:
GatewayClass:
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  creationTimestamp: "2024-11-18T18:42:07Z"
  finalizers:
  - gateway-exists-finalizer.gateway.networking.k8s.io
  generation: 1
  name: envoy-gateway-class
  resourceVersion: "1675395"
  uid: 5d180863-5328-4d38-9d78-fc029b22a7e0
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller
status:
  conditions:
  - lastTransitionTime: "2024-11-18T18:42:07Z"
    message: Valid GatewayClass
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted

Gateway:
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  creationTimestamp: "2024-11-18T20:47:46Z"
  generation: 1
  name: envoy-gateway
  namespace: envoy-gateway
  resourceVersion: "1823721"
  uid: af638cf3-f7f0-4c68-85a0-559d15867579
spec:
  addresses:
  - type: IPAddress
    value: <IP_ADDRESS>
  gatewayClassName: envoy-gateway-class
  infrastructure:
    parametersRef:
      group: gateway.envoyproxy.io
      kind: EnvoyProxy
      name: custom-proxy-config
  listeners:
  - allowedRoutes:
      namespaces:
        from: All
    name: tls
    port: 443
    protocol: TLS
    tls:
      mode: Passthrough
  - allowedRoutes:
      namespaces:
        from: All
    name: https-openproject
    port: 8443
    protocol: HTTPS
    tls:
      certificateRefs:
      - group: ""
        kind: Secret
        name: openproject-cert
      mode: Terminate
status:
  addresses:
  - type: IPAddress
    value: <IP_ADDRESS>
  conditions:
  - lastTransitionTime: "2024-11-18T20:47:46Z"
    message: The Gateway has been scheduled by Envoy Gateway
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted
  - lastTransitionTime: "2024-11-19T18:16:39Z"
    message: Address assigned to the Gateway, 1/2 envoy replicas available
    observedGeneration: 1
    reason: Programmed
    status: "True"
    type: Programmed
  listeners:
  - attachedRoutes: 1
    conditions:
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Sending translated listener configuration to the data plane
      observedGeneration: 1
      reason: Programmed
      status: "True"
      type: Programmed
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Listener has been successfully translated
      observedGeneration: 1
      reason: Accepted
      status: "True"
      type: Accepted
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Listener references have been resolved
      observedGeneration: 1
      reason: ResolvedRefs
      status: "True"
      type: ResolvedRefs
    name: tls
    supportedKinds:
    - group: gateway.networking.k8s.io
      kind: TLSRoute
  - attachedRoutes: 1
    conditions:
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Sending translated listener configuration to the data plane
      observedGeneration: 1
      reason: Programmed
      status: "True"
      type: Programmed
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Listener has been successfully translated
      observedGeneration: 1
      reason: Accepted
      status: "True"
      type: Accepted
    - lastTransitionTime: "2024-11-18T20:47:46Z"
      message: Listener references have been resolved
      observedGeneration: 1
      reason: ResolvedRefs
      status: "True"
      type: ResolvedRefs
    name: https-openproject
    supportedKinds:
    - group: gateway.networking.k8s.io
      kind: HTTPRoute
    - group: gateway.networking.k8s.io
      kind: GRPCRoute

Deployment:
deployment-envoy-gateway.txt
kubectl output:
$ kubectl get all -n envoy-gateway
NAME                                                              READY   STATUS             RESTARTS         AGE
pod/envoy-envoy-gateway-envoy-gateway-9dbc5803-56456ffb46-qjt2b   1/2     CrashLoopBackOff   18 (3m55s ago)   71m
pod/envoy-envoy-gateway-envoy-gateway-9dbc5803-66c67d8d54-6rtzs   2/2     Running            0                88m
pod/envoy-gateway-7797589b66-l78sx                                1/1     Running            0                24h

NAME                                                 TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                                   AGE
service/envoy-envoy-gateway-envoy-gateway-9dbc5803   LoadBalancer   <IP_ADDRESS>   <IP_ADDRESS>   443:31726/TCP,8443:32345/TCP              22h
service/envoy-gateway                                ClusterIP      <IP_ADDRESS>   <none>          18000/TCP,18001/TCP,18002/TCP,19001/TCP   24h

NAME                                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/envoy-envoy-gateway-envoy-gateway-9dbc5803   1/1     1            1           22h
deployment.apps/envoy-gateway                                1/1     1            1           24h

NAME                                                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/envoy-envoy-gateway-envoy-gateway-9dbc5803-56456ffb46   1         1         0       71m
replicaset.apps/envoy-envoy-gateway-envoy-gateway-9dbc5803-66c67d8d54   1         1         1       22h
replicaset.apps/envoy-envoy-gateway-envoy-gateway-9dbc5803-7669c78744   0         0         0       22h
replicaset.apps/envoy-gateway-7797589b66                                1         1         1       24h

Related PR:
https://github.com/envoyproxy/gateway/pull/1791

hey @alrai the Merge option doesnt work well for lists, suggest using the new JSONPatch option, its unfortunately not documented, but was added in https://github.com/envoyproxy/gateway/pull/4116 , would be great if you can add an example to the docs

@arkodg Thanks for the reply. The following EnvoyProxy worked:
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
  name:
spec:
  bootstrap:
    type: JSONPatch
    jsonPatches:
    - { "op": "add", "path": "/static_resources/clusters/1/dns_lookup_family", "value": "V4_ONLY" }

As for the docs, would it be sufficient to specify that in order to use JSONPatch you need to set bootstrap.type to JSONPatch and place a list of json patches in jsonPatches field?
Each json patch must be a string in JSON Patch notation for which detailed documentation with examples has already been provided:
https://datatracker.ietf.org/doc/html/rfc6902
https://jsonpatch.com/

glad you got it to work @alrai !
yeah you could enhance the existing doc https://github.com/envoyproxy/gateway/blob/main/site/content/en/docs/tasks/operations/customize-envoyproxy.md + the same doc under /v1.2 and /latest
with a sub heading on use case and an example, the RFC links are also useful


add CI tests and remove dependency PlotUtils.jl

I was investigating latency of Trixi.jl. One of the reasons for quite a lot of invalidations was FixedPointNumbers.jl - which became a dependency because of TriplotRecipes.jl via PlotUtils.jl. Hence, I wanted to see where this is used and I could only find a use case for it when calling RGB. Thus, I replaced RGB(0.7,1.0,0.8) by "LightCyan", which comes quite close as far as I can tell.
Since I wanted to be sure that everything still works, I wanted to run the tests. But there was no test folder, so I added the examples as basic tests and set up the corresponding GitHub actions for CI.
 A first test shows that it can reduce the latency of using Trixi by ca. 0.8 seconds.

The invalidations CI run fails because of https://github.com/timholy/SnoopCompile.jl/issues/327

Looks like CI passes. I will bump the version number to make it easier for you, @pazner, to release a new version.

Thanks @ranocha!

Great work, @ranocha, thanks for looking into this!


Create organizational endorsements importer #115, bug fixes in Add New Candidate, Add New Election pages

👍


Conmon fixes

When testing ocid against the clear containers runtime we found 2 issues:

The bundle path is missing from the create command passed to the container runtime.
The pid file passed through --pid-file is not an absolute path and could lead to potential issues if the runtime chdir before getting called.

This PR aims at fixing those 2 issues by explicitly building and passing the bundle path to the runtime and by creating a per pid absolute path to the pid file.

@sameo thanks! just a question and need CLA signed, LGTM otherwise

@runcom I changed the logic and conmon now has --bundle and --pidfile command line options. oci.go constructs the paths and passes that down to conmon.
I still build default values for both options, please let me know if that's fine with you.

I still build default values for both options, please let me know if that's fine with you.

Thanks @sameo, that's fine with as long as it is for @mrunalp as well

On 11/15/2016 09:55 PM, Samuel Ortiz wrote:

@sameo commented on this pull request.

In conmon/conmon.c https://github.com/kubernetes-incubator/cri-o/pull/194:

} else {

snprintf(cmd, CMD_SIZE, "%s create %s --pid-file pidfile",

	 runtime_path, cid);

snprintf(cmd, CMD_SIZE, "%s create %s %s --pid-file %s",

What I'm worried about is that we're not handling the error from
runc properly.

Out of curiosity, would the error be that we'd be giving runC a second
argument, or that it does not parse this second argument as a bundle path ?

If you try it in a shell:
% sudo ./runc create blah /some/path
Incorrect Usage.
NAME:
runc create - create a container
USAGE:
runc create [command options]
Where "" is your name for the instance of the container
that you
are starting. The name you provide for the container instance must be
unique on
your host.
DESCRIPTION:
The create command creates an instance of a container for a bundle.
The bundle
is a directory with a specification file named "config.json" and a root
filesystem.
The specification file includes an args parameter. The args parameter is
used
to specify command(s) that get run when the container is started. To
change the
command(s) that get executed on start, edit the args parameter of the
spec. See
"runc spec --help" for more explanation.
OPTIONS:
--bundle value, -b value  path to the root of the bundle directory,
defaults to the current directory
--console value           specify the pty slave path for use with
the container
--pid-file value          specify the file to write the process id to
--no-pivot                do not use pivot root to jail process
inside rootfs.  This should be used whenever the rootfs is on top of a
ramdisk
--no-new-keyring          do not create a new session keyring for
the container.  This will cause the container to inherit the calling
processes session key
runc: "create" requires exactly one argument
% echo $?
1
--
Aleksa Sarai
Software Engineer (Containers)
SUSE Linux GmbH
https://www.cyphar.com/

If you try it in a shell: ``` % sudo ./runc create blah /some/path Incorrect Usage.

@cyphar You're right, I can reproduce that with the latest runC code. FWIW, that was recently changed with commit ba1c0b4f.
@cyphar, @runcom, @mrunalp, I fixed my PR so that it uses --bundle to pass the bundle path to the OCI compatible runtime.

@sameo

FWIW, that was recently changed with commit ba1c0b4f.

What, you don't run runC off master? You need to live life more on the bleeding edge. :wink:

Thanks everyone :) LGTM


Programatically populate the Useragent string

http://stackoverflow.com/questions/3626071/retrieve-user-agent-programatically/5261472#5261472

Hey @jbeemster - do you think we should populate this by default for Android? (Still allowing manual override obviously.) It sounds like macOS basically does this...

We should add it as a builder option with the option to then manually override it still there.  The NSUrl library in Objective-C does populate this automatically already.

Current default user agent okhttp/4.12 provided by snowplow Android tracker seems to be marked as bot net with snowplow Backend. I assume it because of lack of variety for every request from every app instance.
I would consider to provide user agent with Android platform version, phone manufacture build and snowplow tracker version by default. Or at least mention in setup readme that user agent is required to be changed. We have now production traffic marked as bot spam.

Thanks @plastiv for raising up this old issue with the IAB enrichment.
It has been recently fixed in the version 1.4.0.
You can find further details here: https://snowplowanalytics.com/blog/2020/03/10/snowplow-android-tracker-1.4.0-released/#iab
About the original topic: it's possible to customise the User Agent used by the Android tracker by setting the User Agent of the tracker’s Subject: setUserAgent.


LOOKING FOR MAINTAINERS

Hey I am curious is this still maintained at all? Thanks!

Yes it is https://github.com/matryer/bitbar/commits/master

PRs are being submitted but CI is failing and comments are being ignored. Example: https://github.com/matryer/bitbar/pull/474. No PR has been merged since May 7.

I'll look into CI

2016 release works just fine, but you are free to build the same binary today.

I will give it a try. BTW, it would be nice to mention brew cask install bitbar as an alternative install method for those embracing the terminal.

@ssbarnea feel free to file a PR with that added to the docs, it is more than welcome

@gingerbeardman can we expect a stable release for v2 in the near future?

@xilopaint what is unstable for you?

@xilopaint what is unstable for you?

Well, v2 was released as a beta.

What is in a name? Often in software development the final beta becomes the release version.
But seriously, if you have issues then please file bugs about them.

What is in a name? Often in software development the final beta becomes the release version with no code changes other than the name.

The name is important since people can't be sure your software is stable or a "final beta" if you don't make it public. Like many people I've installed your software with Homebrew. That installed v1.9.2 which is considered the final version. If you think v2 beta 10 is mature enough to be released as final, please make it real so everyone will start to use it.

Oh, I see. Actually I use 1.9.2 myself so I see your point.

@gingerbeardman Check for Updates fails, by the way.

@gingerbeardman Check for Updates fails, by the way.

same for me

What is in a name? Often in software development the final beta becomes the release version with no code changes other than the name.
But seriously, if you have instability problems then please file issues about them.
If it works, then use it. 👍

Wow, kinda true and wrong at the same time.
Are you using Android beta? Or windows prerelease? The same one for years?
Beta means "warning", not for everyone, might break.
If it's stable release it.
Release early, release often.

"Is this project dead?" is the title of this issue. And the answer is "yes". Unfortunately.

I do not agree with the above.

I do not agree with the above.
The project is in a difficult position. But it's not dead, nor is it abandoned.

The last commit that changed the codebase dates from August 2016. There are 28 open pull requests, the vast majority are 3 years old. There's no code being written, there's no code being reviewed.
Sorry, but it feels like a dead project.

With all due respect, that view is from the outside. You have no idea what is going on the other side.
https://medium.com/@fommil/the-open-source-entitlement-complex-bcb718e2326d

Based on the thread on this ticket I would rename it to "looking for maintaiers". When a project is reaching a stage like this, what is constructive is to look for others that can take care of its maintenance.
I do not think that @xilopaint was impolite and while he may have no idea about what is happening on the other side, his comments is also true.
One thing that I learned over the years of maintaining various open-source projects is that you should be realistic abotu what can you expect as an outcome: if you realise soon that you will never make money out of it and that you will reach a point where giving your "child" for adoption would be better for both, is ok. The fun part is that with code you don't have to give-up control completly,... the bad part is to get used to the idea that new maintaines may steer the project in a direction that may not be exactly what you are dreaming about.
One thing is sure, we all get emotional about it...

@gingerbeardman Submitting PRs, when there's nobody to review or merge them, is a waste of time. Not all OSS users are programmers and not all program on the platform of the OSS they use! OSS contributions are not only contributors of code, but also of feature requests, ideas, feedback, bug reports, etc. We all contribute to this project - like it or not, with or without PRs! So, easy on your patronizing attitude!
To me, the most basic signal that an OSS is dead is when the Update feature shows an error! And BitBar does!

Also, the last commit in master is from May 7, 2018, i.e. more than one year ago, and it was a merged PR. This is far from a release, far from showing any vital signs!

Agreed with these guys ^. We are not trying to be impolite Matt, but it is frustrating that the project has been dead for years and you can't even admit that. Why not pass on maintainership to another competent dev? There have been a lot of us who have made contributions here and who have long histories of maintaining open source projects. It certainly would be a better use of your time than posting random Medium articles without any explanation, and then closing the issue as if it's been resolved.

Just to clear a few things up: I am not the project owner, I'm just an interested guy that volunteered to help field issues. I'm the type that likes to act rather than discuss, so I sent a tweet and here we are.
https://twitter.com/gingerbeardman/status/992312705217265665
Any of you could have done the same, and can still do so: if you want to become a maintainer, then you need to contact the project owner @matryer (which, although we share a similar first name, is definitely not me).

Also, the last commit in master is from May 7, 2018, i.e. more than one year ago, and it was a merged PR. This is far from a release, far from showing any vital signs!

This commit just updated README. The last commit that changed the code base is from August 2016.

Related request for more transparency about continued development ;). I would love to see this project get a new boost or an official fork.

@austinbv @m-cat @ssbarnea
Hey all, apologies for my radio silence, I've had a very busy year with a lot of demands on my focus and I haven't been able to give BitBar the love it deserves.
However, I am more than happy for others to join in to help maintain the project. My reluctance comes from the fact that everybody wants BitBar to do something slightly different, and so the more maintainers we have, the more bloat the project will take on. But if we can agree a minimalistic approach to what gets added, and focus on bug fixing etc. in the short term, then pleeeeease let me know and I'll add you as a maintainer.

To bring the repo back to life, I propose we take the following action:

Close all stale PRs (heartbreaking for some, but a simple move like this will put everybody back on the same page)
Bring in the good fixes and improvements from the forks (the owners of the forks are welcome to become maintainers, there's no point dividing our efforts)
Release v2.0.0 as a major milestone marking the fresh start for the project

@gingerbeardman @austinbv @m-cat @ssbarnea What do you think?

Sounds good.
I'd ask if we're going to be so bold about things, why not just move lock-stock to the Swift fork which should hopefully ensure a longer lifetime?

Close all stale PRs (heartbreaking for some, but a simple move like this will put everybody back on the same page)

From what I remember, some of the PRs were good, just waiting on CI issues to be resolved. I would consider ignoring CI and merging them, if there are no other issues. If there are issues with the PR, give the contributors one month to whip the PRs into shape.
I know 30 PRs is a lot to manage considering you have limited resources, but instead of closing them all, just punt them back to the contributors. If they're no longer active, then just close the PR.
I can help with some of the workload, though I'm thinking my rate would be reviewing one or two PRs every weekend. I was really excited to help, some time ago, because I love the project and wanted to polish up its rough edges. But I no longer have much time.

I am happy to hop in and contribute too

Happy new year! Here's hoping 2020 brings a revival of BitBar... 🎉

Happy new year! Here's hoping 2020 brings a revival of BitBar... 🎉

BitBar 2.0.0 is the good news that 2020 needs

Would be awesome if this jewel gets some new life on the dev side =)

FTR, there is an alternative Swift-based project to BitBar, and seems to be actively maintained: https://github.com/swiftbar/SwiftBar

SwiftBar (above) is currently 10.15+ only

I made a proposal to bring the SwiftBar code into BitBar and blend the two projects together. I'd love to get all your views on the issue over at https://github.com/swiftbar/SwiftBar/issues/95.

Please see https://github.com/matryer/bitbar/issues/607