Skip to content

Commit

Permalink
Add FBC resources for kiali operator (#837)
Browse files Browse the repository at this point in the history
This is replicating what was done here: redhat-openshift-ecosystem/community-operators-prod#5455
  • Loading branch information
jmazzitelli authored Nov 5, 2024
1 parent 45a5432 commit 29455b1
Show file tree
Hide file tree
Showing 10 changed files with 2,749 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ validate: .ensure-operator-sdk-exists
@printf "==========\nValidating kiali-ossm metadata\n==========\n"
@mkdir -p ${OUTDIR}/kiali-ossm && rm -rf ${OUTDIR}/kiali-ossm/* && cp -R ./manifests/kiali-ossm ${OUTDIR} && cat ./manifests/kiali-ossm/manifests/kiali.clusterserviceversion.yaml | KIALI_OPERATOR_VERSION="2.0.0" KIALI_OLD_OPERATOR_VERSION="1.0.0" KIALI_OPERATOR_REGISTRY="registry-proxy.engineering.redhat.com/rh-osbs/openshift-service-mesh-kiali-operator:2.0.0" CREATED_AT="2021-01-01T00:00:00Z" envsubst > ${OUTDIR}/kiali-ossm/manifests/kiali.clusterserviceversion.yaml && ${OP_SDK} bundle validate --verbose ${OUTDIR}/kiali-ossm
@printf "==========\nValidating the latest version of kiali-community metadata\n==========\n"
@for d in $$(ls -1d manifests/kiali-community/* | sort -V | grep -v ci.yaml | tail -n 1); do ${OP_SDK} bundle --verbose validate $$d; done
@for d in $$(find . -type d -name "[0-9]*" | grep -E "/[0-9]+\.[0-9]+\.[0-9]+$$" | sort -V | tail -n 1); do ${OP_SDK} bundle --verbose validate $$d; done
@printf "==========\nValidating the latest version of kiali-upstream metadata\n==========\n"
@for d in $$(ls -1d manifests/kiali-upstream/* | sort -V | grep -v ci.yaml | tail -n 1); do ${OP_SDK} bundle --verbose validate $$d; done
@for d in $$(find . -type d -name "[0-9]*" | grep -E "/[0-9]+\.[0-9]+\.[0-9]+$$" | sort -V | tail -n 1); do ${OP_SDK} bundle --verbose validate $$d; done

## validate-cr: Ensures the example CR is valid according to the CRD schema
validate-cr:
Expand Down
120 changes: 120 additions & 0 deletions manifests/kiali-community/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# This Makefile provides a set of targets to generate and validate operator catalogs
# using the Operator Package Manager (opm) tool.

# The makefile should be placed in the root of the operator repository.
# for example at: <operator-repo>/operators/<operator-name>/Makefile

# A user can customize "catalog" target to generate the operator catalog in a way
# that suits the operator.
# OPM allows for the generation of catalogs using different templates.
# - basic: generates a basic catalog
# - semver: generates a catalog with semver versioning

PDW=$(shell pwd)
OPERATOR_NAME=$(shell basename $(PDW))
TOPDIR=$(abspath $(dir $(PWD))/../)
BINDIR=${TOPDIR}/bin

# Add the bin directory to the PATH
export PATH := $(BINDIR):$(PATH)
# A place to store the generated catalogs
CATALOG_DIR=${TOPDIR}/catalogs

# A place to store the operator catalog templates
OPERATOR_CATALOG_TEMPLATE_DIR = ${PDW}/catalog-templates

# The operator pipeline image to use for the fbc-onboarding target
OPERATOR_PIPELINE_IMAGE ?= quay.io/redhat-isv/operator-pipelines-images:released

# Define the paths for both auth files
DOCKER_CONFIG := $(HOME)/.docker/config.json
CONTAINERS_AUTH := $(XDG_RUNTIME_DIR)/containers/auth.json

# A list of OCP versions to generate catalogs for
# This list can be customized to include the versions that are relevant to the operator
# DO NOT change this line (except for the versions) if you want to take advantage
# of the automated catalog promotion
OCP_VERSIONS=$(shell echo "v4.12 v4.13 v4.14 v4.15 v4.16 v4.17" )


.PHONY: fbc-onboarding
fbc-onboarding: clean
@if [ -f $(DOCKER_CONFIG) ]; then \
echo "Using Docker config file: $(DOCKER_CONFIG)"; \
CONFIG_VOLUME="-v $(DOCKER_CONFIG):/root/.docker/config.json"; \
elif [ -f $(CONTAINERS_AUTH) ]; then \
echo "Using containers auth file: $(CONTAINERS_AUTH)"; \
CONFIG_VOLUME="-v $(CONTAINERS_AUTH):/root/.docker/config.json"; \
else \
echo "No authentication file found."; \
fi; \
podman run \
--rm \
--user $(id -u):$(id -g) \
--security-opt label=disable \
--pull always \
-v $(TOPDIR):/workspace \
$$CONFIG_VOLUME \
$(OPERATOR_PIPELINE_IMAGE) fbc-onboarding \
--repo-root /workspace \
--operator-name $(OPERATOR_NAME) \
--cache-dir /workspace/.catalog_cache

.PHONY: catalogs
# replace this stub with one customized to serve your needs ... some examples below

# here are a few examples of different approaches to fulfilling this target
# comment out / customize the one that makes the most sense, or use them as examples in defining your own
#
# --- BASIC TEMPLATE ---
catalogs: basic
#
# --- SEMVER TEMPLATE ---
#catalogs: semver


# basic target provides an example FBC generation from a `basic` template type.
# this example takes a single file as input and generates a well-formed FBC operator contribution as an output
.PHONY: basic
basic: ${BINDIR}/opm clean
for version in $(OCP_VERSIONS); do \
mkdir -p ${CATALOG_DIR}/$${version}/${OPERATOR_NAME}/ && \
${BINDIR}/opm alpha render-template basic -o yaml ${OPERATOR_CATALOG_TEMPLATE_DIR}/$${version}.yaml > ${CATALOG_DIR}/$${version}/${OPERATOR_NAME}/catalog.yaml; \
done


# semver target provides an example FBC generation from a `semver` template type.
# this example takes a single file as input and generates a well-formed FBC operator contribution as an output
.PHONY: semver
semver: ${BINDIR}/opm clean
for version in $(OCP_VERSIONS); do \
mkdir -p ${CATALOG_DIR}/$${version}/${OPERATOR_NAME}/ && \
${BINDIR}/opm alpha render-template semver -o yaml ${OPERATOR_CATALOG_TEMPLATE_DIR}/$${version}.yaml > ${CATALOG_DIR}/$${version}/${OPERATOR_NAME}/catalog.yaml; \
done


# validate-catalogs target illustrates FBC validation
# all FBC must pass opm validation in order to be able to be used in a catalog
.PHONY: validate-catalogs
validate-catalogs: ${BINDIR}/opm
for version in $(OCP_VERSIONS); do \
${BINDIR}/opm validate $(CATALOG_DIR)/$${version}/${OPERATOR_NAME} && echo "$${version} catalog validation passed" || echo "$${version} catalog validation failed"; \
done

.PHONY: create-catalog-dir
create-catalog-dir:
mkdir -p $(CATALOG_DIR)

.PHONY: clean
clean: create-catalog-dir
find $(CATALOG_DIR) -type d -name ${OPERATOR_NAME} -exec rm -rf {} +


OS=$(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(shell uname -m | sed 's/x86_64/amd64/')

# Automatically download the opm binary
OPM_VERSION ?= v1.46.0
${BINDIR}/opm:
if [ ! -d ${BINDIR} ]; then mkdir -p ${BINDIR}; fi
curl -sLO https://github.com/operator-framework/operator-registry/releases/download/$(OPM_VERSION)/$(OS)-$(ARCH)-opm && chmod +x $(OS)-$(ARCH)-opm && mv $(OS)-$(ARCH)-opm ${BINDIR}/opm
Loading

0 comments on commit 29455b1

Please sign in to comment.