Kuadrant / authorino-operator

Kubernetes Operator to manage Authorino instances
Apache License 2.0
9 stars 20 forks source link

updated changes for supporting s390x & ppc64le #190

Closed modassarrana89 closed 4 months ago

modassarrana89 commented 4 months ago

Updated build image workflow to prepare Multi-arch for:

  1. authorino-operator
  2. authorino-operator-bundle

Updated CSV with labels to support multi-arch

Validated the Operator using operator SDK [root@m1305001 authorino-operator]# ./bin/operator-sdk run bundle quay.io/morana/authorino-operator-bundle:latest INFO[0011] Creating a File-Based Catalog of the bundle "quay.io/morana/authorino-operator-bundle:latest" INFO[0014] Generated a valid File-Based Catalog
INFO[0018] Created registry pod: quay-io-morana-authorino-operator-bundle-latest INFO[0018] Created CatalogSource: authorino-operator-catalog INFO[0018] OperatorGroup "operator-sdk-og" created
INFO[0018] Created Subscription: authorino-operator-v0-0-0-sub INFO[0047] Approved InstallPlan install-hzkwt for the Subscription: authorino-operator-v0-0-0-sub INFO[0047] Waiting for ClusterServiceVersion "default/authorino-operator.v0.0.0" to reach 'Succeeded' phase INFO[0047] Waiting for ClusterServiceVersion "default/authorino-operator.v0.0.0" to appear INFO[0050] Found ClusterServiceVersion "default/authorino-operator.v0.0.0" phase: Pending INFO[0056] Found ClusterServiceVersion "default/authorino-operator.v0.0.0" phase: InstallReady INFO[0059] Found ClusterServiceVersion "default/authorino-operator.v0.0.0" phase: Installing INFO[0081] Found ClusterServiceVersion "default/authorino-operator.v0.0.0" phase: Succeeded INFO[0081] OLM has successfully installed "authorino-operator.v0.0.0"

Note: Catalog image has not been made multi-arch. Reason - Currently its taking opm of x86 arch. Working on another PR to make muti-arch image for Catalog. Then user can deploy operator using CatalogSource & Subscription

modassarrana89 commented 4 months ago

@guicassolato @jasonmadigan @willthames Please review the changes for supporting authorino-operator image for s390x & pp64cle

guicassolato commented 4 months ago

Thanks for this @modassarrana89!

Do you mind please running the following?

rm -rf ./bin/*
make bundle manifests

I'm catching a few minor diff due to the ordering of the fields in the CSV.

modassarrana89 commented 4 months ago

Thanks for this @modassarrana89!

Do you mind please running the following?

rm -rf ./bin/*
make bundle manifests

I'm catching a few minor diff due to the ordering of the fields in the CSV.

I have run the above command as part of github actions . since you don't have privelege for the action . I have copied the output for it . Please let me know if this is fine. I will run the same on s390x as well & share output as well

  rm -rf ./bin/*
  make bundle manifests REGISTRY=quay.io ORG=morana IMAGE_TAG=073d43a0[2](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:2)75a4b46c0fff4914cb57[3](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:3)264a1e5d3d
  shell: /usr/bin/bash -e {0}
  env:
    IMG_TAGS: latest 073d43a0275a4b46c0fff4914cb57326[4](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:4)a1e5d3d
    IMG_REGISTRY_HOST: quay.io
    IMG_REGISTRY_ORG: morana
    MAIN_BRANCH_NAME: test-s390x
    OPERATOR_NAME: authorino-operator
    BUILD_CONFIG_FILE: build.yaml
    VERSION: 073d43a027[5](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:5)a4b46c0fff4914cb5732[6](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:6)4a1e5d3d
go: creating new go.mod: module tmp
Downloading sigs.k8s.io/controller-tools/cmd/controller-gen@v0.15.0
go: downloading sigs.k8s.io/controller-tools v0.15.0
go: sigs.k8s.io/controller-tools@v0.15.0 requires go >= 1.22.0; switching to go1.22.5
go: downloading go1.22.5 (linux/amd64)
go: downloading github.com/spf13/cobra v1.8.0
go: downloading github.com/gobuffalo/flect v1.0.2
go: downloading k8s.io/apiextensions-apiserver v0.30.0
go: downloading k8s.io/apimachinery v0.30.0
go: downloading golang.org/x/tools v0.20.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/fatih/color v1.16.0
go: downloading k8s.io/api v0.30.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading sigs.k8s.io/yaml v1.4.0
go: downloading github.com/spf13/pflag v1.0.5
go: downloading github.com/gogo/protobuf v1.3.2
go: downloading k8s.io/utils v0.0.0-20230[7](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:7)26121419-3b25d923346b
go: downloading github.com/google/gofuzz v1.2.0
go: downloading k[8](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:8)s.io/klog/v2 v2.120.1
go: downloading sigs.k8s.io/structured-merge-diff/v4 v4.4.1
go: downloading github.com/mattn/go-colorable v0.1.13
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading golang.org/x/sync v0.7.0
go: downloading sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
go: downloading gopkg.in/inf.v0 v0.[9](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:9).1
go: downloading github.com/go-logr/logr v1.4.1
go: downloading golang.org/x/sys v0.19.0
go: downloading golang.org/x/mod v0.17.0
go: downloading github.com/json-iterator/go v1.1.12
go: downloading golang.org/x/net v0.24.0
go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
go: downloading github.com/modern-go/reflect2 v1.0.2
go: downloading golang.org/x/text v0.14.0
go: creating new go.mod: module tmp
Downloading sigs.k8s.io/kustomize/kustomize/v4@v4.5.5
go: downloading sigs.k8s.io/kustomize/kustomize/v4 v4.5.5
go: downloading github.com/spf13/cobra v1.4.0
go: downloading sigs.k8s.io/kustomize/api v0.11.5
go: downloading sigs.k8s.io/kustomize/cmd/config v0.[10](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:10).7
go: downloading sigs.k8s.io/kustomize/kyaml v0.13.7
go: downloading sigs.k8s.io/yaml v1.2.0
go: downloading github.com/pkg/errors v0.9.1
go: downloading github.com/olekukonko/tablewriter v0.0.4
go: downloading k8s.io/kube-openapi v0.0.0-20220401212409-b28bf2818661
go: downloading github.com/go-errors/errors v1.0.1
go: downloading golang.org/x/text v0.3.7
go: downloading github.com/mattn/go-runewidth v0.0.7
go: downloading github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
go: downloading github.com/xlab/treeprint v0.0.0-2018[11](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:11)12141820-a009c3971eca
go: downloading github.com/google/gnostic v0.5.7-v3refs
go: downloading google.golang.org/protobuf v1.28.0
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading github.com/evanphx/json-patch v4.11.0+incompatible
go: downloading github.com/imdario/mergo v0.3.5
go: downloading github.com/go-openapi/jsonreference v0.19.3
go: downloading github.com/go-openapi/swag v0.19.5
go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
go: downloading go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5
go: downloading github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a
go: downloading github.com/mitchellh/mapstructure v1.4.1
go: downloading k8s.io/utils v0.0.0-20210802155522-efc7438f0176
go: downloading github.com/google/shlex v0.0.0-2019[12](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:12)02100458-e7afc7fbc510
go: downloading github.com/PuerkitoBio/purell v1.1.1
go: downloading github.com/go-openapi/jsonpointer v0.19.5
go: downloading github.com/mailru/easyjson v0.7.0
go: downloading github.com/golang/protobuf v1.5.2
go: downloading github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578
go: downloading golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4
envsubst \
        < config/authorino/kustomization.template.yaml \
        > config/authorino/kustomization.yaml
/home/runner/work/authorino-operator/authorino-operator/bin/controller-gen crd rbac:roleName=authorino-operator-manager webhook paths="./..." output:crd:artifacts:config=config/crd/bases && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize build config/install > /home/runner/work/authorino-operator/authorino-operator/config/install/manifests.yaml
make deploy-manifest OPERATOR_IMAGE=quay.io/morana/authorino-operator:073d43a0275a4b46c0fff4914cb573264a1e5d3d
make[1]: Entering directory '/home/runner/work/authorino-operator/authorino-operator'
mkdir -p /home/runner/work/authorino-operator/authorino-operator/config/deploy
cd /home/runner/work/authorino-operator/authorino-operator/config/manager && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize edit set image controller=quay.io/morana/authorino-operator:073d43a0275a4b46c0fff4914cb573264a1e5d3d ;\
cd /home/runner/work/authorino-operator/authorino-operator && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize build config/deploy > /home/runner/work/authorino-operator/authorino-operator/config/deploy/manifests.yaml
# clean up
cd /home/runner/work/authorino-operator/authorino-operator/config/manager && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
make[1]: Leaving directory '/home/runner/work/authorino-operator/authorino-operator'
./utils/install-operator-sdk.sh /home/runner/work/authorino-operator/authorino-operator/bin/operator-sdk v1.32.0
Downloading https://github.com/operator-framework/operator-sdk/releases/download/v1.32.0/operator-sdk_linux_amd64
gpg: directory '/home/runner/.gnupg' created
gpg: keybox '/home/runner/.gnupg/pubring.kbx' created
gpg: /home/runner/.gnupg/trustdb.gpg: trustdb created
gpg: key 052996E2A20B5C7E: public key "Operator SDK (release) <cncf-operator-sdk@cncf.io>" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: assuming signed data in 'checksums.txt'
gpg: Signature made Thu Oct  5 20:06:56 2023 UTC
gpg:                using RSA key 86[13](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:14)DB87A5BA825EF3FD0EBE2A859D08BF9886DB
gpg: Good signature from "Operator SDK (release) <cncf-operator-sdk@cncf.io>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3B2F [14](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:15)81 D146 2380 80B3  46BB 0529 96E2 A20B 5C7E
     Subkey fingerprint: 8613 DB87 A5BA 825E F3FD  0EBE 2A85 9D08 BF98 86DB
operator-sdk_linux_amd64: OK
go: creating new go.mod: module tmp
Downloading github.com/mikefarah/yq/v4@v4.34.2
go: downloading github.com/mikefarah/yq/v4 v4.34.2
go: downloading github.com/spf13/cobra v1.7.0
go: downloading gopkg.in/op/go-logging.v1 v1.0.0-20160211212[15](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:16)6-b2cb9fa56473
go: downloading github.com/a8m/envsubst v1.4.2
go: downloading github.com/alecthomas/participle/v2 v2.0.0
go: downloading github.com/dimchansky/utfbom v1.1.1
go: downloading github.com/elliotchance/orderedmap v1.5.0
go: downloading github.com/fatih/color v1.15.0
go: downloading github.com/goccy/go-json v0.10.2
go: downloading github.com/goccy/go-yaml v1.11.0
go: downloading github.com/jinzhu/copier v0.3.5
go: downloading github.com/magiconair/properties v1.8.7
go: downloading github.com/pelletier/go-toml/v2 v2.0.8
go: downloading golang.org/x/net v0.12.0
go: downloading golang.org/x/text v0.11.0
go: downloading github.com/mattn/go-isatty v0.0.[17](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:18)
go: downloading golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
go: downloading golang.org/x/sys v0.10.0
Error: open build.yaml: no such file or directory
/home/runner/work/authorino-operator/authorino-operator/bin/operator-sdk generate kustomize manifests -q
time="2024-07-11T07:[19](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:20):29Z" level=warning msg="Skipping definitions parsing for API {}: Go type not found"
cd config/manager && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize edit set image controller=quay.io/morana/authorino-operator:073d43a0275a4b46c0fff4914cb573264a1e5d3d
envsubst \
        < config/manifests/bases/authorino-operator.clusterserviceversion.template.yaml \
        > config/manifests/bases/authorino-operator.clusterserviceversion.yaml
/home/runner/work/authorino-operator/authorino-operator/bin/kustomize build config/manifests | /home/runner/work/authorino-operator/authorino-operator/bin/operator-sdk generate bundle -q --overwrite --version 0.0.0   --package authorino-operator
time="[20](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:21)24-07-11T07:19:30Z" level=info msg="Creating bundle.Dockerfile"
time="2024-07-11T07:19:30Z" level=info msg="Creating bundle/metadata/annotations.yaml"
time="2024-07-11T07:19:30Z" level=info msg="Bundle metadata generated successfully"
(/home/runner/work/authorino-operator/authorino-operator/bin/yq e -e '.config.replaces' build.yaml && \
    V="" /home/runner/work/authorino-operator/authorino-operator/bin/yq eval '.spec.replaces = strenv(V)' -i bundle/manifests/authorino-operator.clusterserviceversion.yaml) || \
    (/home/runner/work/authorino-operator/authorino-operator/bin/yq eval '.' -i bundle/manifests/authorino-operator.clusterserviceversion.yaml && echo "no replaces added")
Error: open build.yaml: no such file or directory
no replaces added
/home/runner/work/authorino-operator/authorino-operator/bin/operator-sdk bundle validate ./bundle
time="20[24](https://github.com/modassarrana89/authorino-operator/actions/runs/9886809171/job/27308319595#step:9:25)-07-11T07:19:30Z" level=info msg="All validation tests have completed successfully"
# Roll back edit
cd config/manager && /home/runner/work/authorino-operator/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
make: 'manifests' is up to date.
guicassolato commented 4 months ago

Thanks for this @modassarrana89! Do you mind please running the following?

rm -rf ./bin/*
make bundle manifests

I'm catching a few minor diff due to the ordering of the fields in the CSV.

I have run the above command as part of github actions . since you don't have privelege for the action . I have copied the output for it . Please let me know if this is fine. I will run the same on s390x as well & share output as well

@modassarrana89, I expected the command to generate a diff in the bundle/manifests/authorino-operator.clusterserviceversion.yaml file. If that's indeed the case, can you please commit it and push it? Thanks.

modassarrana89 commented 4 months ago

Thanks for this @modassarrana89! Do you mind please running the following?

rm -rf ./bin/*
make bundle manifests

I'm catching a few minor diff due to the ordering of the fields in the CSV.

I have run the above command as part of github actions . since you don't have privelege for the action . I have copied the output for it . Please let me know if this is fine. I will run the same on s390x as well & share output as well

@modassarrana89, I expected the command to generate a diff in the bundle/manifests/authorino-operator.clusterserviceversion.yaml file. If that's indeed the case, can you please commit it and push it? Thanks.

@guicassolato I have updated the commit & run the below make command on my environment i.e s390x

Verify bundle

[root@m1305001 authorino-operator]# make verify-bundle
/usr/bin/which: no setup-envtest in (/opt/conda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin)
envsubst \
        < config/authorino/kustomization.template.yaml \
        > config/authorino/kustomization.yaml
/root/authorino-operator/bin/controller-gen crd rbac:roleName=authorino-operator-manager webhook paths="./..." output:crd:artifacts:config=config/crd/bases && /root/authorino-operator/bin/kustomize build config/install > /root/authorino-operator/config/install/manifests.yaml
make deploy-manifest OPERATOR_IMAGE=quay.io/kuadrant/authorino-operator:latest
make[1]: Entering directory '/root/authorino-operator'
/usr/bin/which: no setup-envtest in (/opt/conda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin)
mkdir -p /root/authorino-operator/config/deploy
cd /root/authorino-operator/config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest ;\
cd /root/authorino-operator && /root/authorino-operator/bin/kustomize build config/deploy > /root/authorino-operator/config/deploy/manifests.yaml
# clean up
cd /root/authorino-operator/config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
make[1]: Leaving directory '/root/authorino-operator'
./utils/install-operator-sdk.sh /root/authorino-operator/bin/operator-sdk v1.32.0
Error: open build.yaml: no such file or directory
/root/authorino-operator/bin/operator-sdk generate kustomize manifests -q
WARN[0000] Skipping definitions parsing for API {}: Go type not found 
cd config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
envsubst \
        < config/manifests/bases/authorino-operator.clusterserviceversion.template.yaml \
        > config/manifests/bases/authorino-operator.clusterserviceversion.yaml
/root/authorino-operator/bin/kustomize build config/manifests | /root/authorino-operator/bin/operator-sdk generate bundle -q --overwrite --version 0.0.0   --package authorino-operator
INFO[0001] Creating bundle.Dockerfile                   
INFO[0001] Creating bundle/metadata/annotations.yaml    
INFO[0001] Bundle metadata generated successfully       
(/root/authorino-operator/bin/yq e -e '.config.replaces' build.yaml && \
    V="" /root/authorino-operator/bin/yq eval '.spec.replaces = strenv(V)' -i bundle/manifests/authorino-operator.clusterserviceversion.yaml) || \
    (/root/authorino-operator/bin/yq eval '.' -i bundle/manifests/authorino-operator.clusterserviceversion.yaml && echo "no replaces added")
Error: open build.yaml: no such file or directory
no replaces added
/root/authorino-operator/bin/operator-sdk bundle validate ./bundle
INFO[0000] All validation tests have completed successfully 
# Roll back edit
cd config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
git diff -I' containerImage:' -I' image:' -I'^    createdAt: ' --exit-code ./bundle
[ -z "$(git ls-files --other --exclude-standard --directory --no-empty-directory ./bundle)" ]
/root/authorino-operator/bin/yq e -e '.metadata.annotations.containerImage == "quay.io/kuadrant/authorino-operator:latest"' bundle/manifests/authorino-operator.clusterserviceversion.yaml
true
/root/authorino-operator/bin/yq e -e '.spec.install.spec.deployments[0].spec.template.spec.containers[0].image == "quay.io/kuadrant/authorino-operator:latest"' bundle/manifests/authorino-operator.clusterserviceversion.yaml
true
/root/authorino-operator/bin/yq e -e '.spec.install.spec.deployments[1].spec.template.spec.containers[0].image == "quay.io/kuadrant/authorino:latest"' bundle/manifests/authorino-operator.clusterserviceversion.yaml
true

Verify Manifests

[root@m1305001 authorino-operator]# make verify-manifests
/usr/bin/which: no setup-envtest in (/opt/conda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin)
envsubst \
        < config/authorino/kustomization.template.yaml \
        > config/authorino/kustomization.yaml
/root/authorino-operator/bin/controller-gen crd rbac:roleName=authorino-operator-manager webhook paths="./..." output:crd:artifacts:config=config/crd/bases && /root/authorino-operator/bin/kustomize build config/install > /root/authorino-operator/config/install/manifests.yaml
make deploy-manifest OPERATOR_IMAGE=quay.io/kuadrant/authorino-operator:latest
make[1]: Entering directory '/root/authorino-operator'
/usr/bin/which: no setup-envtest in (/opt/conda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/go/bin:/root/bin)
mkdir -p /root/authorino-operator/config/deploy
cd /root/authorino-operator/config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest ;\
cd /root/authorino-operator && /root/authorino-operator/bin/kustomize build config/deploy > /root/authorino-operator/config/deploy/manifests.yaml
# clean up
cd /root/authorino-operator/config/manager && /root/authorino-operator/bin/kustomize edit set image controller=quay.io/kuadrant/authorino-operator:latest
make[1]: Leaving directory '/root/authorino-operator'
git diff -I' containerImage:' -I' image:' -I'^    createdAt: ' --exit-code ./config
[ -z "$(git ls-files --other --exclude-standard --directory --no-empty-directory ./config)" ]
/root/authorino-operator/bin/yq ea -e 'select([.][].kind == "Deployment") | select([.][].metadata.name == "authorino-operator").spec.template.spec.containers[0].image | . == "quay.io/kuadrant/authorino-operator:latest"' config/deploy/manifests.yaml
true
/root/authorino-operator/bin/yq ea -e 'select([.][].kind == "Deployment") | select([.][].metadata.name == "authorino-webhooks").spec.template.spec.containers[0].image | . == "quay.io/kuadrant/authorino:latest"' config/deploy/manifests.yaml
true
/root/authorino-operator/bin/yq e -e '.metadata.annotations.containerImage == "quay.io/kuadrant/authorino-operator:latest"' config/manifests/bases/authorino-operator.clusterserviceversion.yaml
true
modassarrana89 commented 4 months ago

@guicassolato Do you want me to update Readme , as i have not made catalog image for s390x & ppc64le. Should i update in Readme to use operator-sdk for operator installation ??

guicassolato commented 4 months ago

@guicassolato Do you want me to update Readme , as i have not made catalog image for s390x & ppc64le. Should i update in Readme to use operator-sdk for operator installation ??

We have nothing in the README about supported arches yet. If you want to add something, I could't thank you enough!

modassarrana89 commented 4 months ago

Thank you much for this, @modassarrana89!

I'll approve the PR. If you do end up adding something to the README, we don't need to spend another round of reviews. Either way, LGTM to merge whenever you say so.

@guicassolato I have updated Readme , as a result please reapprove & merge

guicassolato commented 4 months ago

I'm going to merge this.

Thanks, @modassarrana89!

We usually ask contributors to sign their commits, but no worries. Next time!