Skip to content

Commit

Permalink
* convert olm bundle manifets' tree to operator-registry tree
Browse files Browse the repository at this point in the history
* support case when olm bundle contains more than one crd version
  • Loading branch information
annastopel committed Jun 28, 2019
1 parent bb594af commit c1e26dd
Show file tree
Hide file tree
Showing 48 changed files with 9,709 additions and 37 deletions.
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#See the License for the specific language governing permissions and
#limitations under the License.

.PHONY: build build-controller build-importer build-cloner build-apiserver build-uploadproxy build-uploadserver build-operator build-functest-file-image-init build-functest-registry-image-init build-functest \
.PHONY: build build-controller build-importer build-cloner build-apiserver build-uploadproxy build-uploadserver build-operator build-functest-file-image-init build-functest-registry-image-init build-cdi-olm-catalog build-functest \
docker docker-controller docker-cloner docker-importer docker-apiserver docker-uploadproxy docker-uploadserver docker-operator docker-functest-image-init docker-functest-image-http docker-functest-registry-populate docker-functest-registry docker-functest-registry-init \
cluster-up cluster-down cluster-sync cluster-sync-controller cluster-sync-cloner cluster-sync-importer cluster-sync-apiserver cluster-sync-uploadproxy cluster-sync-uploadserver \
olm-verify olm-push \
Expand Down Expand Up @@ -51,7 +51,7 @@ apidocs:
${DO} "./hack/update-codegen.sh && ./hack/gen-swagger-doc/gen-swagger-docs.sh v1alpha1 html"

build:
${DO} "DOCKER_REPO=${DOCKER_REPO} DOCKER_TAG=${DOCKER_TAG} VERBOSITY=${VERBOSITY} PULL_POLICY=${PULL_POLICY} QUAY_NAMESPACE=${QUAY_NAMESPACE} QUAY_REPOSITORY=${QUAY_REPOSITORY} CSV_VERSION=${CSV_VERSION} ./hack/build/build-go.sh clean && ./hack/build/build-go.sh build ${WHAT} && ./hack/build/build-cdi-func-test-file-host.sh && ./hack/build/build-cdi-func-test-registry-host.sh && ./hack/build/build-cdi-olm-catalog.sh && ./hack/build/build-copy-artifacts.sh ${WHAT}"
${DO} "DOCKER_REPO=${DOCKER_REPO} DOCKER_TAG=${DOCKER_TAG} VERBOSITY=${VERBOSITY} PULL_POLICY=${PULL_POLICY} QUAY_NAMESPACE=${QUAY_NAMESPACE} QUAY_REPOSITORY=${QUAY_REPOSITORY} CSV_VERSION=${CSV_VERSION} ./hack/build/build-go.sh clean && ./hack/build/build-go.sh build ${WHAT} && ./hack/build/build-cdi-func-test-file-host.sh && ./hack/build/build-cdi-func-test-registry-host.sh && ./hack/build/build-copy-artifacts.sh ${WHAT}"

build-controller: WHAT = cmd/cdi-controller
build-controller: build
Expand All @@ -67,6 +67,8 @@ build-cloner: WHAT = cmd/cdi-cloner
build-cloner: build
build-operator: WHAT = cmd/cdi-operator
build-operator: build
build-cdi-olm-catalog: WHAT = tools/cdi-olm-catalog
build-cdi-olm-catalog: build
build-functest-file-image-init: WHAT = tools/cdi-func-test-file-host-init
build-functest-file-image-init:
build-functest-registry-image-init: WHAT= tools/cdi-func-test-registry-init
Expand Down
14 changes: 11 additions & 3 deletions glide.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions glide.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import:
subpackages:
- pkg/appregistry
version: 1cbd326243493ff9ec589a542fa335fdc84dc3e7
- package: github.com/operator-framework/operator-lifecycle-manager
subpackages:
- pkg/api/apis/operators/v1alpha1
version: 73c00f855607f246bfb413566bff78e404eb8302
- package: github.com/gorilla/mux
version: ^1.6.1
- package: github.com/minio/minio-go
Expand Down
66 changes: 63 additions & 3 deletions hack/build/build-cdi-olm-catalog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,34 +27,94 @@ OLM_CATALOG_OUT_PATH=${OUT_PATH}/${OLM_CATALOG_INIT_PATH}
OLM_MANIFESTS_SRC_PATH=${OUT_PATH}/manifests/release/olm/bundle
OLM_MANIFESTS_DIR=olm-catalog
OLM_PACKAGE=${QUAY_REPOSITORY}
OLM_TMP_CRDS=${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE}/crds

#create directory for olm catalog container
mkdir -p "${OLM_CATALOG_OUT_PATH}"


#extract CRD version supported by given CSV
function getCSVCRDVersion {
csv=$1
local crdVersion
crdVersion=$(${OLM_CATALOG_OUT_PATH}/cdi-olm-catalog --cmd get-csv-crd-version --csv-file $csv --crd-kind "CDI")
echo $crdVersion
}

#locate CRD file with the provided version
function getCRD {
crdversion=$1
crdslocation=$2

local crdfilename
crdfilename="none"
for crd in $(ls $crdslocation); do
if [[ $crd =~ "crd" ]]; then
if [[ $(${OLM_CATALOG_OUT_PATH}/cdi-olm-catalog --cmd get-crd-version --crd-file $crdslocation/$crd --crd-kind "CDI") == "$crdVersion" ]]; then
crdfilename=$crd
break
fi
fi
done

if [ "$crdfilename" = "none" ]; then
echo "Error: No matching CRD for version "$crdversion
exit -1
fi
echo $crdfilename
}

#copy OLM manifests of a provided csv version to a dedicated directory
function packBundle {
csv=$1
mkdir -p ${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE=}/${csv}
crds=$2

mkdir -p ${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE}/${csv}
cp ${OLM_MANIFESTS_SRC_PATH}/${csv} ${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE}/${csv}
cp ${OLM_MANIFESTS_SRC_PATH}/*crd* ${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE}/${csv}

crdVersion=$(getCSVCRDVersion "${OLM_MANIFESTS_SRC_PATH}/${csv}")
crdFile=$(getCRD $crdVersion $crds)

cp $crds/$crdFile ${OLM_CATALOG_OUT_PATH}/${OLM_MANIFESTS_DIR}/${OLM_PACKAGE}/${csv}/cdi-crds.yaml
}

#copy crds unified manifiest to temp location and split it into manifests per crd
function prepareCRDFiles {
crds=$1
cur=$(pwd)
cp ${OLM_MANIFESTS_SRC_PATH}/*crds* $crds
cd $crds
csplit --digits=3 --quiet --elide-empty-files --prefix=cdi-crd --suffix-format=%03d.yaml $crds/cdi-crds.yaml "/--/" "{*}"
rm -rf $crds/cdi-crds.yaml
cd $cur

}

#iterate over all OLM bundles and for each one build a dedicated directory
function packBundles {

csvs=$1
crds=${OLM_TMP_CRDS}

mkdir -p $crds
prepareCRDFiles $crds

for csv in $(ls -1 $csvs); do
if [[ $csv =~ "csv" ]]; then
echo "pack bundle for CSV "${csv}
packBundle $csv
packBundle $csv $crds
fi
done

#cleanup temp crds directory
rm -rf $crds
}

${BUILD_DIR}/build-copy-artifacts.sh "${OLM_CATALOG_INIT_PATH}"

#copy Dockerfile
cp ${BUILD_DIR}/docker/${CDI_OLM_CATALOG}/* ${OLM_CATALOG_OUT_PATH}/
cp "${OLM_CATALOG_INIT_PATH}"/* ${OLM_CATALOG_OUT_PATH}/

#Build directory structure expected by olm-catalog-registry
# olm-catalog---
Expand Down
Loading

0 comments on commit c1e26dd

Please sign in to comment.