Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
.git/objects
./bin/*
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ FROM openshift/origin-base
ADD manifests/ /manifests
LABEL io.openshift.release.operator=true

# Copy CRD manifests so they can be created when alpha feature gates are enabled
COPY config/crd/bases /config/crd/bases

# Copy the binary to a standard location where it will run.
COPY --from=builder /build/bin/olm /bin/olm
COPY --from=builder /build/bin/catalog /bin/catalog
Expand Down
113 changes: 54 additions & 59 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,27 @@

SHELL := /bin/bash
PKG := github.com/operator-framework/operator-lifecycle-manager
OS := $(shell go env GOOS)
ARCH := $(shell go env GOARCH)
MOD_FLAGS := $(shell (go version | grep -q -E "1\.1[1-9]") && echo -mod=vendor)
CMDS := $(shell go list $(MOD_FLAGS) ./cmd/...)
TCMDS := $(shell go list $(MOD_FLAGS) ./test/e2e/...)
CODEGEN_INTERNAL := ./vendor/k8s.io/code-generator/generate_internal_groups.sh
MOCKGEN := ./scripts/generate_mocks.sh
# counterfeiter := $(GOBIN)/counterfeiter
# mockgen := $(GOBIN)/mockgen
MOCKGEN := ./scripts/update_mockgen.sh
CODEGEN := ./scripts/update_codegen.sh
GEN_PATHS := "./pkg/api/apis/operators/v2alpha1/..."
IMAGE_REPO := quay.io/operator-framework/olm
IMAGE_TAG ?= "dev"
SPECIFIC_UNIT_TEST := $(if $(TEST),-run $(TEST),)
LOCAL_NAMESPACE := "olm"
export GO111MODULE=on

# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
ifeq (,$(shell go env GOBIN))
GOBIN=$(shell go env GOPATH)/bin
else
GOBIN=$(shell go env GOBIN)
endif

# ART builds are performed in dist-git, with content (but not commits) copied
# from the source repo. Thus at build time if your code is inspecting the local
# git repo it is getting unrelated commits and tags from the dist-git repo,
Expand All @@ -27,14 +35,22 @@ export GO111MODULE=on
GIT_COMMIT := $(if $(SOURCE_GIT_COMMIT),$(SOURCE_GIT_COMMIT),$(shell git rev-parse HEAD))

.PHONY: build test run clean vendor schema-check \
vendor-update coverage coverage-html e2e .FORCE
vendor-update coverage coverage-html e2e manifests \
controller-gen kubebuilder .FORCE

all: test build

test: clean cover.out

unit:
go test $(MOD_FLAGS) $(SPECIFIC_UNIT_TEST) -v -race -tags=json1 -count=1 ./pkg/...
unit: kubebuilder
$(KUBEBUILDER_ENV) go test $(MOD_FLAGS) $(SPECIFIC_UNIT_TEST) -v -race -tags=json1 -count=1 ./pkg/...

# Install kubebuilder if not found
kubebuilder:
ifeq (, $(shell which kubebuilder))
@curl -sL https://go.kubebuilder.io/dl/2.0.1/$(OS)/$(ARCH) | tar -xz -C /tmp/
KUBEBUILDER_ENV := KUBEBUILDER_ASSETS=/tmp/kubebuilder_2.0.1_$(OS)_$(ARCH)/bin
endif

schema-check:

Expand Down Expand Up @@ -133,50 +149,40 @@ clean:
@rm -rf test/e2e/log
@rm -rf e2e.namespace

CI := $(shell find . -iname "*.jsonnet") $(shell find . -iname "*.libsonnet")
$(CI):
jsonnet fmt -i -n 4 $@

gen-ci: $(CI)
ffctl gen

# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
# use container-codegen
codegen: export GO111MODULE := off
codegen:
cp scripts/generate_internal_groups.sh vendor/k8s.io/code-generator/generate_internal_groups.sh
mkdir -p vendor/k8s.io/code-generator/hack
cp boilerplate.go.txt vendor/k8s.io/code-generator/hack/boilerplate.go.txt
go run vendor/k8s.io/kube-openapi/cmd/openapi-gen/openapi-gen.go --logtostderr -i ./vendor/k8s.io/apimachinery/pkg/runtime,./vendor/k8s.io/apimachinery/pkg/apis/meta/v1,./vendor/k8s.io/apimachinery/pkg/version,./pkg/package-server/apis/operators/v1,./pkg/package-server/apis/apps/v1alpha1,./pkg/api/apis/operators/v1alpha1,./pkg/lib/version -p $(PKG)/pkg/package-server/apis/openapi -O zz_generated.openapi -h boilerplate.go.txt -r /dev/null
$(CODEGEN_INTERNAL) deepcopy,conversion,client,lister,informer $(PKG)/pkg/api/client $(PKG)/pkg/api/apis $(PKG)/pkg/api/apis "operators:v1alpha1,v1"
$(CODEGEN_INTERNAL) all $(PKG)/pkg/package-server/client $(PKG)/pkg/package-server/apis $(PKG)/pkg/package-server/apis "operators:v1 apps:v1alpha1"

container-codegen:
docker build -t olm:codegen -f codegen.Dockerfile .
docker run --name temp-codegen olm:codegen /bin/true
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/. ./pkg/api/client
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/. ./pkg/api/apis
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/. ./pkg/package-server/apis
docker cp temp-codegen:/go/src/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/client/. ./pkg/package-server/client
docker rm temp-codegen

container-mockgen:
docker build -t olm:mockgen -f mockgen.Dockerfile . --no-cache
docker run --name temp-mockgen olm:mockgen /bin/true
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/. ./pkg/api/wrappers/wrappersfakes
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/. ./pkg/lib/operatorlister/operatorlisterfakes
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/lib/operatorclient/operatorclientmocks/. ./pkg/lib/operatorclient/operatorclientmocks
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/fakes/. ./pkg/fakes
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/controller/registry/resolver/fakes/. ./pkg/controller/registry/resolver/fakes
docker cp temp-mockgen:/operator-lifecycle-manager/pkg/package-server/client/fakes/. ./pkg/package-server/client/fakes
docker rm temp-mockgen

verify: verify-codegen verify-manifests

# Must be run in gopath: https://github.com/kubernetes/kubernetes/issues/67566
# Generate manifests for CRDs
# Use trivialVersions=true to generate CRDs w/o conversion webhooks for now
manifests: controller-gen
$(CONTROLLER_GEN) crd paths=$(GEN_PATHS) output:crd:artifacts:config="config/crd/bases"

codegen: codegen-v2 codegen-v1

codegen-v1: vendor
$(CODEGEN)

codegen-v2: controller-gen
$(CONTROLLER_GEN) object:headerFile=boilerplate.go.txt paths=$(GEN_PATHS)

# Find or download controller-gen.
controller-gen:
ifeq (, $(shell which controller-gen))
CONTROLLER_GEN=go run -mod=vendor ./vendor/sigs.k8s.io/controller-tools/cmd/controller-gen
else
CONTROLLER_GEN=$(shell which controller-gen)
endif

verify-codegen: codegen
git diff --exit-code

mockgen:
$(MOCKGEN)

verify-mockgen: mockgen
git diff --exit-code

verify: verify-codegen verify-mockgen verify-manifests

gen-all: codegen mockgen

# this is here for backwards compatibility with the ci job that calls verify-catalog
verify-catalog:

Expand All @@ -188,16 +194,8 @@ verify-release:
rm -rf manifests
mkdir manifests
./scripts/package_release.sh $(ver) manifests deploy/ocp/values.yaml
# requires gnu sed if on mac
find ./manifests -type f -exec sed -i "/^#/d" {} \;
find ./manifests -type f -exec sed -i "1{/---/d}" {} \;
git diff --exit-code

mockgen:
$(MOCKGEN)

gen-all: gen-ci container-codegen container-mockgen

# before running release, bump the version in OLM_VERSION and push to master,
# then tag those builds in quay with the version in OLM_VERSION
release: ver=$(shell cat OLM_VERSION)
Expand All @@ -208,9 +206,6 @@ release:
rm -rf manifests
mkdir manifests
cp -R deploy/ocp/manifests/$(ver)/. manifests
# requires gnu sed if on mac
find ./manifests -type f -exec sed -i "/^#/d" {} \;
find ./manifests -type f -exec sed -i "1{/---/d}" {} \;

package: olmref=$(shell docker inspect --format='{{index .RepoDigests 0}}' quay.io/operator-framework/olm:$(ver))
package:
Expand Down
26 changes: 13 additions & 13 deletions cmd/catalog/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package main

import (
"context"
"flag"
"fmt"
"net/http"
"os"
Expand All @@ -12,6 +11,7 @@ import (
configv1client "github.com/openshift/client-go/config/clientset/versioned/typed/config/v1"
"github.com/prometheus/client_golang/prometheus/promhttp"
log "github.com/sirupsen/logrus"
"github.com/spf13/pflag"
v1 "k8s.io/api/core/v1"
utilclock "k8s.io/apimachinery/pkg/util/clock"
"k8s.io/client-go/tools/clientcmd"
Expand All @@ -36,36 +36,36 @@ const (

// config flags defined globally so that they appear on the test binary as well
var (
kubeConfigPath = flag.String(
kubeConfigPath = pflag.String(
"kubeconfig", "", "absolute path to the kubeconfig file")

wakeupInterval = flag.Duration(
wakeupInterval = pflag.Duration(
"interval", defaultWakeupInterval, "wakeup interval")

watchedNamespaces = flag.String(
watchedNamespaces = pflag.String(
"watchedNamespaces", "", "comma separated list of namespaces that catalog watches, leave empty to watch all namespaces")

catalogNamespace = flag.String(
catalogNamespace = pflag.String(
"namespace", defaultCatalogNamespace, "namespace where catalog will run and install catalog resources")

configmapServerImage = flag.String(
configmapServerImage = pflag.String(
"configmapServerImage", defaultConfigMapServerImage, "the image to use for serving the operator registry api for a configmap")

writeStatusName = flag.String(
writeStatusName = pflag.String(
"writeStatusName", defaultOperatorName, "ClusterOperator name in which to write status, set to \"\" to disable.")

debug = flag.Bool(
debug = pflag.Bool(
"debug", false, "use debug log level")

version = flag.Bool("version", false, "displays olm version")
version = pflag.Bool("version", false, "displays olm version")

tlsKeyPath = flag.String(
tlsKeyPath = pflag.String(
"tls-key", "", "Path to use for private key (requires tls-cert)")

tlsCertPath = flag.String(
tlsCertPath = pflag.String(
"tls-cert", "", "Path to use for certificate key (requires tls-key)")

profiling = flag.Bool(
profiling = pflag.Bool(
"profiling", false, "serve profiling data (on port 8080)")
)

Expand All @@ -79,7 +79,7 @@ func main() {
defer cancel()

// Parse the command-line flags.
flag.Parse()
pflag.Parse()

// Check if version flag was set
if *version {
Expand Down
Loading