FLAKY: grpc/core/pull_request/macos/grpc_basictests_dbg

The C++ test tends to timeout.
2018-12-05 15:44:13,472 TIMEOUT: run_tests_c++_macos_dbg_native [pid=63354, time=519080.8sec]

Recent 34 builds are failed:
https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:grpc%2Fcore%2Fpull_request%2Fmacos%2Fgrpc_basictests_dbg
@jtattermusch

After rolling back to sierra workers, the macos tests seem to be passing again.


WIP for Cross DC consumer

Some initial refactoring and cleanup. Have some more, but breaking it up into more logical chunks.

Yeah I have some more cleanup as well, just broke out a more contained pr so we can kind of get on the same page first.


New version: Metatheory v0.2.0

Registering package: Metatheory
Repository: https://github.com/0x0f0f0f/Metatheory.jl
Created by: @0x0f0f0f
Version: v0.2.0
Commit: a3e23f70168f788d298ebef8f31df5cff47fa4b4
Reviewed by: @0x0f0f0f
Reference: https://github.com/0x0f0f0f/Metatheory.jl/commit/a3e23f70168f788d298ebef8f31df5cff47fa4b4#commitcomment-48139075
Release notes:

Many, many improvements: faster and more extensible core implementation of EGraphs, syntax of theories between backend is now consistent, added the option for bidirectional equivalence rules, added verbosity options, changed and stabilized and extraction mechanisms and API. Dollars can be used in l.h.s of symbolic rules to escape (as in quoted expressions in regular Julia). Added fancy equality saturation result reports, and a lot of tests to make it prove equivalences in different types of logic!

@0x0f0f0f hi, please see above, you need to fix some compat bounds
[noblock]


Figure out a better way of doing the version check

So, right now, hookui just checks if the game's version is what we expect it, as breakages are very likely, because of the injection method we use.
I began to do a hash check instead, which would verify that the index.js is the same in new version as old one, and then accept it that way.
This would only require hookui updates when the index.js changes, which hopefully would be less common that game updates themselves.
However, when index.js changes, we'll still be at the same position as we're at today.
So need to figure out a better solution, if there is one.

Just to add here that it seems it works fine with last game patch (1.0.15f1) but the message that isn't compatible pops many times until final load.

Just to add here that it seems it works fine with last game patch (1.0.15f1) but the message that isn't compatible pops many times until final load.

@fleps huh, strange, I haven't seen that myself. Could you do a recording of the issue and post it as a new issue? Shouldn't behave like that

@Captain-Of-Coit this is the message I see when I launch the game.

Please update your HookUI mod from Thunderstore :) It's compatible with 1.0.15f1

Interesting.
My question is why does the latest version of HookUI here say: "v0.3.1 Latest @Captain-Of-Coit Captain-Of-Coit released this last week"
But the version on https://paradoxmods.net/files/28-hookui/ AND https://thunderstore.io/c/cities-skylines-ii/p/CaptainOfCoit/HookUI/ is HookUI 0.3.3.
Do they have authorized versions? Why isn't the version on github 0.3.3?
Thanks!


docs: Create basic story for < VisualDescription />, < ColorDescription />

Monday ticket
Add basic story by structure similar to existing ones

https://github.com/mondaycom/vibe-storybook-components/blob/master/CONTRIBUTING.md
https://github.com/mondaycom/vibe-storybook-components/blob/master/COMPONENTS_DOCUMENTATION_GUIDELINES.md

I would like to work on this

Closed thanks to @Dhoni77! 💪


Add lua language extension dependency.

This extension will depend on an already existing lua language extension installed, will probably be this one (https://marketplace.visualstudio.com/items?itemName=sumneko.lua)

Don't really want to force the user to use a specific lua language extension.
Should probably just add a disclamer to the readme (#12).


add Spark app to Gnosis Chain

Spark is already in the Safe app directory for Mainnet and Goerli. Looking to add it to Gnosis Chain.
Original PR: https://github.com/5afe/safe-apps-list/issues/261
Type

Update

Compatible Networks
- Mainnet
- Goerli
- Gnosis Chain

Also, the url for the app has changed from app.sparkprotocol.io to app.spark.fi

App should be available now


The course without download link on the site cannot be downloaded in udeler

There is a course which do not have download link on the udemy website and i tried downloading the course through the udeler application but its stuck on "building course data". Its stuck on above message since couple of hours. Can udeler download courses which do not have download link on the websites? Your help is appreciated. Thank you.

Hi @hussylalani  I would need the course link to check whats wrong.
And what version are you on?

I am experiencing the same problem with this course
https://www.udemy.com/hands-on-infrastructure-automation-with-ansible
It looks like something's changed recently.. but the videos are still easy to locate using other chrome extensions so it's probably not too hard to fix

@vesper8 Are you facing this issue only with the course you mentioned.?
What version are you on?

@hussylalani  @vesper8  Do you still face the same problem in v1.5.4? If yes, share some details like at what lecture it freezes. Its hard for me to fix without much info and without having access to the same course.

I ended up installing https://github.com/r0oth3x49/udemy-dl and that one was already patched so I can't say if yours works now sorry

@vesper8 No issues. Actually in order for me to fix the issues related to specific courses I need to have access to the course.
I am closing this issue for now.

https://www.udemy.com/tableau-for-marketing/
I am trying to download this course and it fails every time at 16%. Please help asap.


improve custom scroll behavior example

Sorry - the last PR was a bit rushed and needed a little improvement. It now includes a fork of vue-router with the necessary patch to make the scroll behavior transition hook work.

Hi @Atinux it seems like this commit has erased the custom scroll behaviour example? Would you mind taking a look? Thanks!

Oh wait - sorry. The behaviour has now been incorporated to the core right? 🤦♂


Can't import Bestiary 5 - Danava Pillar (Titan)

Can't import statblock:
Danava Pillar (Titan)      CR 24/MR 10
XP 1,228,800
Danava pillar (Pathfinder RPG Bestiary 5 246)
LN Colossal outsider (extraplanar, lawful, mythic)
Init +26/+6, dual initiative; Senses darkvision 60 ft.; Perception +38
Defense
AC 49, touch 24, flat-footed 36 (+9 deflection, +12 Dex, +1 dodge, +25 natural, -8 size)
hp 555 (26d10+412)
Fort +27, Ref +21, Will +24; +8 vs. mind-affecting effects; second save
Defensive Abilities fortification 50%, iron resilience, unstoppable[MA]; DR 20/epic; Immune aging, dazed, death effects, disease, divinations, staggered, stunning; SR 40
Offense
Speed 90 ft.
Melee +3 axiomatic tetsubo +40/+40/+35/+30/+25 (6d8+30/19-20/×5 plus 2d6 vs. chaotic) or
3 slams +37 (2d8+27)
Space 30 ft.; Reach 30 ft.
Special Attacks devastator, mythic power (10/day, surge +1d12), rock throwing (120 ft.), trample (4d8+27, DC 41)
Spell-Like Abilities (CL 20th; concentration +32)
Constant—air walk, haste, mind blank, true seeing, water walk
At will—bestow curse (DC 26), break enchantment, divination, greater dispel magic, sending
3/day—greater scrying (DC 29), harm (DC 28), heal (quickened), mass suggestion (DC 28), quickened chain lightning (DC 28), quickened heal
1/day—greater planar ally, mass heal, soul bind (DC 31), tsunami[APG] (DC 31)
Statistics
Str 47, Dex 34, Con 35, Int 27, Wis 28, Cha 34
Base Atk +26; CMB +53 (+57 sunder); CMD 84 (86 vs. sunder)
Feats Combat Reflexes, Critical Focus, Dazing Assault[APG], Greater Sunder, Greater Vital Strike, Improved Critical[M], Improved Initiative[M], Improved Sunder, Improved Vital Strike, Power Attack[M], Quicken Spell-Like Ability (chain lightning), Quicken Spell-Like Ability (heal), Vital Strike[M]
Skills Acrobatics +12 (+36 to jump), Climb +44, Craft (any one) +35, Diplomacy +38, Intimidate +41, Knowledge (any one) +34, Knowledge (arcana) +34, Knowledge (engineering) +34, Knowledge (nature) +34, Knowledge (planes) +37, Perception +38, Sense Motive +38, Spellcraft +37, Swim +47, Use Magic Device +41
Languages Abyssal, Celestial, Common, Infernal; telepathy 300 ft.
SQ powerful blows (slam)
Other Gear +3 axiomatic tetsubo[UC]
Ecology
Environment any
Organization solitary
Treasure standard (~[!i]+3 axiomatic tetsubo~[!n]~[!^]ue~[!n], ~[!i]danava mantle~[!n], other treasure)
Special Abilities
Combat Reflexes (13 AoO/round) Can make extra attacks of opportunity/rd, and even when flat-footed.
Critical Focus +4 to confirm critical hits.
Damage Reduction (20/epic) You have Damage Reduction against all except Epic attacks (weapons with a +6 bonus).
Danava Mantle Mantle grants +9 deflection bonus to AC to mythic Colossal creatures.
Darkvision (60 feet) You can see in the dark (black and white only).
Dazing Assault (DC 36) -5 to all attacks and maneuvers but struck foes are dazed 1 rd (Fort neg).
Devastator (Su) Full-rd action bypasses all DR, hardness, can crit objects, sunder auto-threat. Counts as Vit. Strike.
Dual Initiative (Ex) You act a second time each round at -20 from your normal initiative
Fortification 50% You have a chance to negate critical hits on attacks.
Greater Sunder When destroying an item, extra damage is transferred to the wielder.

Immunity to Dazed You are immune to the dazed condition.

Immunity to Disease You are immune to diseases.
Immunity to Divinations You are immune to divinations.
Immunity to Staggered Immune to staggered.
Immunity to Stunning You are immune to being stunned.
Improved Initiative [Mythic] When rolling initiative, use 1 power to treat the roll as a natural 20.
Improved Sunder You don't provoke attacks of opportunity when sundering.
Iron Resilience (1/round) (Ex) Completely ignore an attack once per round, spend mythic power for extra uses.
Power Attack [Mythic] Use 1 power to eliminate attack penalties of Power attack for 1 min.
Powerful Blows (Ex) The specified attack adds 1-1/2 times your Str bonus on damage rolls
Quicken Spell-Like Ability (Chain Lightning) Spell-like ability is cast as a swift action up to 3/day.
Quicken Spell-Like Ability (Heal) Spell-like ability is cast as a swift action up to 3/day.
Rock Throwing (120 ft.) (Ex) You can throw big rocks. They hurt.
Spell Resistance (40) You have Spell Resistance.
Surge (1d12) Spend a use of mythic power to add the roll of a die to a d20 you just rolled
Telepathy (300 feet) (Su) Communicate telepathically if the target has a language.
Unstoppable (Ex) Automatically end any negative conditions on self at end of turn.
Vital Strike [Mythic] Vital Strike multiplies dam bonus by number of extra weapon dice rolled.

MR


Can't add issues

When attempting to create a new issue, my screen goes static. Running android 5.0 on nexus 5.

What you mean with 'goes static'?
App crashes, not react? It completes the issue or fails on that?

It was crashing when this was happening. The app was failing and wouldn't create the issue. By goes static, like a static on an older television.

It was crashing when this was happening. The app was failing and wouldn't create the issue. By goes static, like a static on an older television


#27 - Refactor System Management Admin page

Closes #27
Make page contents more condense and easier to view. Refactors out namespace, system, and instance services into hooks.
Follow on tickets to add functionality that seems missing: #86, #87, #88, , #89

I'll leave reviewing the actual code to someone else, but a couple of comments just from playing around with it.

I don't feel like there's much value in having the System cards collapsible.  It feels like it just adds an extra click to getting to the controls.  And once you expand one card, you gain nothing from having the others collapsed, because all of the space is taken up anyway.
The cards don't gracefully handle long system names.  I got a scrollbar underneath a slightly long name.

The attached screenshot shows an example of both items in action.


[DF-417] allow individual users to be deleted in the ui

Add a delete button in the /dashboard/users/[id] page to hit the DELETE /api/users endpoint. Make sure it has a confirmation modal.
From SyncLinear.com | DF-417

/bounty $30

/attempt #591

/attempt #591

/attempt #591

What exactly are we meant to do?

Where should i add the button??

@mrkirthi-24 I'd create a ... dropdown containing a delete button. Let's put the button in the upper right corner, at the same height as the "Segments" and "Events" headers.

Got it @maxgurewitz

Hi @maxgurewitz how do i create a user?

/attempt #591

@mrkirthi-24 added this to the FAQ section for you!
https://docs.dittofeed.com/contributing/running-locally#why-dont-i-see-any-users-in-the-dashboard


Testing RA-02 SX1278 module with STM32L031

I am trying to get this example project working on the STM32L031 development board:
https://www.st.com/en/evaluation-tools/nucleo-l031k6.html
I cannot fully understand how am I intended to test this. I have 2 identical STM32L031 devices and connected each STM32L031 to the RA-02 SX1278 lora module.
One is running LoRa transmit code:
  while (1)
  {
	  char*  send_data;
	  send_data = "Hello!";
	  if(LoRa_transmit(&myLoRa, (uint8_t*)send_data, 6, 100) == 1){
		  printf("Transmit ok \n");
	  }
		else{
			printf("Transmit failed \n");
		}
		HAL_Delay(1500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

The other is running receive code:
  LoRa_startReceiving(&myLoRa);
  uint8_t received_data[10];
  uint8_t packet_size = 0;
  while(1){
    packet_size = LoRa_receive(&myLoRa, received_data, 10);
    if(packet_size > 0 ){
    	printf("received data = %s \n",received_data);
    }
    HAL_Delay(500);
  }

The logs side by side:

Is that the expected behaviours of this library?
How to ensure I receive the correct data?
Is it normal that it fails to transmit every now and then?

Hello
Using char* without memory allocation is not recommended.
Please use char* as array and use sprintf and snprintf functions like this:
char   send_data[20];
snprintf(send_data, 6, "Hello!");
LoRa_transmit(&myLoRa, (uint8_t*)send_data, 6, 100);

I think this should solve your problem.

@SMotlaq I have updated the transmitter code as you have suggested but im afraid not much changed. I believe issue lies in the receiver code. Something is not right.
The receiver is constantly printing garbage even when I dont have transmitter powered.

Please send me your project and codes
<EMAIL_ADDRESS>

@SMotlaq
I can share my project through here. You access it via my github:
https://github.com/krupis/Lora-STM32
Additionally, I have put a scope on the DIO0 pin on the receiver device. It is never triggered but on the console it prints the received garbage data. Does your receiver code utilize DIO0 rx interrupt?

Have you checked what value LoRa_init() function returns?

Have you checked what value LoRa_init() function returns?

Yes. I have added the following to my code:
  LoRa_reset(&myLoRa);
  uint16_t lora_ret = LoRa_init(&myLoRa);
  printf("Lora return value = %u \n",lora_ret);

and the result:
Lora return value = 200
Starting RX mode

If it would be helpful, I can connect logic analyzer to SPI pins and check what happens

1- Please reset the buffer first, using memset to check that we get any packet or not:
uint8_t received_data[10];
memset(received_data,  NULL, 10);

2- Also please send a variable data from sender. For example "Hello 1", "Hello 2", ...
3- Print the exact values of the received_data. Not the character or ASCII.

@SMotlaq
I have modified my receiver code as following:
	if(MODA_LORA == 0){
		printf("Starting RX mode \n");
		LoRa_startReceiving(&myLoRa);
		uint8_t received_data[10];
		memset(received_data,  NULL, 10);
		uint8_t packet_size = 0;
		while(1){
		packet_size = LoRa_receive(&myLoRa, received_data, 10);
		if(packet_size > 0 ){
			for(int i = 0; i<packet_size;i++){
				printf("received data[i] = %u \n",i,received_data[i]);

			}
		}
		memset(received_data,  NULL, 10); // Clear the received data buffer after it is received
		packet_size = 0; // set packet size to 0 after receiving data.
		HAL_Delay(500);
		}
	}

and my transmitter code as following:
	else if(MODA_LORA == 1){
		printf("Starting TX mode \n");
		while (1)
		{
			char   send_data[20];
			for (int i = 0; i < 100; i++)
			{
				snprintf(send_data, 20, "test%d", i); // puts string into buffer
				printf("String to send = %s and length =%u \n", send_data,strlen(send_data)); // outputs so you can see it
				if(LoRa_transmit(&myLoRa, (uint8_t*)send_data, 6, 100) == 1){
					printf("Transmitting %s successful \n",send_data);
				}
				else{
					printf("Transmit failed \n");
				}
				HAL_Delay(2000);
			}

		/* USER CODE END WHILE */
		/* USER CODE BEGIN 3 */
		}
	}

The logs side by side:

As you can see lora receiver receives strange data. This data is being does not have anything to do with my lora transmitter since it will keep receiving:
received data[i] = 0
received data[i] = 1
received data[i] = 2
received data[i] = 3
received data[i] = 4
received data[i] = 5
received data[i] = 6
received data[i] = 7
received data[i] = 8
received data[i] = 9

Even when my tranmsitter is powered OFF.

I will run your code on my hardware as soon as possible and tell you the result.

I will run your code on my hardware as soon as possible and tell you the result.

Sounds good. Please let me know if you are able to reproduce the issue at all. :)

@SMotlaq
I have recently watched your Youtube video regarding this library.
I have noticed a few comments:

Perhaps my issue is related to this?
In my case, NVIC settings are as following

@SMotlaq
Additionally, I do not fully understand whether DIO0 signal is set high or low when message is received? Could you confirm whether it is active LOW or active HIGH? I havent been able to find this information

When the module receives a valid LoRa packet, it changes the DIO0 from LOW to HIGH (I don't know how long this pin stays HIGH). You can enable an EXTI in the rising edge mode to detect arriving packets.
You didn't use interrupts in your code, so I don't think that is the reason of your problem. But you can test it. The polling mode is not recommended. It's better to use interrupts.

When the module receives a valid LoRa packet, it changes the DIO0 from LOW to HIGH (I don't know how long this pin stays HIGH). You can enable an EXTI in the rising edge mode to detect arriving packets.
You didn't use interrupts in your code, so I don't think that is the reason of your problem. But you can test it. The polling mode is not recommended. It's better to use interrupts.

I do not fully understand what you mean. In your LoRa_init function, you have the following:
		// DIO mapping:   --> DIO: RxDone
			read = LoRa_read(_LoRa, RegDioMapping1);
			data = read | 0x3F;
			LoRa_write(_LoRa, RegDioMapping1, data);

So from what I understand, you enable the RX interrupt.
As I have previously mentioned, when I probe the DIO0 pin, it is never toggled HIGH so that should mean that no data is being received, but some garbage is being printed. Can you help me understand how this works?
Would you be able to provide any clues on how to further debug the issues with my lora receiver? Why would it be constantly receiving:
received data[i] = 0
received data[i] = 1
received data[i] = 2
received data[i] = 3
received data[i] = 4
received data[i] = 5
received data[i] = 6
received data[i] = 7
received data[i] = 8
received data[i] = 9

and no DIO0 interrupt received?
At this point I dont even know what should I test next.


onClick Issues

I have a table that includes a cell with a Button, I'd like to use that button to control the state of a Modal.  When adding onClick to the button, the 'click' is being registered multiple times when the table is being rendered and not at all if the user actually clicks the button. Here is a CodeSandbox with a working example of the issue:
https://codesandbox.io/s/modest-shape-zhw157?file=/src/App.js

Wrap your onclick function.
onClick={() => console.log('clicked'}}

Argh.  Why is it the little things! Thanks.


Improve error handling and resource cleanup for PacketCapture

The patch fixes the following issues:

The local pcap file was not closed on error. The patch ensures the file is closed regardless of success or failure.
The pcap file was not updated to status.filePath and was not uploaded to file server if not all packets have been captured. The patch ensures it's updated to status and uploaded as long as any packet is captured.
The Complete condition was not set correctly in one case. The patch uses two errors to track capturing error and uploading error separately.
The unit tests could report false negative as they only check that unexpected conditions don't exist, while they should check expected conditions exist.
Change the local pcap path's permission to 700.
Avoid panic when handling delete events containing DeletedFinalStateUnknown objects.
Reduce the min and max retry intervals to reduce the possibility of timeout.
Make a deepcopy before updating object got from lister, otherwise data race may happen and index may be messed up.

It also makes some style improvements and simplifies a few code.
Follows up #6756

LGTM

/test-all

/skip-all


Add a retry mechanism for scraping failure

Since scraping is a very integrative process it can fail from many causes. Instead of making the user retry himself, it would be good if there was a retry mechanism in the code that would retry x times if the scraping failed.

I will check more in-depth later, but for now, I see two options:

Use Enable/Disable state for importers like we have for exporters.
Add a retry button on the importer status (in the middle of the screen).

I think option 2 is more user-friendly, since the scraping, by definition, is not stable so you need to retry one of the importers in many cases.
But this option is more complicated since then you have more than one button to trigger the process, so you need to create a locking architecture to avoid a parallel process.
Also, using enable/disable checkbox is keeps the way we are working today- manage the config and save it, and use it as is when clicking on Run. Use a retry button require to create a one-time config object and use it to scrape (it is not a bad thing, I just describing why I want the ** to implement option 1**)

The third option we discussed is to identify the events that require us to retry- the timeout events, for example, and automatically retry the importer.


eventlog: rename LoggerMiddleware to Logger, fix comment

#73  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jespert and the rest of your teammates on  Graphite


libconceal.so: has text relocations with 1.0.6

When using
compile 'com.facebook.conceal:conceal:1.0.5@aar'
in build.gradle, the app runs fine.
But when the version is increased to 1.0.6, it does not run anymore on Genymotion emulators.
compile 'com.facebook.conceal:conceal:1.0.6@aar'
Error output:
com.facebook.crypto.exception.KeyChainException: java.lang.UnsatisfiedLinkError: dlopen failed: .../lib/x86/libconceal.so: has text relocations

Is the emulator running Android 6? It did happen to me on Android 6, but not previous.

Yes, it's an Android 6 emulator. But it worked on the same emulator with version 1.0.5 and stopped to work with 1.0.6. That's why it looks like there got something broken with 1.0.6.

Yes, it worked because with the new version we recompiled the included OpenSSL and there is a missing option (one that avoids producing those text relocations).
I confirmed with manual tests that regenerating OpenSSL with that option solves the problem. I will make some more tests by correctin the build scripts and building the whole thing again.
There should be a new fixed version for tomorrow.
In the meantime, you can use a nasty but very easy workaround that is changing targetVersion in your gradle file to API 22 (only for testing on Android 6! if needed!).

Many thanks for the quick answer. Great to hear that you found the cause already.
No problem with testing, I just didn't want to release the app with this problem because I'm not 100% sure that it's not affecting any real device.

You can try with conceal 1.0.7. It's already available through Maven.
It's just 1.0.6 with the right compilation flags so there's no text relocations (it works in Android 6, and it doesn't fire warnings in previous versions).

Thanks for the fix, I updated to 1.0.7 and it works fine.


MolFromSmiles says “Can't kekulize mol” for pyrrole, indole, and other aromatic SMILES

Describe the bug
Several valid SMILES (including pyrrole, indole, and other compounds including aromaticity) are rejected by MolFromSmiles.
To Reproduce
Code to run, with rdkit 2021.03.5:
from rdkit import Chem
bugs = [
    'c1cccn1',
    'N#Cc3cncc3c1cccc2OC(F)(F)Oc12',
    'COc1cc(cc(OC)c1OC)/C=C/C(=O)O[C@@H]3C[C@@H]4CN5CCc2c6ccc(OC)cc6nc2[C@H]5C[C@@H]4[C@@H]([C@H]3OC)C(=O)OC',
    'c1cncn1',
    'c1cccc2nccc12',
    'Cc1cc2nnnc2cc1',
    'O=C(OC)[C@@]2(C[C@H]4C[C@@](O)(CC)C[N@@](CCc1c3ccccc3nc12)C4)c5cc9c(cc5OC)N(C=O)[C@@H]6[C@]98CCN7CC=C[C@@](CC)([C@@H](OC(C)=O)[C@]6(O)C(=O)OC)[C@H]78',
    '[O-][N+](=O)c1ccc2ncnc2c1',
    '[O-][N+](=O)c1cnc(C)n1',
    'c1cccc2ncnc12',
    'Cc2cnc1ccccc12',
    'c1cccc2nnnc12',
    'n2cnc(NCc1ccccc1)c3ncnc23',
    'n1c3ccccc3nc1c2cscn2',
    'N[C@@H](Cc1cncn1)C(=O)O',
    'Sc1nc2ccccc2n1'
]
print([Chem.MolFromSmiles(smiles) for smiles in bugs])

The output is [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
Many messages of the following type are written to stderr:
RDKit ERROR: [23:53:08] Can't kekulize mol.  Unkekulized atoms: 0 1 2 3 4

(I would have expected to throw instead of writing to stderr, but I'm new to rdkit.)
Expected behavior
Correct generation of molecule. PubChem for example correctly determines that c1cccc2nccc12  corresponds to indole: https://pubchem.ncbi.nlm.nih.gov/#query=c1cccc2nccc12&input_type=smiles
Configuration (please complete the following information):

RDKit version: 2021.03.5
OS: macOS 11.6
Python version: 3.8.3
Are you using conda? yes
If you are using conda, which channel did you install the rdkit from? conda-forge

Should have noted: all these SMILES strings come from “ Jean-Claude Bradley Double Plus Good (Highly Curated and Validated) Melting Point Dataset”
Out of 3041 SMILES these are the only 16 ones that error when used in MolFromSmiles

These SMILES all have the characteristic that they have aromatic heteroatoms which should have an H on them but where that H is not present in the SMILES.
So pyrrole should be c1ccc[nH]1, not c1cccn1.
The SMILES in that dataset are syntactically valid, but chemically questionable.
A web search will turn up a number of possible solutions to this problem, but the absolute best one is to just fix the dataset.

Unfortunately, your exact example SMILES causes the same error: c1ccc[nH]1

@Bernadette-Mohr That's quite surprising and unlikely. Are you sure that's the SMILES which is causing the error?
Can you please try doing: m = Chem.MolFromSmiles('c1ccc[nH]1') directly from the Python prompt and confirm that you see the same error?

You are right, it does work from the command line! So this issue must be caused by some other process in the code I'm using.
Thank you, this brings me one step closer to a solution!


[Autocomplete] use Autocomplete size prop in renderInputs directly

fixes https://github.com/mui/material-ui/issues/35343
When we defined size: 'small' as default on TextField in a custom theme, passing size: medium on  Autocomplete does not work.
I'm not sure if this was on purpose but this seems like it's assuming default size prop to be medium.

[x] I have followed (at least) the PR section of the contributing guide.

Thanks for the PR.
Could you please add a test that verifies if the behavior is correct now?

See https://github.com/mui/material-ui/issues/35343#issuecomment-1363682739.


sysutils/monit: bug fixing, status api response

SettingsController: fix faulty deletion of alerts, cleanup code, new function notificationAction to import system notification settings
ServiceController: is a ApiMutableServiceControllerBase now
StatusController: retruns the Monit status as JSON, old behaviour via 'html' parameter
UI: accept FQDN as mailserver, 'Apply' doesn't restart Monit

Looks good, but we should get the post-install hook out with a native config migration eventually.
How much do you plan to edit this in the next 1-2 months? If you say not a lot we should merge it to core in March as discussed previously.

Not much. Small bug fixes eventually.

Merged, thanks!
Ok, then it's a plan... :)


Support ECR authentication

Is your feature request related to a problem? Please describe.
It looks like there is a lack of support for getting the API token required to authenticate against the ECR API. It would be great to be able to make use of the IAM Instance Profile assigned to a node which has GetAuthorizationToken permissions. It might look similar to this: https://github.com/awslabs/amazon-ecr-credential-helper/blob/master/ecr-login/api/client.go.
Describe the solution you'd like
The image updater supports ECR authentication
Describe alternatives you've considered
There do not seem to be any alternatives without code changes.

For additional context, this is the logged error I get when trying to use ECR:
time="2020-10-23T01:53:29Z" level=error msg="Could not get tags from registry: Get \"https://ACCOUNT_ID.dkr.ecr.us-west-2.amazonaws.com/v2/dev/my-image/tags/list\": http: non-successful response (status=401 body=\"Not Authorized\\n\")" alias=backend application=my-application image_name=dev/my-image image_tag=304dbc93e21898e95272d7cb81b61a671a8b7365 registry=ACCOUNT_ID.dkr.ecr.us-west-2.amazonaws.com

We can use aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken' and jam it into a k8s secret (it yields a base64 encoded username:password string) however the token is only valid for 12 hours so there would need to be a cronjob that updates this secret every 12 hours.

We currently have three methods for getting credentials right now - secret, pullsecret and env. Would a fourth option, that calls a script and re-uses its output as credentials, be sufficient for this use case?
For example we could introduce a new method ext:/path/to/script.sh, and you could either build your own image from the image updater's docker file or use an init container to copy the script to some location into the image updater's container.

A feature implementing my above proposal has been merged with #121 and will be part of v0.8 release.

I have no means to test against a real ECR instance, but would a script require some kind of parametrization in order to be able to retrieve credentials for the correct registry?

Hello,
I can try to help with testing. ECR support is crucial for me too.
One question before I can test: do credentials cached somehow? I mean, does argocd-image-updater read credentials from the secret, env variable or execute the script every time or only once and then use these results?
It looks like function SetEndpointCredentials sets credentials for RegistryEndpoint and never update that
https://github.com/argoproj-labs/argocd-image-updater/blob/6723a25cfcd3f117f0d234b5449db7a6cc68bc2d/pkg/registry/registry.go#L168
Sorry, I had no chance to look deeper.
If credentials are cached script will not help with ECR. By default, ECR tokens rotated every 12 hours.

It looks like credentials are cached if defined as a parameter of registry configuration and not cached if specified as annotation for the application.
So using that knowledge, I was able to annotate my applications with
annotations:
  argocd-image-updater.argoproj.io/image-list: org/app=XXXXXXXXXXXX.dkr.ecr.region.amazonaws.com/org/app
  argocd-image-updater.argoproj.io/org_app.update-strategy: latest
  argocd-image-updater.argoproj.io/org_app.kustomize.image-name: org/app
  argocd-image-updater.argoproj.io/org_app.pull-secret: secret:argocd-image-updater/aws-ecr-creds#creds

And create simple k8s CronJob to get token and update secret value:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ecr-secret-udpater
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ecr-secret-udpater
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ecr-secret-udpater
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: ecr-secret-udpater
subjects:
  - kind: ServiceAccount
    name: ecr-secret-udpater
---
apiVersion: v1
kind: Secret
metadata:
  annotations:
    description: this secret is dynamically updated by the k8s CronJob ecr-secret-update. store ECR registry user/token
  name: aws-ecr-creds
stringData:
  creds: will_be_set_by_the_job
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: ecr-secret-update
spec:
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - args:
                - -c
                - kubectl create secret generic aws-ecr-creds --from-literal=creds=AWS:$(cat /store/token) --dry-run=client -o yaml | kubectl replace -f -
              command:
                - sh
              image: org/kubectl:v1.19.4
              name: kubectl
              volumeMounts:
                - mountPath: /store
                  name: store
          initContainers:
            - args:
                - -c
                - aws ecr get-login-password --region us-west-2 > /store/token
              command:
                - sh
              image: amazon/aws-cli:2.1.6
              name: get-login-password
              volumeMounts:
                - mountPath: /store
                  name: store
          restartPolicy: OnFailure
          serviceAccountName: ecr-secret-udpater
          volumes:
            - emptyDir:
                medium: Memory
              name: store
      ttlSecondsAfterFinished: 100
  schedule: '* */6 * * *'

This approach works for me on v0.7.0. I can share AWS related policies I used to grant permissions and details on org/kubectl:v1.19.4 image is someone is interested.

@vistrcm Thank you for your input! So I see the problem with the cached credentials.
I think an expiry time for the credentials might help in case of the credentials being cached on registry level, something like a new toggle credentials_expire: <duration> for the registry configuration. If credentials are older than <duration>, they'll be regenerated from the script.
I'm planning to release v0.8 this weekend hopefully, so such a change (if helpful) could make it in there, I believe.

I use the same solution currently to update ECR creds and it would be great if the image-updater could handle this itself.

@vistrcm Thank you for your input! So I see the problem with the cached credentials.
I think an expiry time for the credentials might help in case of the credentials being cached on registry level, something like a new toggle credentials_expire: <duration> for the registry configuration. If credentials are older than <duration>, they'll be regenerated from its source (i.e. secret read again, or script executed again)
I'm planning to release v0.8 this weekend hopefully, so such a change (if helpful) could make it in there, I believe.

that would be great! thank you

So with #124 merged, you can now specify an expiration time for your credentials, when configured at the registry level (i.e. in registries.conf). So now you can use something like the following:
credentials: /some/where/eks-creds.sh
credexpire: 11h59m

The script at /some/where/eks-creds.sh should be a wrapper to call the aws CLI with all required parametrization, and output the resulting credentials as single line on stdout in the format <username>:<token>. As long as credentials are not expired (or image-updater is restarted), script will not be called and credentials are cached in-memory. After expiration time, the script will be called again to generate a new token.
Of course you would have to create an init container that copies required tools into the image updater's container.
Is this something you'll be able to use? I'll not be able to provide native ECR/AWS support, because I don't use AWS.

I'll try to test that in the next week or two. There's a typo in the docs, you mention EKS instead of ECR 😉

I have released v0.8.0 today. To simplify testing, it introduced a new command test to the argocd-image-updater CLI. This command can also be used to test authentication to registries, without having to run it inside Kubernetes (and therefore possibly build a new image) and without the need to trial&error annotate your Argo CD applications.
You can simply test an authentication script as follows:
argocd-image-updater test <your_image_on_ecr> --credentials ext:/path/to/your/script --registries-conf /path/to/your/registries.conf

It can also do more to help you check image updater's behaviour for your specific images, and is rudimentary documented here
The binary (only linux-amd64 so far) can be downloaded from the release page

Just for anyone who finds this and is wondering what the TLDR is ... this seems to work:
registries.conf:
registries:
- name: ECR
  api_url: https://xxx.dkr.ecr.us-west-2.amazonaws.com
  prefix: xxx.dkr.ecr.us-west-2.amazonaws.com
  ping: yes
  insecure: no
  tagsortmode: latest-first
  credentials: ext:/path/to/ecr.sh
  credsexpire: 10h

ecr.sh
#!/bin/sh
aws ecr --region us-west-2 get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

$ ./dist/argocd-image-updater  test xxx.dkr.ecr.us-west-2.amazonaws.com/dev/xyz-batch-serving --registries-conf ./registries.conf
INFO[0000] getting image                                 image_name=dev/xxx-batch-serving registry=xxx.dkr.ecr.us-west-2.amazonaws.com
DEBU[0000] rate limit for https://xxx.dkr.ecr.us-west-2.amazonaws.com is<PHONE_NUMBER>
INFO[0000] Loaded 1 registry configurations from ./registries.conf
INFO[0000] git/argocd-image-updater/ecr.sh  dir= execID=c6FS4
INFO[0000] Fetching available tags and metadata from registry  image_name=dev/xyz-batch-serving
INFO[0001] Found 288 tags in registry                    image_name=dev/xxx-batch-serving
DEBU[0001] could not parse input tag abc-xyz as semver: Invalid Semantic Version
...

I will close this issue now, since I think the feature works now. Feel free to reopen it when you think there should be more work done to support ECR auth.

@diranged
Thanks for sharing your config. It worked well, though one small note. I had to change tagsortmode: latest-first to none since our ECR repo doesn't return the tags in order causing latest to not work when the value is specified.

@diranged
Thanks for sharing your config. It worked well, though one small note. I had to change tagsortmode: latest-first to none since our ECR repo doesn't return the tags in order causing latest to not work when the value is specified.

@jeroenmaas Can you share logs or more of your config showing that tagsortmode: none works for you? I just opened up https://github.com/argoproj-labs/argocd-image-updater/issues/216 because it turns out that I am seeing that fail on our side making the API calls to AWS.

Just following up - the actual issue was a permissions issue. See https://github.com/argoproj-labs/argocd-image-updater/issues/216#issuecomment-862382796.

Just for anyone who finds this and is wondering what the TLDR is ... this seems to work:
registries.conf:
registries:
- name: ECR
  api_url: https://xxx.dkr.ecr.us-west-2.amazonaws.com
  prefix: xxx.dkr.ecr.us-west-2.amazonaws.com
  ping: yes
  insecure: no
  tagsortmode: latest-first
  credentials: ext:/path/to/ecr.sh
  credsexpire: 10h

ecr.sh
#!/bin/sh
aws ecr --region us-west-2 get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

$ ./dist/argocd-image-updater  test xxx.dkr.ecr.us-west-2.amazonaws.com/dev/xyz-batch-serving --registries-conf ./registries.conf
INFO[0000] getting image                                 image_name=dev/xxx-batch-serving registry=xxx.dkr.ecr.us-west-2.amazonaws.com
DEBU[0000] rate limit for https://xxx.dkr.ecr.us-west-2.amazonaws.com is<PHONE_NUMBER>
INFO[0000] Loaded 1 registry configurations from ./registries.conf
INFO[0000] git/argocd-image-updater/ecr.sh  dir= execID=c6FS4
INFO[0000] Fetching available tags and metadata from registry  image_name=dev/xyz-batch-serving
INFO[0001] Found 288 tags in registry                    image_name=dev/xxx-batch-serving
DEBU[0001] could not parse input tag abc-xyz as semver: Invalid Semantic Version
...

But how do you get awscli inside the container?

@diranged How do you install the script ecr.sh? How did you make it so that the argo-cd-image-updater pod can access the script? Thanks!

You will have to mount it as a configmap

But how do you get awscli inside the container?

@AndresJulia I have not tried this but I am assuming people using this are extending the argocd-image-updater image to install awscli. Not ideal but that would work.

But how do you get awscli inside the container?

At this moment, awscli is present in the image

IRSA is the most robust way to provide this permission, right? And there's nothing currently preventing using IRSA?

Sorry for the radio silence.. so here's an example of our image updater statefulset. To answer the questions, we put the awscli command in there by using an initcontainer. We get the ecr script in there through a mounted configmap.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/component: image-updater
    app.kubernetes.io/instance: argocd-service
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/part-of: argocd
  name: argocd-service-image-updater
  namespace: argocd
spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-service-image-updater
  serviceName: argocd-service-image-updater
  template:
    metadata:
      annotations:
        config.value.checksum: 6b0afb78dbf20fea4bacf969b90124be13f4f583502bf014e5fa2371ab8d1acd
      creationTimestamp: null
      labels:
        app: argocd-service-image-updater
        app.kubernetes.io/name: argocd-service-image-updater
    spec:
      containers:
      - command:
        - argocd-image-updater
        - run
        env:
        - name: PATH
          value: /shared/bin:/opt/bitnami/aws-cli/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        - name: HOME
          value: /tmp
        - name: APPLICATIONS_API
          valueFrom:
            configMapKeyRef:
              key: applications_api
              name: argocd-service-image-updater-config
              optional: true
        - name: ARGOCD_GRPC_WEB
          valueFrom:
            configMapKeyRef:
              key: argocd.grpc_web
              name: argocd-service-image-updater-config
              optional: true
        - name: ARGOCD_SERVER
          valueFrom:
            configMapKeyRef:
              key: argocd.server_addr
              name: argocd-service-image-updater-config
              optional: true
        - name: ARGOCD_INSECURE
          valueFrom:
            configMapKeyRef:
              key: argocd.insecure
              name: argocd-service-image-updater-config
              optional: true
        - name: ARGOCD_PLAINTEXT
          valueFrom:
            configMapKeyRef:
              key: argocd.plaintext
              name: argocd-service-image-updater-config
              optional: true
        - name: ARGOCD_TOKEN
          valueFrom:
            secretKeyRef:
              key: argocd.token
              name: argocd-image-updater-secret
              optional: true
        - name: IMAGE_UPDATER_LOGLEVEL
          valueFrom:
            configMapKeyRef:
              key: log.level
              name: argocd-service-image-updater-config
              optional: true
        - name: GIT_COMMIT_USER
          valueFrom:
            configMapKeyRef:
              key: git.user
              name: argocd-service-image-updater-config
              optional: true
        - name: GIT_COMMIT_EMAIL
          valueFrom:
            configMapKeyRef:
              key: git.email
              name: argocd-service-image-updater-config
              optional: true
        image: public.ecr.aws/bitnami/aws-cli:latest
        imagePullPolicy: Always
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 3
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 1
        name: argocd-image-updater
        ports:
        - containerPort: 8080
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 3
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /app/config
          name: registries-conf
        - mountPath: /app/scripts
          name: ecr-login
        - mountPath: /shared
          name: shared
      dnsPolicy: ClusterFirst
      initContainers:
      - args:
        - -c
        - mkdir -p /shared/bin && cp /usr/local/bin/* /shared/bin
        command:
        - sh
        image: ...-2.amazonaws.com/vendor/argoprojlabs/argocd-image-updater:release-06-15-2021
        imagePullPolicy: Always
        name: argocd-image-updater-installer
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /shared
          name: shared
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 1000
      serviceAccount: argocd-service-image-updater
      serviceAccountName: argocd-service-image-updater
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          items:
          - key: registries.conf
            path: registries.conf
          name: argocd-service-image-updater-config
          optional: true
        name: registries-conf
      - configMap:
          defaultMode: 493
          items:
          - key: ecr-login.sh
            path: ecr-login.sh
          name: argocd-service-image-updater-config
          optional: true
        name: ecr-login
      - emptyDir: {}
        name: shared
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate

IMO, there are too many additional steps to make this work.
I think this should be reopened, and have the image-updater support ECR (and other major registries).

IMO, there are too many additional steps to make this work. @jannfis I think this should be reopened, and have the image-updater support ECR (and other major registries).

I'd like to +1 this. My org is building out a container platform in AWS involving EKS with heavy use of Argo projects. As mentioned in other comments, supporting IRSA would be ideal to allow least privilege access; it's our de-facto method for pods to interact with the AWS API and has worked well for us.
We're far enough out from going to production that we could contribute testing as needed.

The aws CLI is part of the image updater's container image since a while, so setting up authentication against ECR should be quite simple. As I'm not an aws user myself, there's not really much I can (or want) to do here. I'll happily accept contributions from the community to make this easier, but I'll not be able to support those (for the previously mentioned reasons).

I wanted to point out that most of these steps are now simplified by the helm chart. e.g:
registries.com can be configured as follow:
config:
  registries:
  - name: Docker Hub
    api_url: https://registry-1.docker.io
    prefix: docker.io
  - name: ECR
    api_url: https://xxx.dkr.ecr.us-west-1.amazonaws.com
    prefix: ""
    ping: yes
    insecure: no
    credentials: ext:/scripts/ecr-login.sh.  #script name should match here and in authScripts
    credsexpire: 11h

and configure ECR authentication script as follow:
authScripts:
  enabled: true
  scripts:
    ecr-login.sh: |   # notice script name matches above
      #!/bin/sh
      aws ecr --region $AWS_REGION get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

In my case, $AWS_REGION is set as environment variable.
extraEnv:
  - name: AWS_REGION
    value: "us-west-1"

This setup will mount the login script as /scripts/ecr-login.sh and will run every 11 hours.
I'm able to run image-updater on EKS with IRSA configured. Again using the current helm version, you will need to enable service account for image-updater and assign a role with appropriate IAM permissions, e.g:
serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<Account-ID>:role/<role-name>
  name: "argocd-image-updater"  # I think this is the default

For IAM permissions you will at least need AmazonEC2ContainerRegistryReadOnly and if you're new to IRSA this docs might help you get started.
I hope this helps others get started with image-updater on AWS.
@jannfis if you think this is worth adding to the docs, im happy to create a PR.

@mubarak-j While this setup will work with image-updater to update images for already existing applications, will this work for authenticating argocd itself for the initial deploy of the application?

ConfigMap for ECR authentication
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-image-updater-config
    app.kubernetes.io/part-of: argocd-image-updater
  name: argocd-image-updater-config
  namespace: argocd
data:
  registries.conf: |
    registries:
    - name: AWS ECR
      prefix: <aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      api_url: https://<aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      credentials: secret:argocd/ecr-secrets#creds
      default: true
      insecure: yes
     credsexpire: 12h

for authenticating to ecr, use the cronjob to generate credentials on every schedule.

ConfigMap for ECR authentication
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-image-updater-config
    app.kubernetes.io/part-of: argocd-image-updater
  name: argocd-image-updater-config
  namespace: argocd
data:
  registries.conf: |
    registries:
    - name: AWS ECR
      prefix: <aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      api_url: https://<aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      credentials: secret:argocd/ecr-secrets#creds
      default: true
      insecure: yes
     credsexpire: 12h

for authenticating to ecr, use the cronjob to generate credentials on every schedule.

I've been using keel.sh partly because of its excellent ECR integration via IRSA and an AWS-aware credentials helper:
https://github.com/keel-hq/keel/tree/master/extension/credentialshelper/aws
But it would me nice to have another alternative.

I've been using keel.sh partly because of its excellent ECR integration via IRSA and an AWS-aware credentials helper:

Keel hasn't updated for a while, looks like the project has been abandoned :(

Keel hasn't updated for a while, looks like the project has been abandoned :(

I can't disagree but it still functions. keel is my only option at the moment, and if it breaks then someone may need to fork it and fix it. It would be nice to have another option..

keel is my only option at the moment

I have not tried Image Updater yet but there are few people who have successfully got the updater working with ECR. Did you try that?

@vikas027 wrote:

there are few people who have successfully got the updater working with ECR

Please interpret my comments as an RFE for ECR integration via IRSA and an AWS-aware credentials helper.

I wanted to point out that most of these steps are now simplified by the helm chart. e.g: registries config can be configured as follow:
config:
  registries:
  - name: Docker Hub
    api_url: https://registry-1.docker.io
    prefix: docker.io
  - name: ECR
    api_url: https://xxx.dkr.ecr.us-west-1.amazonaws.com
    prefix: xxx.dkr.ecr.us-west-1.amazonaws.com   # before v0.12 this needed to be set empty, prefix: ""
    default: true  # not supported before v0.12
    ping: yes
    insecure: no
    credentials: ext:/scripts/ecr-login.sh  #script name should match here and in authScripts
    credsexpire: 11h

and configure ECR authentication script as follow:
authScripts:
  enabled: true
  scripts:
    ecr-login.sh: |   # notice script name matches above
      #!/bin/sh
      aws ecr --region $AWS_REGION get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

In my case, $AWS_REGION is set as environment variable.
extraEnv:
  - name: AWS_REGION
    value: "us-west-1"

This setup will mount the login script as /scripts/ecr-login.sh and will run every 11 hours.
I'm able to run image-updater on EKS with IRSA configured. Again using the current helm version, you will need to enable service account for image-updater and assign a role with appropriate IAM permissions, e.g:
serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<Account-ID>:role/<role-name>
  name: "argocd-image-updater"  # I think this is the default

For IAM permissions you will at least need AmazonEC2ContainerRegistryReadOnly.
I hope this helps others get started with image-updater on AWS. @jannfis if you think this is worth adding to the docs, im happy to create a PR.

I'm having this error:
Could not set registry endpoint credentials: error executing /scripts/ecr-login.sh: fork/exec /scripts/ecr-login.sh: no such file or directory"
I'm using the following config:
config:   registries:     - name: ECR       api_url: https://XXX.dkr.ecr.eu-west-1.amazonaws.com       prefix: XXX.dkr.ecr.eu-west-1.amazonaws.com       ping: yes       insecure: no       credentials: ext:/scripts/ecr-login.sh       credsexpire: 6h authScripts:   enabled: true   scripts:     ecr-login.sh: |       #!/bin/sh       aws ecr get-authorization-token --region eu-west-1 --registry-ids XXXX --output text --query 'authorizationData[].authorizationToken'

@fabioaraujopt Please ensure ecr-login.sh script exist in argocd-image-updater container (mount as ConfigMap in my case)

currently facing this issue:

currently facing this issue when I run the test:

Currently facing this issue:
FATA[0000] could not set registry credentials: error executing /scripts/ecr-login.sh: /scripts/ecr-login.sh failed exit status 255: An error occurred (AccessDenied) when calling the AssumeRoleWithWebIdentity operation: Not authorized to perform sts:AssumeRoleWithWebIdentity  application=test image_alias= image_name=xxx.dkr.ecr.eu-west-2.amazonaws.com/catches-api registry_url=xxx.dkr.ecr.eu-west-2.amazonaws.com ~/config $
Any ideas what could be the reason? service account and role have been created and connected

I wanted to point out that most of these steps are now simplified by the helm chart. e.g: registries config can be configured as follow:
config:
  registries:
  - name: Docker Hub
    api_url: https://registry-1.docker.io
    prefix: docker.io
  - name: ECR
    api_url: https://xxx.dkr.ecr.us-west-1.amazonaws.com
    prefix: xxx.dkr.ecr.us-west-1.amazonaws.com   # before v0.12 this needed to be set empty, prefix: ""
    default: true  # not supported before v0.12
    ping: yes
    insecure: no
    credentials: ext:/scripts/ecr-login.sh  #script name should match here and in authScripts
    credsexpire: 11h

and configure ECR authentication script as follow:
authScripts:
  enabled: true
  scripts:
    ecr-login.sh: |   # notice script name matches above
      #!/bin/sh
      aws ecr --region $AWS_REGION get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d

In my case, $AWS_REGION is set as environment variable.
extraEnv:
  - name: AWS_REGION
    value: "us-west-1"

This setup will mount the login script as /scripts/ecr-login.sh and will run every 11 hours.
I'm able to run image-updater on EKS with IRSA configured. Again using the current helm version, you will need to enable service account for image-updater and assign a role with appropriate IAM permissions, e.g:
serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<Account-ID>:role/<role-name>
  name: "argocd-image-updater"  # I think this is the default

For IAM permissions you will at least need AmazonEC2ContainerRegistryReadOnly.
I hope this helps others get started with image-updater on AWS. @jannfis if you think this is worth adding to the docs, im happy to create a PR.

Hi, I'm trying to configure as mentioned here but still encountered this error
ERRO[0000] Could not get tags from registry: Get "https://awsNumber.dkr.ecr.eu-central-1.amazonaws.com/v2/projectName/tags/list": no basic auth credentials  alias= application=projectName image_name=ProjectName image_tag=ui-latest registry=awsNumber.dkr.ecr.eu-central-1.amazonaws.com
INFO[0000] Finished cache warm-up, pre-loaded 0 meta data entries from 2 registries
ERRO[0000] Health probe server exited with error: listen tcp :8080: bind: address already in use
Here's what I'm using
`
config:
registries:

name: ECR
api_url: https://awsNumber.dkr.ecr.eu-central-1.amazonaws.com
prefix: awsNumber.dkr.ecr.eu-central-1.amazonaws.com   # before v0.12 this needed to be set empty, prefix: ""
default: true  # not supported before v0.12
ping: yes
insecure: no
credentials: ext:/scripts/ecr-login.sh  #script name should match here and in authScripts
credsexpire: 11h
authScripts:
enabled: true
scripts:
ecr-login.sh: |   # notice script name matches above
#!/bin/sh
aws ecr --region $AWS_REGION get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d
extraEnv:
name: AWS_REGION
value: "eu-central-1"
serviceAccount:
create: true
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::awsNumber:role/eksWorker
name: "argocd-image-updater"

config:
logLevel: debug
metrics:
serviceMonitor:
namespace: argocd
`

Hi everyone, I'm encountering this error
Below is argocd-image-updater pod log

time="2022-12-05T09:33:14Z" level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
time="2022-12-05T09:33:14Z" level=debug msg="Processing application ui-connectivity"
time="2022-12-05T09:33:14Z" level=debug msg="Considering this image for update" alias= application=ui-connectivity image_name=qa image_tag=latest registry=<aws-number>.dkr.ecr.eu-central-1.amazonaws.com
time="2022-12-05T09:33:14Z" level=debug msg="Using version constraint 'latest' when looking for a new tag" alias= application=ui-connectivity image_name=qa image_tag=latest registry=<aws-number>.dkr.ecr.eu-central-1.amazonaws.com
time="2022-12-05T09:33:14Z" level=info msg=/scripts/ecr-login.sh dir= execID=657b6
time="2022-12-05T09:33:15Z" level=error msg="Could not set registry endpoint credentials: invalid script output, must be single line with syntax <username>:<password>" alias= application=ui-connectivity image_name=qa image_tag=latest registry=<aws-number>.dkr.ecr.eu-central-1.amazonaws.com
time="2022-12-05T09:33:15Z" level=info msg="Processing results: applications=1 images_considered=1 images_skipped=0 images_updated=0 errors=1"

When I execute the script within the pod, the following error was returned
/ $ ./scripts/ecr-login.sh
An error occurred (AccessDenied) when calling the AssumeRoleWithWebIdentity operation: Not authorized to perform sts:AssumeRoleWithWebIdentity

I have checked that the pod is using correct service account. Policy AmazonEC2ContainerRegistryReadOnly was added to that AWS role
Trust relationship added
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:AssumeRoleWithWebIdentity"
            ]
        }
    ]
}

@fabioaraujopt I was having the same issue. I believe the version of the chart which I was installing, 0.8.1, by default uses the same image version and that image version does not contain any sh or bash executables. It is probably the lack of those files resulting in no such file or directory.
I was able to get it working by specifying the latest image version in my values file:
image:
  tag: "v0.12.1"

I'm not sure how other people were getting this to work, perhaps we are using different versions of the helm chart? 0.8.1 appears to be the latest version.

Hi @mubarak-j, I followed your flow with the latest helm chart, but I cannot see any logs mentioning the auth1.sh script is called.
However, I can manually run the script correctly from inside the container, and get the credential.
What could be the problem?
Here is the log:
time="2023-07-21T03:30:12Z" level=info msg="argocd-image-updater v0.12.2+1aa317c starting [loglevel:TRACE, interval:2m0s, healthport:8080]"
time="2023-07-21T03:30:12Z" level=warning msg="commit message template at /app/config/commit.template does not exist, using default"
time="2023-07-21T03:30:12Z" level=debug msg="Successfully parsed commit message template"
time="2023-07-21T03:30:12Z" level=debug msg="rate limiting is disabled" prefix=14351427915.dkr.ecr.ap-southeast-1.amazonaws.com registry="https://14351427915.dkr.ecr.ap-southeast-1.amazonaws.com"
time="2023-07-21T03:30:12Z" level=debug msg="Setting default registry endpoint to<PHONE_NUMBER>5.dkr.ecr.ap-southeast-1.amazonaws.com"
time="2023-07-21T03:30:12Z" level=debug msg="Previous default registry was docker.io"
time="2023-07-21T03:30:12Z" level=info msg="Loaded 1 registry configurations from /app/config/registries.conf"
time="2023-07-21T03:30:12Z" level=debug msg="Creating in-cluster Kubernetes client"
time="2023-07-21T03:30:12Z" level=info msg="ArgoCD configuration: [apiKind=kubernetes, server=argocd-server.argocd, auth_token=false, insecure=false, grpc_web=true, plaintext=false]"
time="2023-07-21T03:30:12Z" level=info msg="Starting health probe server TCP port=8080"
time="2023-07-21T03:30:12Z" level=info msg="Starting metrics server on TCP port=8081"
time="2023-07-21T03:30:12Z" level=info msg="Warming up image cache"
time="2023-07-21T03:30:12Z" level=trace msg="skipping app 'argocd-image-updater' of type '' because required annotation is missing" application=argocd-image-updater
time="2023-07-21T03:30:12Z" level=trace msg="processing app 'ba-deployment-api' of type 'Helm'" application=ba-deployment-api
time="2023-07-21T03:30:12Z" level=debug msg="Processing application ba-deployment-api"
time="2023-07-21T03:30:12Z" level=debug msg="Considering this image for update" alias=app application=ba-deployment-api image_name=ba.deployment.api image_tag=30 registry=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=debug msg="setting rate limit to 20 requests per second" prefix=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com registry="https://1234567890.dkr.ecr.ap-southeast-1.amazonaws.com"
time="2023-07-21T03:30:12Z" level=debug msg="Inferred registry from prefix<PHONE_NUMBER>.dkr.ecr.ap-southeast-1.amazonaws.com to use API https://1234567890.dkr.ecr.ap-southeast-1.amazonaws.com"
time="2023-07-21T03:30:12Z" level=debug msg="Using no version constraint when looking for a new tag" alias=app application=ba-deployment-api image_name=ba.deployment.api image_tag=30 registry=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="Found update strategy latest" image_alias=app image_name=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/ba.deployment.api registry_url=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="No match annotation found" image_alias=app image_name=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/ba.deployment.api registry_url=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="No ignore-tags annotation found" image_alias=app image_name=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/ba.deployment.api registry_url=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="Using runtime platform constraint linux/amd64" image_alias=app image_name=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/ba.deployment.api registry_url=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="No pull-secret annotation found" image_alias=app image_name=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/ba.deployment.api registry_url=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=trace msg="Performing HTTP GET https://1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/v2/ba.deployment.api/tags/list"
time="2023-07-21T03:30:12Z" level=error msg="Could not get tags from registry: Get \"https://1234567890.dkr.ecr.ap-southeast-1.amazonaws.com/v2/ba.deployment.api/tags/list\": no basic auth credentials" alias=app application=ba-deployment-api image_name=ba.deployment.api image_tag=30 registry=1234567890.dkr.ecr.ap-southeast-1.amazonaws.com
time="2023-07-21T03:30:12Z" level=info msg="Finished cache warm-up, pre-loaded 0 meta data entries from 3 registries"

ConfigMap for ECR authentication
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-image-updater-config
    app.kubernetes.io/part-of: argocd-image-updater
  name: argocd-image-updater-config
  namespace: argocd
data:
  registries.conf: |
    registries:
    - name: AWS ECR
      prefix: <aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      api_url: https://<aws_account_id>.dkr.ecr.eu-west-2.amazonaws.com
      credentials: secret:argocd/ecr-secrets#creds
      default: true
      insecure: yes
     credsexpire: 12h

for authenticating to ecr, use the cronjob to generate credentials on every schedule.

do you have an example repo for this?

The scripts above i.e.
aws ecr get-authorization-token --region eu-west-1 --registry-ids XXXX --output text --query 'authorizationData[].authorizationToken'
were not working for me.  It was erroring saying that it wants a username:password.  I used this instead, and it works :)
authScripts:
  enabled: true
  scripts:
    ecr-login.sh: |
      #!/bin/sh
      # Retrieve the authorization token from AWS ECR
      auth_token=$(aws ecr get-authorization-token --region eu-west-1 --output text --query 'authorizationData[].authorizationToken')

      # Decode the authorization token
      decoded_token=$(echo $auth_token | base64 -d)

      # Extract username and password
      username=$(echo $decoded_token | cut -d: -f1)
      password=$(echo $decoded_token | cut -d: -f2)

      # Output username and password
      echo "$username:$password"

Fwiw I followed this article and it worked for me, https://medium.com/@tomas94depi/argo-image-updater-with-aws-ecr-ddb661abb332

Hi guys, I'm afraid this workaround/solution stoped working in a recent versions. As currently I'm using the helm chart version 0.11.0 which uses the application v0.14.0 and the script does not work, I guess because of the fact, that the /app directory is mounted as a readonly, to whenever I try to run aws commands from within the pod, it throws the following error message: [Errno 30] Read-only file system: '/app/.aws'
I tried to solve that by using the custom credentials files using aws reserved environment variables:
  extraEnv:
    - name: AWS_REGION
      value: "us-east-1"
    - name: AWS_CONFIG_FILE
      value: "/tmp/.aws/config"
    - name: AWS_SHARED_CREDENTIALS_FILE
      value: "/tmp/.aws/credentials"

After this, if I run 'aws configure' it creates config file under /tmp/.aws directory, but if I run for example 'aws ecr get-authorization-token --region eu-west-1' commnad, it still tries to use the $HOME/.aws directory (which refers to /apps/.aws) and still fails.
Maybe your container image has somehow hardcoded aws configuration file location?
This is my entire configuration (helm value file):
  config:
    applicationsAPIKind: "kubernetes"

    logLevel: "debug"

    registries:
    - name: ECR
      api_url: https://<ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com
      prefix: <ACCOUNT_ID>.dkr.ecr.us-east-1.amazonaws.com
      default: true
      ping: yes
      insecure: no
      credentials: ext:/scripts/ecr-login.sh
      credsexpire: 10h

  extraEnv:
    - name: AWS_REGION
      value: "us-east-1"
    - name: AWS_CONFIG_FILE
      value: "/tmp/.aws/config"
    - name: AWS_SHARED_CREDENTIALS_FILE
      value: "/tmp/.aws/credentials"

  serviceAccount:
    create: true
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::464682684796:role/argocd-image-updater-role
    name: "argocd-image-updater"

  # whether to mount authentication scripts, if enabled, the authentication scripts will be mounted on /scripts that can be used to authenticate with registries (ECR)
  # refer to https://argocd-image-updater.readthedocs.io/en/stable/configuration/registries/#specifying-credentials-for-accessing-container-registries for more info
  authScripts:
    # -- Whether to mount the defined scripts that can be used to authenticate with a registry, the scripts will be mounted at `/scripts`
    enabled: true
    scripts:
      ecr-login.sh: |
        #!/bin/sh
        echo "AWS:$(aws ecr get-login-password --region us-east-1)"

P.S. I tried to use the script described above:
aws ecr --region $AWS_REGION get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d
but faced the issue which already is described here, so found the simpler command (since the username is always the same):
echo "AWS:$(aws ecr get-login-password --region us-east-1)"
But like I said, i cannot test/run any awscli comands from within the argocd-image-updater pod. (((

@giogujabidze it seems the breaking change was introduced in helm chart v0.10.0 which added securityContext with default value readOnlyRootFilesystem: true, you may want to override that in your helm values.

@giogujabidze it seems the breaking change was introduced in helm chart v0.10.0 which added securityContext with default value readOnlyRootFilesystem: true, you may want to override that in your helm values.

Thanks @mubarak-j for confirming my doubts.
Adding the following section to my helm values file fix everything:
securityContext:
  readOnlyRootFilesystem: false

I'm putting the whole helm values file content for others, who will try to use ArgoCD Image Updater against AWS ECR, to not lose as much time as I did to make it work. Here is the configuration that worked for me (helm chart version - 0.11.0):
extraEnv:
  - name: AWS_REGION
    value: "us-east-1"

config:
  applicationsAPIKind: "kubernetes"
  logLevel: "debug"

  registries:
  - name: ECR
    api_url: https://<AWS_ACCOUNT>.dkr.ecr.us-east-1.amazonaws.com
    prefix: <AWS_ACCOUNT>.dkr.ecr.us-east-1.amazonaws.com
    default: true
    ping: yes
    insecure: no
    credentials: ext:/scripts/ecr-login.sh
    credsexpire: 10h

authScripts:
  enabled: true
  scripts:
    ecr-login.sh: |
      #!/bin/sh
      echo "AWS:$(aws ecr get-login-password --region $AWS_REGION)"

serviceAccount:
  create: true
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<AWS_ACCOUNT>:role/argocd-image-updater-role
  name: "argocd-image-updater"

securityContext:
  readOnlyRootFilesystem: false

Hello. I'm still running into this issue regarding : no basic auth credentials
@giogujabidze I have the same exact Helm fields as you posted above. Any ideas?

Hello. I'm still running into this issue regarding : no basic auth credentials
@giogujabidze I have the same exact Helm fields as you posted above. Any ideas?

Hi. Well it's difficult to say exact reason, as I also spent a lot of time to make it work, but in your case I would check the IRSA policy, maybe you missed some essential permissions and because of that, you cannot actually authenticate against ECR. Here is the list of some possible reasons for this error message.

@giogujabidze
Do you mind if I see your IRSA policy and the the policy for the role associated with it? Also can you tell me what Helm targetRevision and image version you're on for the Image Updater please?

@giogujabidze Do you mind if I see your IRSA policy and the the policy for the role associated with it? Also can you tell me what Helm targetRevision and image version you're on for the Image Updater please?

This is the policy attached to my IRSA role for image updater:
{
    "Statement": [
        {
            "Action": [
                "ecr:ValidatePullThroughCacheRule",
                "ecr:ListTagsForResource",
                "ecr:ListImages",
                "ecr:GetRepositoryPolicy",
                "ecr:GetRegistryScanningConfiguration",
                "ecr:GetLifecyclePolicy",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken",
                "ecr:DescribeRepositories",
                "ecr:DescribeRegistry",
                "ecr:DescribePullThroughCacheRules",
                "ecr:DescribeImages",
                "ecr:DescribeImageScanFindings",
                "ecr:BatchGetRepositoryScanningConfiguration",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Sid": ""
        }
    ],
    "Version": "2012-10-17"
}

As for the helm targetRevision, like I already mentioned above, I am using the latest (at this moment) version of helm chart - 0.11.0

@giogujabidze
Okay so this is odd. Because the 0.11.0 version of the Helm chart apparently does not support the field default: true within your registries.conf.
See this comment here about that field not being supported for versions before 0.12.0
https://github.com/argoproj-labs/argocd-image-updater/issues/112#issuecomment-1058465942

@giogujabidze Okay so this is odd. Because the 0.11.0 version of the Helm chart apparently does not support the field default: true within your registries.conf.
See this comment here about that field not being supported for versions before 0.12.0 #112 (comment)

I believe that comment was referred to the application version itself, as the helm chart 0.11.0 includes the application version v0.14.0- https://github.com/argoproj/argo-helm/blob/main/charts/argocd-image-updater/Chart.yaml#L6
That means that if you'll deploy this helm chart, it will deploy the argocd image updater docker image version v0.14.0 by default - https://github.com/argoproj/argo-helm/blob/main/charts/argocd-image-updater/templates/deployment.yaml#L130
Anyways, like I said, it works in my case and it's difficult to say, why it's not working for you.

@giogujabidze
Okay thanks for that clarification.
Sorry, back to your IAM setup. The policy you pasted to me is directly attached to your IRSA role? You're not using the IRSA role to assume a role that has those policies attached to it?

Hey, sorry for late reply

The policy you pasted to me is directly attached to your IRSA role?

Yes, the IAM policy is attached to the role, arn of which is set in annotations of service account for image-updater

Looks like my setup can see my registry and tags but when I update a new docker image, it's still showing the same message "no newer version of image found "
Not sure what to do at this point.
argocd-image-updater test XXXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/argocd-updater-test --registries-conf-path=/app/config/registries.conf
INFO[0000] Found 2 tags in registry                      application=test image_alias= image_name=XXXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/argocd-updater-test registry_url=XXXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com
DEBU[0000] could not parse input tag latest as semver: Invalid Semantic Version
DEBU[0000] could not parse input tag latest-v1 as semver: Invalid Semantic Version
INFO[0000] no newer version of image found               application=test image_alias= image_name=XXXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/argocd-updater-test registry_url=XXXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com

Greetings,
I am trying to auth to ECR repo with IRSA, I created a role using this policy [https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly] and added trusted policy, and following the examples in the comments I added the role I created to argocd-image-updater serviceaccount as arn, but when I restart my pod I still get auth error,
When I use the auth method with pullsecret, everything goes smoothly, but for 12 hours, can anyone successfully use ECR auth with IAM role?

For me, the annotation on the service account won't work. I need to manually create the service account use eksctl cli, here.
The policy is same as previous comment.


Custom search algorithm

Hi.
I didn't found ability to change current search algorithm to my own, to make full text search (not only from word begging and using multiple words separated by space). Is some ability to do so?

Hi @Lyubomyr,
Thank you for your Issue.
Unfortunately, Chosen doesn't work with this feature. I strongly recommend you trying something more powerful as select2 with the Remote feature.
If you use Twitter Bootstrap, you should also have a look into angular-ui select
I also like the selectize which is probably the most powerful of them.
Last, if you use Angular Material, try the Autocomplete component

Thank you for fast response and this links!


error "cannot find -lGL" during building jetson-inference on nano board

hello,
I used JetPack4.2.1 on Jetson Nano board, when I tried to build the jetson-inference repos on nano board, I got below error, how to resolve it?
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
utils/CMakeFiles/jetson-utils.dir/build.make:2627: recipe for target 'aarch64/lib/libjetson-utils.so' failed
make[2]: *** [aarch64/lib/libjetson-utils.so] Error 1
CMakeFiles/Makefile2:927: recipe for target 'utils/CMakeFiles/jetson-utils.dir/all' failed
make[1]: *** [utils/CMakeFiles/jetson-utils.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

I found the same error

I found the same error

so,have anyone solved this problem? I found the same error

I have the same error running make on my TX2, can install inference...../jetson-inference/build/make
root@tx2:/jetson-inference/build# make
[  1%] Linking CXX shared library ../aarch64/lib/libjetson-utils.so
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
utils/CMakeFiles/jetson-utils.dir/build.make:2627: recipe for target 'aarch64/lib/libjetson-utils.so' failed
make[2]: *** [aarch64/lib/libjetson-utils.so] Error 1
CMakeFiles/Makefile2:927: recipe for target 'utils/CMakeFiles/jetson-utils.dir/all' failed
make[1]: *** [utils/CMakeFiles/jetson-utils.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

I'm able to see libGL.so.
@SaddamBInSyed tx2:/jetson-inference$ locate libGL.so
/usr/lib/aarch64-linux-gnu/libGL.so
/usr/lib/aarch64-linux-gnu/libGL.so.1
/usr/lib/aarch64-linux-gnu/libGL.so.1.0.0
I'm also able to see the component path aarch64/lib/libjetson-utils.so, the target is there.
?
looks like a problem with 'all'?

Hi Mark, can you check this post?
https://forums.developer.nvidia.com/t/no-usr-lib-aarch64-linux-gnu-tegra-libgl-so-0-with-jetpack-4-4-1/67382/6?u=dusty_nv
Sometimes installing other libraries will overwrite libGL.  You can also check 'ls -ll' to see if the symlink is broken.
I believe libglvnd is in apt, you can try re-installing it.

From: Mark Worth<EMAIL_ADDRESS>Sent: Sunday, June 14, 2020 3:45:08 PM
To: dusty-nv/jetson-inference<EMAIL_ADDRESS>Cc: Dustin Franklin<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [dusty-nv/jetson-inference] error "cannot find -lGL" during building jetson-inference on nano board (#375)
I'm able to see libGL.so.
@SaddamBInSyedhttps://github.com/SaddamBInSyed tx2:/jetson-inference$ locate libGL.so
/usr/lib/aarch64-linux-gnu/libGL.so
/usr/lib/aarch64-linux-gnu/libGL.so.1
/usr/lib/aarch64-linux-gnu/libGL.so.1.0.0
I'm also able to see the component path aarch64/lib/libjetson-utils.so, the target is there.
?
looks like a problem with 'all'?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/dusty-nv/jetson-inference/issues/375#issuecomment-643813097, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADVEGK7EOXXY56C4PQQNHRDRWUSEJANCNFSM4IHMAUXA.

Dusty-nv,
Thanks so much for such a quick response and the link.
-I'm 18.04 so no /usr/local/lib/aarch64-linux-gnu/libGL.so?
-/usr/lib/aarch64-linux-gnu/
ls -ll libGL*
-lrwxrwxrwx 1 root root      14 Jun 11 21:50 libGL.so -> tegra/libGL.so
lrwxrwxrwx 1 root root      14 May 10  2019 libGL.so.1 -> libGL.so.1.0.0
-rw-r--r-- 1 root root  972968 May 10  2019 libGL.so.1.0.0
-Tried to apt libglvnd.
m@tx2:/$ sudo apt-get install libglvnd
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libglvnd
Let me know your thoughts. Best,

Dusty-nv,
It appears that the link is not just broken....libGL.so is not in the path /tegra/libGL.so!
markw@tx2:/usr/lib/aarch64-linux-gnu$ ls -lL libGL.*
ls: cannot access 'libGL.so': No such file or directory
-rw-r--r-- 1 root root 972968 May 10  2019 libGL.so.1
-rw-r--r-- 1 root root 972968 May 10  2019 libGL.so.1.0.0
Is the libGL.so file that is supposed to be contained in /tegra customized for jetson-inference?
I've seen other OpenCV installations (i.e. OpenCVTX2 Github) where they recommend erasing this symlink and creating a new one to libGL.so.1. ( a link to a link?)
Thanks for your insight. Let me know what you think. Best.

Hi Mark, here is what mine looks like:
lrwxrwxrwx 1 root root      14 May 10  2019 libGL.so -> libGL.so.1.0.0
lrwxrwxrwx 1 root root      14 May 10  2019 libGL.so.1 -> libGL.so.1.0.0
-rw-r--r-- 1 root root  972968 May 10  2019 libGL.so.1.0.0

Try sudo ln -s /usr/lib/aarch64-linux-gnu/libGL.so.1.0.0 /usr/lib/aarch64-linux-gnu/libGL.so

Dusty-nv,
sudo rm /usr/lib/aarch64-linux-gnu/libGL.so
sudo ln -s /usr/lib/aarch64-linux-gnu/libGL.so.1.0.0 /usr/lib/aarch64-linux-gnu/libGL.so
Thanks so much. That was it!
Linking successful!
For anyone monitoring I tried to install OpenCVTx2.sh which pointed my symlink libGL.so to /tegra. Be Careful with that item.
Thanks to Dusty-nv all corrected. Best.


feat(test): added test for gadgets/trace_tcpretrans

fixes: #3241

added test for trace tcp retransmission gadget.

cc @burak-ok @mauriciovasquezbernal
Testing done: Yes
I ran test locally and heres output :

LGTM. I'll merge once the CI passes. Thanks!

@mauriciovasquezbernal not sure why retrans test is not capturing and failing, I'll find solution and will let you know.


Add spanning support

Hi!
Is it possible to add support for cell spanning? Excel does support this and this is a widely used thing, please, consider adding support for this in further releases.
Thanks you!

Sorry for the late response, but did you mean the functionality to merge cells? That is in now, please refer to XLSheet.hpp XLWorksheet::merges, ::mergeCells, ::unmergeCells and to XLMergeCells.hpp
Closing this assuming that is what you meant.


User tagging not working

Installed the plugin, set up permission but for some reason user tagging not showing user list when '@' sing triggered. Same problem for user groups. No list, please help!

I will only provide such add-on support on https://xenforo.com/community/threads/user-mentions-improvements-by-xon.101527/ which requires a valid XenForo Licence.
Github issues are for technical issues and PRs


Storage schema always returning empty?

Bug report
Describe the bug
When using the Storage schema and accessing the objects table (I just need the name), it always returns an empty array.
To Reproduce
Create a client with the 'storage' schema set :
        let storageClient = SupabaseClient(supabaseURL: URL(string: "...")!, supabaseKey: "...", options: SupabaseClientOptions(db: SupabaseClientOptions.DatabaseOptions(schema: "storage")))

Try and query some data:
struct Storage: Encodable, Decodable {
//    var id: UUID?
//    var bucketID: String?
    var name: String?
//    var owner: UUID?
//    var createdAt: Date?
//    var updatedAt: Date?
//    var lastAccessedAt: Date?
//    var metadata: [String: String]? // Assuming a dictionary to represent JSONB data
//    var pathTokens: [String]? // Assuming an array of strings for path tokens
//    var version: String?
//    var ownerID: String?
}

let storageFile: [Storage] = try await storageClient.database
    .from("objects")
    .execute().value

print(storageFile)

Expected behavior
Should return the whole objects table.
Additional context
Personally just need the "name" column data. I think using the objects table is better than saving the path to files inside supabase storage myself (duplicate data)?

Hi @samuelOsborne
I made a few tests and it worked as expected, and I could query the storage schema.
Make sure the storage.objects table has RLS correctly defined allowing access, if that still doesn't work for you, let me know.

Added a PR for allowing to switch schema and improving this a bit, https://github.com/supabase-community/supabase-swift/pull/199

Thanks @grdsdev still trying to get my head around policies but its working. That PR looks great, cheers!


Do not stop the dispatcher thread on EOS

Summary: Do not stop the dispatcher thread after handling an EOS. This fixes the issue of when an EOS is reached, the pipeline could no longer be used.
Type: Feature
Test Plan: Unittests, Youtube Certification Tests
Jira: RIALTO-10

https://jenkins.code.rdkcentral.com/job/github-triggered/23935/ started

https://jenkins.code.rdkcentral.com/job/build-component/59575/ started.

https://jenkins.cmf.code.rdkcentral.com/job/github-triggered/16598/ started

https://jenkins.cmf.code.rdkcentral.com/job/build-component-platform/28248/ started.

build-brcm-va Console Log uploaded to Gist URL: https://gist.github.com/14d837c77726c8b6432b4ff9a6378f5b

Smoke tests for ['build-rpi-hybrid-refapp2'] added.
https://jenkins.cmf.code.rdkcentral.com/job/test-components-flow/129533/

https://jenkins.code.rdkcentral.com/job/github-triggered/23942/ started

https://jenkins.cmf.code.rdkcentral.com/job/build-component-platform/28259/ started.

build-brcm-va Console Log uploaded to Gist URL: https://gist.github.com/d7b5272253a003cada45185a2fec2f1c

Smoke tests for ['build-rpi-hybrid-refapp2'] added.
https://jenkins.cmf.code.rdkcentral.com/job/test-components-flow/129552/

Smoke tests for ['build-rpi-hybrid-wpe-dunfell'/'build-rpi-mc-wpe-dunfell'] added.
https://jenkins.cmf.code.rdkcentral.com/job/test-components-flow/129553/


fix changeSlider for infinity false case

Fix bug issue #1949 .

Please fix this issue soon.

Please fix this issue soon.

@VadimSvirdoff The same issue will be for "next" arrow too. Can you add a fix for this case to your pull request?

@VadimSvirdoff The same issue will be for "next" arrow too. Can you add a fix for this case to your pull request?

please fix this issue ,
we need this bug to solve
for god sake

please fix this issue ,
we need this bug to solve
for god sake

@Faraz1995 @akiran  ready to merge

@Faraz1995 @akiran  ready to merge

we are waiting for this merge

we are waiting for this merge

I don't think this patch will be merged as it is, as you are just commenting some code. Are you sure the code can be removed without side effects? Have you checked what the purpose of this code was? If it really can be removed, you should just remove it and not comment it.

It got broken in commit 1c3d70cce795fe2daaeb4b57ce4013fd08b997aa which was part of PR #1873. The problem is that targetSlide is not initialized to the initialSlide in InnerSlider. I propose another change in #2029.


feat(payout): [Payone] add payone connector

Type of Change

[ ] Bugfix
[x] New feature
[ ] Enhancement
[ ] Refactoring
[ ] Dependency updates
[ ] Documentation
[ ] CI/CD

Description

Additional Changes

[ ] This PR modifies the API contract
[ ] This PR modifies the database schema
[ ] This PR modifies application configuration/environment variables

Motivation and Context

How did you test it?

Checklist

[ ] I formatted the code cargo +nightly fmt --all
[ ] I addressed lints thrown by cargo clippy
[ ] I reviewed the submitted code
[ ] I added unit tests for my changes where possible

Required CI checks are failing, could you address that


Fix and Fine-tune Tab Bar Styles and Interaction Effects

Description

Optimize the layout and details to better follow the design prototype of CodeEdit (e.g. divider style, background color, and more).
Make tab interactions feel similar with Xcode by optimizing animations, adjust hover effects, etc.
[Moved to the future] Fix the hotkey conflict issue (Command-W is not working properly to close tab).

This issue seems a bit complicated and out of scope for this PR. So I decided to move it to a separate issue and work with others to resolve it.

Related Issue

#49

Checklist

[x] Tab Bar Style Fine-tuning.
[x] Optimizing animations and interactions.
[x] Fix the close-tab hotkey issue. (Moved to #473)
[x] Add tab bar style preference.

[x] I read and understood the contributing guide as well as the code of conduct
[x] My changes generate no new warnings
[x] My code builds and runs on my machine
[x] I documented my code
[x] Review requested

Screenshots
The general styling will be based on the design of Xcode and the initial design concept of CodeEdit.
Xcode style

Native style

Interaction Demo
https://user-images.githubusercontent.com/36816148/163754487-a73f7b55-bd62-4407-a918-0efb63ff3e7e.mov
References
Here is the animations and interactions of Tab Bar on Xcode.
https://user-images.githubusercontent.com/36816148/163563123-b77af785-c8f8-42bf-8dc1-2926a17913c1.mov

@austincondiff To better fit the color of Xcode tab bar, I eventually use .selectedControlColor with 0.5 opacity as the background of tab bar item. It looks much better than 0.75 opacity.
Dark schema is still WIP.
Current progress of Xcode-liked style tab bar:

The original style in Xcode can be checked in the video above.

https://user-images.githubusercontent.com/36816148/163701531-8337812b-74ae-4358-ad5a-b8a9d84d3de2.mov
And it is also possible to choose between native-styled and Xcode-liked tab bar:
https://user-images.githubusercontent.com/36816148/163701575-29fc9917-a690-420d-ace2-20647a35c7bc.mov

Tremendous progress @lilingxi01! It's really coming along nicely.

Maybe 75% opacity was only for dark mode, maybe not though.

@lilingxi01 : How am I in dark mode?

@Angelk90 It is Microsoft Edge, not CodeEdit lol.

@lilingxi01 : I never talked about CodeEdit for the image I posted, I just said that the browser you were using does something similar to what Google Chrome does.  I was wondering if browser was.

@Angelk90 : For dark mode, no problem! I was thinking you were talking about the dark mode of your screenshot. My bad 🌝

@lilingxi01 :  No problem.
It would be interesting if in the future in codeEdit tabs, something similar to tab grouping could be done.
Google Chrome:
https://user-images.githubusercontent.com/20476002/163718584-088b3a94-cf7e-4451-b055-ccbcf2805ee4.mov
Microsoft Edge:

Tab groups isn’t a bad idea. If we took it a step further what if we add a tab group per branch? Maybe replace open tabs with files changed in the brach that was just checked out?

@austincondiff : That may be a great idea, but it needs some further design consideration.

In some projects that have a lot of branches and parallel works, there will be too much tab groups on the tab bar. Plus, developers need to switch between multiple branches to check the same file, so collapsing the opened file requires developers to open that file again as a new tab even the file is already opened (that may be pretty annoying, right).
The tab group on browser could be unfolded at any time, then what corresponding behavior should be if we unfold one tab group in CodeEdit? Checkout corresponding branch? Then how about the works on the current branch?
It may be a great idea to remember user's opened files corresponding to each branch because different branches should have different working files. But it may lead to additional steps for users if they want to check the same file in another branch.

@lilingxi01 moved this conversation to #471 as it is out of scope for this PR.

Current Progress of Tab Bar Item Open-new-file Animation (with comparison):

Xcode-liked style.

Light mode.
https://user-images.githubusercontent.com/36816148/163733192-947fa70b-9e97-438c-abf6-c52013038b9d.mov
Dark mode.
https://user-images.githubusercontent.com/36816148/163733262-2c0e9f17-0cfe-4885-91a0-6a8b793244ab.mov
Current Progress of Tab Bar Item Switching Animation (with comparison):

Xcode-liked style.

Light mode.
https://user-images.githubusercontent.com/36816148/163733204-cb56ed55-7b92-479d-b31b-f1f578eec496.mov
Dark mode.
https://user-images.githubusercontent.com/36816148/163733334-ab49a748-f0e6-4795-ad2d-e7b21d3dda0a.mov

Due to the performance issue of Highlightr, there is a noticeable lag when switching tabs and opening new files.
I hope it could be resolved soon and I will re-optimize the animation based on that.

Highlightr will be replaced once we replace our editor view soon. I would say let's go ahead and merge this now and after it's merged, create an issue to optimize the animation if needed.

@austincondiff : This PR is ready for reviewing! 🎉 I have also updated the screenshots in the first section of this post!
(I cannot manually request for a review)

Looks fantastic @lilingxi01, great work! Do we know of a way to remove the separator border below the toolbar only where the active tab is so it appears as if the toolbar and the active tab are connected?

@austincondiff

Also, does it make enough sense to call the tab styles "Xcode" and "Native"? This may be the way to go, I just figured I'd get your input here.

I thought it was the most intuitive way. I don't have a better idea in mind for now. Do you have any suggestion?

For the native tabs, do we know of a way to remove the separator border below the toolbar only where the active tab is so it appears as if the toolbar and the active tab are connected?

After some investigation, I realized that it is nearly impossible to perfectly remove the separator of the titlebar (toolbar) except we build our own customized titlebar.
I have tried to use titlebarSeparatorStyle and titlebarAppearsTransparent property. The code workspace.windowControllers.first?.window?.titlebarSeparatorStyle = .none can hide the line, but it will potentially show the line again there while dragging the window (that is how it has been set up), so I think it might not be what you want. Plus, the background color of the titlebar and the tab bar are different, it looks a bit weird after removing the separator. titlebarAppearsTransparent (with backgroundColor) works a bit unexpected because the given color is tinted.
Problems:

I am not able to match the color (of TitleBar and TabBar) right now unless making a customized titlebar to replace the NSTitleBar.

.controlBackgroundColor is white at normal places, but is tinted white (looks gray) when applying to window.backgroundColor.

I cannot remove the separator perfectly by only turning the titlebarSeparatorStyle. I am not sure if there will be any side effect by turning the titlebarAppearsTransparent and window backgroundColor.

Demo (only turning titlebarSeparatorStyle)
https://user-images.githubusercontent.com/36816148/163810917-d74ab7aa-b046-4d35-b57d-0e664150bacb.mov

I eventually come up with a solution, and it looks not bad:
https://user-images.githubusercontent.com/36816148/163814415-d16d1e2f-1ac6-4679-9582-c03f7178a90a.mov

That looks great! How does that look in dark mode?

One thing to note in the future, if the editor is split down, the tabs for the bottom row of editors (all but top) need a dividing line all the way across.

That looks great! How does that look in dark mode?

I extract the color based on the design of Finder.
https://user-images.githubusercontent.com/36816148/163827195-87d3e3c8-86a9-4dd0-b42c-7dbec8667ff2.mov

Make the active color follow the system accent like xcode does.

I just fixed it by using System Material, which also solves a lot of potential side effects (because I am not changing background color anymore). It should now be all set!

Tabs (both native and Xcode), do not fade out when dismissed. Please fix this and then we can merge 🙂

@lilingxi01 Would you like to handle tab drag to reorder in this PR or a push leave it for later?

@austincondiff don't you think it's maybe best we keep pull requests seperate in case something breaking happens then we need to revert one whole pull request which might end up having changes for multiple PRs instead of what the original PR was supposed to be?

Would you like to handle tab drag to reorder in this PR or a push leave it for later?

I agree with @nanashili that it would be better to keep different features in separate PRs. I will make it as another PR after finishing this one.

I completely agree, makes sense.

Please note that I added one item to the checklist.

@austincondiff : Because I have no permission to edit your list, so I re-list them here:

[x] Tabs (both native and Xcode), do not fade out when dismissed.

It does have a fade-out animation, but due to the performance issue (a rendering lag) of Highlightr, it may seem to be flashed out.
I temporarily increase the duration of the animation, and will re-optimize it after Highlightr has been replaced.

[x] Surrounding tabs do animate their position to fill its place when dismissed.
[x] Native tabs do not slide animate when opened.

I also increase the duration of fade-in animation for now. Will re-optimize it after Highlightr has been replaced.

[ ] Xcode tabs have visible separator to the left of the active tab and should have a background of clear (do not hide because it will possibly shift other tabs 1 pixel to the left)

I am a bit confused on the last one. The active tab on Xcode seems to have no separator (that is why I set opacity to 0 for it), and opacity 0 will not shift pixels.

Xcode tab bar:

Current CodeEdit tab bar:

@lilingxi01 perfect! I must have been looking at an older video then. I will go ahead and merge! ✅

@allcontributors add @lilingxi01 for code.