#1260 koji_builder: fix the script for updating osbuildapi
Merged a year ago by kevin. Opened a year ago by obudai.
fedora-infra/ obudai/ansible fix-dns  into  main

@@ -5,13 +5,13 @@ 

  

  # in staging we need to allow api.stage and in prod api.

  {% if env == 'staging' %}

- RESOLVEQUERY=`resolvectl --cache=no --legend=no query api.stage.openshift.com 2> /dev/null`

+ RESOLVEQUERY=`resolvectl -4 --cache=no --legend=no query api.stage.openshift.com 2> /dev/null`

  {% else %}

- RESOLVEQUERY=`resolvectl --cache=no --legend=no query api.openshift.com 2> /dev/null`

+ RESOLVEQUERY=`resolvectl -4 --cache=no --legend=no query api.openshift.com 2> /dev/null`

  {% endif %}

  test $? -eq 0 || exit $?

  

- NEWIPS=`echo $RESOLVEQUERY | grep link | awk '{print $2 " " $6}' | sort -n`

+ NEWIPS=`echo "$RESOLVEQUERY" | grep link | sed -E 's/.* ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/g' | sort -n`

  

  /usr/sbin/ipset flush osbuildapi

  for j in $NEWIPS
@@ -22,10 +22,10 @@ 

  {% if env == 'staging' %}

  # in stg we need to add identity.api because we are using api.stage above. 

  # in prod this is already the same as api.openshift.com, so skip it.

- RESOLVEQUERY=`resolvectl --cache=no --legend=no query identity.api.openshift.com 2> /dev/null`

+ RESOLVEQUERY=`resolvectl -4 --cache=no --legend=no query identity.api.openshift.com 2> /dev/null`

  test $? -eq 0 || exit $?

  

- NEWIDENTITYIPS=`echo $RESOLVEQUERY | grep link | awk '{print $2 " " $6}' | sort -n`

+ NEWIDENTITYIPS=`echo "$RESOLVEQUERY" | grep link | sed -E 's/.* ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/g' | sort -n`

  

  for j in $NEWIDENTITYIPS

  do

The awk helper responsible for extracting IP addresses from the resolvectl
call could handle only 2 of them.
It turns out that api.openshift.com now has 4 A records, therefore this method
became flakey: It added only 2 addresses to the IP set, so if the osbuild
plugin used one of the 2 ignored addresses, the call failed.

This commit solves it by introducing a different method of parsing the
resolvectl output:

We now use an ugly but working sed command that erases everything from the
line except for the IPv4 address. Therefore, I had to quote the echo before
the new sed command so it can get a proper multiline input. Also, I limited
resolvectl to just use IPv4 because the new script cannot handle IPv6
properly. This doesn't cause any harm because api.openshift.com isn't
actually accessible by IPv6. Sigh...

Build succeeded.

Ah ha. This is indeed pretty ugly, but does seem to work.

I am pretty sure when I tested api had only 1 or 2 ip's. :(

rebased onto 6ba8b69

a year ago

rebased onto 6ba8b69

a year ago

Pull-Request has been merged by kevin

a year ago

Build succeeded.

Metadata