From 463aead1345b0bb75b8c8e8fc4a98e177d44e0ea Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Fri, 4 Oct 2019 11:42:15 +0300 Subject: [PATCH 1/6] AEROGEAR-9985 - Upgrade mss-operator to operator-sdk v0.10.0 --- .circleci/config.yml | 8 +- Gopkg.toml | 49 ++++-------- Makefile | 2 - cmd/manager/main.go | 114 ++++++++++++++++++++++++++- deploy/monitor/operator_service.yaml | 17 ---- deploy/monitor/prometheus_rule.yaml | 2 +- deploy/monitor/service_monitor.yaml | 14 ---- deploy/role.yaml | 21 +++++ 8 files changed, 151 insertions(+), 76 deletions(-) delete mode 100644 deploy/monitor/operator_service.yaml delete mode 100644 deploy/monitor/service_monitor.yaml diff --git a/.circleci/config.yml b/.circleci/config.yml index 073904ce..84dc492c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,7 +17,7 @@ jobs: command: curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - run: name: Install operator-sdk to run make setup - command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.8.1/operator-sdk-v0.8.1-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ + command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.10.0/operator-sdk-v0.10.0-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ - run: make setup - run: make code/build/linux - run: make test/run @@ -35,7 +35,7 @@ jobs: command: curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - run: name: Install operator-sdk to build image - command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.8.1/operator-sdk-v0.8.1-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ + command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.10.0/operator-sdk-v0.10.0-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ - run: make setup # circle ci key required for docker builds - setup_remote_docker @@ -54,7 +54,7 @@ jobs: command: curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - run: name: Install operator-sdk to build image - command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.8.1/operator-sdk-v0.8.1-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ + command: curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v0.10.0/operator-sdk-v0.10.0-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/ - run: make setup # circle ci key required for docker builds - setup_remote_docker @@ -83,4 +83,4 @@ workflows: tags: only: /\d{1,2}\.\d{1,2}\.\d{1,2}/ branches: - ignore: /.*/ \ No newline at end of file + ignore: /.*/ diff --git a/Gopkg.toml b/Gopkg.toml index 68de4ce9..acba8802 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -1,25 +1,8 @@ # Force dep to vendor the code generators, which aren't imported just used at dev time. required = [ - "k8s.io/code-generator/cmd/defaulter-gen", - "k8s.io/code-generator/cmd/deepcopy-gen", - "k8s.io/code-generator/cmd/conversion-gen", - "k8s.io/code-generator/cmd/client-gen", - "k8s.io/code-generator/cmd/lister-gen", - "k8s.io/code-generator/cmd/informer-gen", - "k8s.io/kube-openapi/cmd/openapi-gen", - "k8s.io/gengo/args", "sigs.k8s.io/controller-tools/pkg/crd/generator", ] -[[override]] - name = "k8s.io/code-generator" - # revision for tag "kubernetes-1.13.1" - revision = "c2090bec4d9b1fb25de3812f868accc2bc9ecbae" - -[[override]] - name = "k8s.io/kube-openapi" - revision = "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" - [[override]] name = "github.com/go-openapi/spec" branch = "master" @@ -30,49 +13,47 @@ required = [ [[override]] name = "k8s.io/api" - # revision for tag "kubernetes-1.13.1" - revision = "05914d821849570fba9eacfb29466f2d8d3cd229" + # revision for tag "kubernetes-1.13.4" + revision = "5cb15d34447165a97c76ed5a60e4e99c8a01ecfe" [[override]] name = "k8s.io/apiextensions-apiserver" - # revision for tag "kubernetes-1.13.1" - revision = "0fe22c71c47604641d9aa352c785b7912c200562" + # revision for tag "kubernetes-1.13.4" + revision = "d002e88f6236312f0289d9d1deab106751718ff0" [[override]] name = "k8s.io/apimachinery" - # revision for tag "kubernetes-1.13.1" - revision = "2b1284ed4c93a43499e781493253e2ac5959c4fd" + # revision for tag "kubernetes-1.13.4" + revision = "86fb29eff6288413d76bd8506874fddd9fccdff0" [[override]] name = "k8s.io/client-go" - # revision for tag "kubernetes-1.13.1" - revision = "8d9ed539ba3134352c586810e749e58df4e94e4f" + # revision for tag "kubernetes-1.13.4" + revision = "b40b2a5939e43f7ffe0028ad67586b7ce50bb675" [[override]] name = "github.com/coreos/prometheus-operator" version = "=v0.26.0" +[[override]] + name = "k8s.io/kube-state-metrics" + version = "v1.6.0" + [[override]] name = "sigs.k8s.io/controller-runtime" - version = "=v0.1.10" + version = "=v0.1.12" [[constraint]] name = "github.com/operator-framework/operator-sdk" # The version rule is used for a specific release and the master branch for in between releases. # branch = "master" #osdk_branch_annotation - version = "=v0.8.1" #osdk_version_annotation + version = "=v0.10.0" #osdk_version_annotation [prune] go-tests = true non-go = true - [[prune.project]] - name = "k8s.io/code-generator" - non-go = false - - [[prune.project]] - name = "k8s.io/gengo" - non-go = false + unused-packages = true [[constraint]] branch = "master" diff --git a/Makefile b/Makefile index 5c3e1c81..c6488487 100644 --- a/Makefile +++ b/Makefile @@ -94,7 +94,6 @@ monitoring/install: @echo Installing service monitor in ${NAMESPACE} : - oc project ${NAMESPACE} - kubectl label namespace ${NAMESPACE} monitoring-key=middleware - - kubectl create -f deploy/monitor/service_monitor.yaml - kubectl create -f deploy/monitor/mss_service_monitor.yaml - kubectl create -f deploy/monitor/prometheus_rule.yaml - kubectl create -f deploy/monitor/mss_prometheus_rule.yaml @@ -105,7 +104,6 @@ monitoring/install: monitoring/uninstall: @echo Uninstalling monitor service from ${NAMESPACE} : - oc project ${NAMESPACE} - - kubectl delete -f deploy/monitor/service_monitor.yaml - kubectl delete -f deploy/monitor/mss_service_monitor.yaml - kubectl delete -f deploy/monitor/prometheus_rule.yaml - kubectl delete -f deploy/monitor/mss_prometheus_rule.yaml diff --git a/cmd/manager/main.go b/cmd/manager/main.go index b5dd843f..ba546272 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -4,15 +4,24 @@ import ( "context" "flag" "fmt" + "github.com/operator-framework/operator-sdk/pkg/k8sutil" + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/client-go/rest" "os" "runtime" + "sigs.k8s.io/controller-runtime/pkg/client" "github.com/aerogear/mobile-security-service-operator/pkg/apis" "github.com/aerogear/mobile-security-service-operator/pkg/controller" + monitoringv1 "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1" + monclientv1 "github.com/coreos/prometheus-operator/pkg/client/versioned/typed/monitoring/v1" routev1 "github.com/openshift/api/route/v1" + kubemetrics "github.com/operator-framework/operator-sdk/pkg/kube-metrics" "github.com/operator-framework/operator-sdk/pkg/leader" "github.com/operator-framework/operator-sdk/pkg/log/zap" "github.com/operator-framework/operator-sdk/pkg/metrics" + "github.com/operator-framework/operator-sdk/pkg/restmapper" sdkVersion "github.com/operator-framework/operator-sdk/version" "github.com/spf13/pflag" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" @@ -24,8 +33,9 @@ import ( // Change below variables to serve metrics on different host or port. var ( - metricsHost = "0.0.0.0" - metricsPort int32 = 8383 + metricsHost = "0.0.0.0" + metricsPort int32 = 8383 + operatorMetricsPort int32 = 8686 ) var log = logf.Log.WithName("cmd") @@ -81,6 +91,7 @@ func main() { // NOTE: See the PR which we are working on to update the deps and have this feature: https://github.com/operator-framework/operator-sdk/pull/1388 mgr, err := manager.New(cfg, manager.Options{ Namespace: "", + MapperProvider: restmapper.NewDynamicRESTMapper, MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort), }) if err != nil { @@ -91,10 +102,41 @@ func main() { //Add schemes to the manager addSchemeToManager(mgr) - // Create Service object to expose the metrics port. - _, err = metrics.ExposeMetricsPort(ctx, metricsPort) + operatorNamespace, err := k8sutil.GetOperatorNamespace() if err != nil { log.Info(err.Error()) + log.Error(err, "") + } + + if err = serveCRMetrics(cfg); err != nil { + log.Info("Could not generate and serve custom resource metrics", "error", err.Error()) + } + + // Add to the below struct any other metrics ports you want to expose. + servicePorts := []v1.ServicePort{ + {Port: metricsPort, Name: metrics.OperatorPortName, Protocol: v1.ProtocolTCP, TargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: metricsPort}}, + {Port: operatorMetricsPort, Name: metrics.CRPortName, Protocol: v1.ProtocolTCP, TargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: operatorMetricsPort}}, + } + + // Create Service object to expose the metrics port(s). + service, err := metrics.CreateMetricsService(ctx, cfg, servicePorts) + if err != nil { + log.Info("Could not create metrics Service", "error", err.Error()) + } + + err = addMonitoringKeyLabelToService(cfg, operatorNamespace, service) + if err != nil { + log.Error(err, "Could not add monitoring-key label to operator metrics Service") + } + + err = createServiceMonitor(cfg, operatorNamespace, service) + if err != nil { + log.Info("Could not create ServiceMonitor object", "error", err.Error()) + // If this operator is deployed to a cluster without the prometheus-operator running, it will return + // ErrServiceMonitorNotPresent, which can be used to safely skip ServiceMonitor creation. + if err == metrics.ErrServiceMonitorNotPresent { + log.Info("Install prometheus-operator in you cluster to create ServiceMonitor objects", "error", err.Error()) + } } log.Info("Starting the Cmd.") @@ -125,3 +167,67 @@ func addSchemeToManager(mgr manager.Manager) { os.Exit(1) } } + +func addMonitoringKeyLabelToService(cfg *rest.Config, ns string, service *v1.Service) error { + kclient, err := client.New(cfg, client.Options{}) + if err != nil { + return err + } + + updatedLabels := map[string]string{"monitoring-key": "middleware"} + for k, v := range service.ObjectMeta.Labels { + updatedLabels[k] = v + } + service.ObjectMeta.Labels = updatedLabels + + err = kclient.Update(context.TODO(), service) + if err != nil { + return err + } + + return nil +} + +// createServiceMonitor is a temporary fix until the version in the +// operator-sdk is fixed to have the correct Path set on the Endpoints +func createServiceMonitor(config *rest.Config, ns string, service *v1.Service) error { + mclient := monclientv1.NewForConfigOrDie(config) + + sm := metrics.GenerateServiceMonitor(service) + eps := []monitoringv1.Endpoint{} + for _, ep := range sm.Spec.Endpoints { + eps = append(eps, monitoringv1.Endpoint{Port: ep.Port, Path: "/metrics"}) + } + sm.Spec.Endpoints = eps + + _, err := mclient.ServiceMonitors(ns).Create(sm) + if err != nil { + return err + } + + return nil +} + +// serveCRMetrics gets the Operator/CustomResource GVKs and generates metrics based on those types. +// It serves those metrics on "http://metricsHost:operatorMetricsPort". +func serveCRMetrics(cfg *rest.Config) error { + // Below function returns filtered operator/CustomResource specific GVKs. + // For more control override the below GVK list with your own custom logic. + filteredGVK, err := k8sutil.GetGVKsFromAddToScheme(apis.AddToScheme) + if err != nil { + return err + } + // Get the namespace the operator is currently deployed in. + operatorNs, err := k8sutil.GetOperatorNamespace() + if err != nil { + return err + } + // To generate metrics in other namespaces, add the values below. + ns := []string{operatorNs} + // Generate and serve custom resource specific metrics. + err = kubemetrics.GenerateAndServeCRMetrics(cfg, ns, filteredGVK, metricsHost, operatorMetricsPort) + if err != nil { + return err + } + return nil +} diff --git a/deploy/monitor/operator_service.yaml b/deploy/monitor/operator_service.yaml deleted file mode 100644 index 01497988..00000000 --- a/deploy/monitor/operator_service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Monitor Service (Metrics) -apiVersion: v1 -kind: Service -metadata: - labels: - name: mobile-security-service-operator - name: mobile-security-service-operator -spec: - ports: - - name: metrics - port: 8383 - protocol: TCP - targetPort: 8383 - selector: - name: mobile-security-service-operator - sessionAffinity: None - type: ClusterIP \ No newline at end of file diff --git a/deploy/monitor/prometheus_rule.yaml b/deploy/monitor/prometheus_rule.yaml index a08c07c0..eea636a5 100644 --- a/deploy/monitor/prometheus_rule.yaml +++ b/deploy/monitor/prometheus_rule.yaml @@ -15,7 +15,7 @@ spec: - name: general.rules rules: - alert: MobileSecurityServiceOperatorDown - expr: absent(up{job="mobile-security-service-operator"} == 1) + expr: absent(up{job="mobile-security-service-operator-metrics", endpoint="http-metrics"} == 1) for: 5m labels: severity: critical diff --git a/deploy/monitor/service_monitor.yaml b/deploy/monitor/service_monitor.yaml deleted file mode 100644 index e85f5c6f..00000000 --- a/deploy/monitor/service_monitor.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# Monitor Service (Metrics) -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: - monitoring-key: middleware - name: mobile-security-service-operator -spec: - endpoints: - - path: /metrics - port: metrics - selector: - matchLabels: - name: mobile-security-service-operator \ No newline at end of file diff --git a/deploy/role.yaml b/deploy/role.yaml index f14ee990..bb126980 100644 --- a/deploy/role.yaml +++ b/deploy/role.yaml @@ -107,3 +107,24 @@ rules: - namespaces verbs: - get + +# monitoring related perrmissions +- apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - get + - create +- apiGroups: + - "" + resources: + - services/finalizers + verbs: + - get + - list + - watch + - create + - update + - patch + - delete From 4671abde92cd04967171d9f49f79326fbef7b93d Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Fri, 4 Oct 2019 13:36:18 +0300 Subject: [PATCH 2/6] feat(operator sdk upgrade): Upgrade operator-sdk v0.10.0 AEROGEAR-9985 --- Gopkg.lock | 368 +++++++++++++++++++++++------------------------------ 1 file changed, 158 insertions(+), 210 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 62055488..b23283d6 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,15 +2,15 @@ [[projects]] - digest = "1:2173c429b0c4654deb4f3e8d1f503c374f93a6b5549d74f9cba797c1e787f8e4" + digest = "1:4d6f036ea3fe636bcb2e89850bcdc62a771354e157cd51b8b22a2de8562bf663" name = "cloud.google.com/go" packages = ["compute/metadata"] - pruneopts = "NT" + pruneopts = "NUT" revision = "c9474f2f8deb81759839474b6bd1726bbfe1c1c4" version = "v0.36.0" [[projects]] - digest = "1:7adf747afc4e08f91b8a3314cdcb43b25fb37ee1764d6b584b85bb51f14e48fd" + digest = "1:5f69a88cd509f0e9c3a277379039997c0a0df623bf453582b51899e8c1c1cee5" name = "github.com/Azure/go-autorest" packages = [ "autorest", @@ -20,15 +20,15 @@ "logger", "tracing", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "69b4126ece6b5257e2f9b0017007d2334153655f" version = "v13.0.1" [[projects]] - digest = "1:75d2b55b13298745ec068057251d05d65bbae0a668201fe45ad6986551a55601" + digest = "1:5d72bbcc9c8667b11c3dc3cbe681c5a6f71e5096744c0bf7726ab5c6425d5dc4" name = "github.com/BurntSushi/toml" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005" version = "v0.3.1" @@ -36,7 +36,7 @@ digest = "1:0a111edd8693fd977f42a0c4f199a0efb13c20aec9da99ad8830c7bb6a87e8d6" name = "github.com/PuerkitoBio/purell" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "44968752391892e1b0d0b821ee79e9a85fa13049" version = "v1.1.1" @@ -45,35 +45,35 @@ digest = "1:8098cd40cd09879efbf12e33bcd51ead4a66006ac802cd563a66c4f3373b9727" name = "github.com/PuerkitoBio/urlesc" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "de5bf2ad457846296e2031421a34e2568e304e35" [[projects]] branch = "master" - digest = "1:18d64b96d42084bbab1dec49296e6092ff2b1a64e3f97fc111b031645c066da0" + digest = "1:12412302b32f5d6738365932ece673366557b5d86ab5586290a91a076194ec09" name = "github.com/aerogear/mobile-security-service" packages = ["pkg/models"] - pruneopts = "NT" + pruneopts = "NUT" revision = "a3c3c7839266fa7ae48954982be0a018d2334423" [[projects]] digest = "1:680b63a131506e668818d630d3ca36123ff290afa0afc9f4be21940adca3f27d" name = "github.com/appscode/jsonpatch" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "7c0e3b262f30165a8ec3d0b4c6059fd92703bfb2" version = "1.0.0" [[projects]] branch = "master" - digest = "1:c819830f4f5ef85874a90ac3cbcc96cd322c715f5c96fbe4722eacd3dafbaa07" + digest = "1:707ebe952a8b3d00b343c01536c79c73771d100f63ec6babeaed5c79e2b8a8dd" name = "github.com/beorn7/perks" packages = ["quantile"] - pruneopts = "NT" + pruneopts = "NUT" revision = "3a771d992973f24aa725d07868b467d1ddfceafb" [[projects]] - digest = "1:c61f4f97321a37adcb5b4fd4fd61209cd553e46c99ee606c465553541b12a229" + digest = "1:e8edae4db8ee767863e94b68290007be469f051f4674dc49164632a810a0aac3" name = "github.com/coreos/prometheus-operator" packages = [ "pkg/apis/monitoring", @@ -81,42 +81,42 @@ "pkg/client/versioned/scheme", "pkg/client/versioned/typed/monitoring/v1", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "72ec4b9b16ef11700724dc71fec77112536eed40" version = "v0.26.0" [[projects]] - digest = "1:4b8b5811da6970495e04d1f4e98bb89518cc3cfc3b3f456bdb876ed7b6c74049" + digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" name = "github.com/davecgh/go-spew" packages = ["spew"] - pruneopts = "NT" + pruneopts = "NUT" revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" version = "v1.1.1" [[projects]] - digest = "1:3a5601f7ac7fc10fc2a98039b18d83a767f3830141a08c19ae45c45244f43e57" + digest = "1:7a6852b35eb5bbc184561443762d225116ae630c26a7c4d90546619f1e7d2ad2" name = "github.com/dgrijalva/jwt-go" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" version = "v3.2.0" [[projects]] - digest = "1:2453249730493850718f891fb40b8f1bc932a0265384fc85b269dc04a01d4673" + digest = "1:aab9e95808c688b75757e520e59c48eb954991693dfc5441f0e87d1f9cb8b7bb" name = "github.com/emicklei/go-restful" packages = [ ".", "log", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "85d198d05a92d31823b852b4a5928114912e8949" version = "v2.9.0" [[projects]] - digest = "1:4322fcb2f4d508898c3d9b0390a2e58211b53e6d9c25230b225df9a032fe26d6" + digest = "1:db115eee0ae265dab922fecbb7966c3fcdc4eae3c2e9caae302fdcba3ba422c7" name = "github.com/evanphx/json-patch" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "5858425f75500d40c52783dce87d085a483ce135" version = "v4.2.0" @@ -124,15 +124,15 @@ digest = "1:81466b4218bf6adddac2572a30ac733a9255919bc2f470b4827a317bd4ee1756" name = "github.com/ghodss/yaml" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7" version = "v1.0.0" [[projects]] - digest = "1:d421af4c4fe51d399667d573982d663fe1fa67020a88d3ae43466ebfe8e2b5c9" + digest = "1:53becd66889185091b58ea3fc49294996f2179fb05a89702f4de7d15e581b509" name = "github.com/go-logr/logr" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "9fb12b3b21c5415d16ac18dc5cd42c1cfdd40c4e" version = "v0.1.0" @@ -140,7 +140,7 @@ digest = "1:340497a512995aa69c0add901d79a2096b3449d35a44a6f1f1115091a9f8c687" name = "github.com/go-logr/zapr" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "03f06a783fbb7dfaf3f629c7825480e43a7105e6" version = "v0.1.1" @@ -148,7 +148,7 @@ digest = "1:260f7ebefc63024c8dfe2c9f1a2935a89fa4213637a1f522f592f80c001cc441" name = "github.com/go-openapi/jsonpointer" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "ef5f0afec364d3b9396b7b77b43dbe26bf1f8004" version = "v0.18.0" @@ -156,7 +156,7 @@ digest = "1:98abd61947ff5c7c6fcfec5473d02a4821ed3a2dd99a4fbfdb7925b0dd745546" name = "github.com/go-openapi/jsonreference" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "8483a886a90412cd6858df4ea3483dce9c8e35a3" version = "v0.18.0" @@ -165,14 +165,14 @@ digest = "1:8f80caf2fa31f78a035f33981c9685013033073b53f344f579e60fa69f0c6670" name = "github.com/go-openapi/spec" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "53d776530bf78a11b03a7b52dd8a083086b045e5" [[projects]] digest = "1:dc0f590770e5a6c70ea086232324f7b7dc4857c60eca63ab8ff78e0a5cfcdbf3" name = "github.com/go-openapi/swag" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "1d29f06aebd59ccdf11ae04aa0334ded96e2d909" version = "v0.18.0" @@ -180,39 +180,31 @@ digest = "1:9059915429f7f3a5f18cfa6b7cab9a28721d7ac6db4079a62044aa229eb7f2a8" name = "github.com/gobuffalo/envy" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "fa0dfdc10b5366ce365b7d9d1755a03e4e797bc5" version = "v1.6.15" [[projects]] - digest = "1:0b39706cfa32c1ba9e14435b5844d04aef81b60f44b6077e61e0607d56692603" + digest = "1:a1b2a5e38f79688ee8250942d5fa960525fceb1024c855c7bc76fa77b0f3cca2" name = "github.com/gogo/protobuf" packages = [ "proto", "sortkeys", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "ba06b47c162d49f2af050fb4c75bcbc86a159d5c" version = "v1.2.1" [[projects]] branch = "master" - digest = "1:e2b86e41f3d669fc36b50d31d32d22c8ac656c75aa5ea89717ce7177e134ff2a" - name = "github.com/golang/glog" - packages = ["."] - pruneopts = "NT" - revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998" - -[[projects]] - branch = "master" - digest = "1:20b774dcfdf0fff3148432beb828c52404f3eb3d70b7ce71ae0356ed6cbc2bae" + digest = "1:b7cb6054d3dff43b38ad2e92492f220f57ae6087ee797dca298139776749ace8" name = "github.com/golang/groupcache" packages = ["lru"] - pruneopts = "NT" + pruneopts = "NUT" revision = "5b532d6fd5efaf7fa130d4e859a2fde0fc3a9e1b" [[projects]] - digest = "1:2bac1ab777481a7ef169837f0eeac25a1a6628ac93aef853168681dfec4a653c" + digest = "1:2d0636a8c490d2272dd725db26f74a537111b99b9dbdda0d8b98febe63702aa4" name = "github.com/golang/protobuf" packages = [ "proto", @@ -221,7 +213,7 @@ "ptypes/duration", "ptypes/timestamp", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "c823c79ea1570fb5ff454033735a8e68575d1d0f" version = "v1.3.0" @@ -230,7 +222,7 @@ digest = "1:05f95ffdfcf651bdb0f05b40b69e7f5663047f8da75c72d58728acb59b5cc107" name = "github.com/google/btree" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306" [[projects]] @@ -238,31 +230,31 @@ digest = "1:52c5834e2bebac9030c97cc0798ac11c3aa8a39f098aeb419f142533da6cd3cc" name = "github.com/google/gofuzz" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" [[projects]] digest = "1:ab3ec1fe3e39bac4b3ab63390767766622be35b7cab03f47f787f9ec60522a53" name = "github.com/google/uuid" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4" version = "v1.1.1" [[projects]] - digest = "1:289332c13b80edfefc88397cce5266c16845dcf204fa2f6ac7e464ee4c7f6e96" + digest = "1:06a7dadb7b760767341ffb6c8d377238d68a1226f2b21b5d497d2e3f6ecf6b4e" name = "github.com/googleapis/gnostic" packages = [ "OpenAPIv2", "compiler", "extensions", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "7c663266750e7d82587642f65e60bc4083f1f84e" version = "v0.2.0" [[projects]] - digest = "1:ef4ece953b3f7d098796d0b933f108455a98de6e96428b296c72c473b64fc4b1" + digest = "1:80230022ab481c6688b237550bc45017d9d2abfc19e4916e2ce344d24f613a6d" name = "github.com/gophercloud/gophercloud" packages = [ ".", @@ -273,19 +265,19 @@ "openstack/utils", "pagination", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "a84f8b330d669c6dff53ee9743a7579ac9541b69" version = "v0.4.0" [[projects]] branch = "master" - digest = "1:bb7bd892abcb75ef819ce2efab9d54d22b7e38dc05ffac55428bb0578b52912b" + digest = "1:a86d65bc23eea505cd9139178e4d889733928fe165c7a008f41eaab039edf9df" name = "github.com/gregjones/httpcache" packages = [ ".", "diskcache", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "3befbb6ad0cc97d4c25d851e9528915809e1a22f" [[projects]] @@ -295,7 +287,7 @@ ".", "simplelru", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" version = "v0.5.1" @@ -303,7 +295,7 @@ digest = "1:aaa38889f11896ee3644d77e17dc7764cc47f5f3d3b488268df2af2b52541c5f" name = "github.com/imdario/mergo" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "7c29201646fa3de8506f701213473dd407f19646" version = "v0.3.7" @@ -311,23 +303,23 @@ digest = "1:406338ad39ab2e37b7f4452906442a3dbf0eb3379dd1f06aafb5c07e769a5fbb" name = "github.com/inconshreveable/mousetrap" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" version = "v1.0" [[projects]] - digest = "1:f5b9328966ccea0970b1d15075698eff0ddb3e75889560aad2e9f76b289b536a" + digest = "1:da62aa6632d04e080b8a8b85a59ed9ed1550842a0099a55f3ae3a20d02a3745a" name = "github.com/joho/godotenv" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "23d116af351c84513e1946b527c88823e476be13" version = "v1.3.0" [[projects]] - digest = "1:1d39c063244ad17c4b18e8da1551163b6ffb52bd1640a49a8ec5c3b7bf4dbd5d" + digest = "1:8e36686e8b139f8fe240c1d5cf3a145bc675c22ff8e707857cdd3ae17b00d728" name = "github.com/json-iterator/go" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "1624edc4454b8682399def8740d46db5e4362ba4" version = "v1.1.5" @@ -335,35 +327,35 @@ digest = "1:58999a98719fddbac6303cb17e8d85b945f60b72f48e3a2df6b950b97fa926f1" name = "github.com/konsorten/go-windows-terminal-sequences" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e" version = "v1.0.2" [[projects]] branch = "master" - digest = "1:4925ec3736ef6c299cfcf61597782e3d66ec13114f7476019d04c742a7be55d0" + digest = "1:84a5a2b67486d5d67060ac393aa255d05d24ed5ee41daecd5635ec22657b6492" name = "github.com/mailru/easyjson" packages = [ "buffer", "jlexer", "jwriter", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "6243d8e04c3f819e79757e8bc3faa15c3cb27003" [[projects]] digest = "1:56dbf15e091bf7926cb33a57cb6bdfc658fc6d3498d2f76f10a97ce7856f1fde" name = "github.com/markbates/inflect" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "24b83195037b3bc61fcda2d28b7b0518bce293b6" version = "v1.0.4" [[projects]] - digest = "1:ea1db000388d88b31db7531c83016bef0d6db0d908a07794bfc36aca16fbf935" + digest = "1:5985ef4caf91ece5d54817c11ea25f182697534f8ae6521eadcd628c142ac4b6" name = "github.com/matttproud/golang_protobuf_extensions" packages = ["pbutil"] - pruneopts = "NT" + pruneopts = "NUT" revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" version = "v1.0.1" @@ -371,7 +363,7 @@ digest = "1:f9f72e583aaacf1d1ac5d6121abd4afd3c690baa9e14e1d009df26bf831ba347" name = "github.com/mitchellh/go-homedir" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "af06845cf3004701891bf4fdb884bfe4920b3727" version = "v1.1.0" @@ -379,7 +371,7 @@ digest = "1:2f42fa12d6911c7b7659738758631bec870b7e9b4c6be5444f963cdcfccc191f" name = "github.com/modern-go/concurrent" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" version = "1.0.3" @@ -387,34 +379,20 @@ digest = "1:c6aca19413b13dc59c220ad7430329e2ec454cc310bc6d8de2c7e2b93c18a0f6" name = "github.com/modern-go/reflect2" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" version = "1.0.1" [[projects]] branch = "master" - digest = "1:f0d91aa2c20f5806c77aa0850576a285b4df25effc8b646c41be02ee316636f6" + digest = "1:fc3695d093173636cb1524df4494b507e45009592480b6a8c6a25afca71d0cc5" name = "github.com/openshift/api" - packages = [ - "apps/v1", - "route/v1", - ] - pruneopts = "NT" + packages = ["route/v1"] + pruneopts = "NUT" revision = "77b8897ec79a562e85920134fc65b63300c4d27a" [[projects]] - digest = "1:3e8b0f8d2ed4b10f83a0719c1e8853bdb4bbce2ca365aba2843dc9487e4ab35c" - name = "github.com/openshift/client-go" - packages = [ - "apps/clientset/versioned/scheme", - "apps/clientset/versioned/typed/apps/v1", - ] - pruneopts = "NT" - revision = "1fa528d3be060e4c7178eb69e76d37cf7e699e3c" - version = "v3.9.0" - -[[projects]] - digest = "1:fe3c97fb1956829a81d7b8221b4710c40d6dae2c6c3b4d222db5b7f96c975d99" + digest = "1:d44846c5cd1892bb48f78d1dbff0921e9f25014d61700ccf8d8ab3422928a54e" name = "github.com/operator-framework/operator-sdk" packages = [ "internal/pkg/scaffold", @@ -425,38 +403,40 @@ "internal/util/projutil", "internal/util/yamlutil", "pkg/k8sutil", + "pkg/kube-metrics", "pkg/leader", "pkg/log/zap", "pkg/metrics", + "pkg/restmapper", "pkg/test", "pkg/test/e2eutil", "version", ] - pruneopts = "NT" - revision = "33b3bfe10176f8647f5354516fff29dea42b6342" - version = "v0.8.1" + pruneopts = "NUT" + revision = "ff80b17737a6a0aade663e4827e8af3ab5a21170" + version = "v0.10.0" [[projects]] digest = "1:93b1d84c5fa6d1ea52f4114c37714cddd84d5b78f151b62bb101128dd51399bf" name = "github.com/pborman/uuid" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "adf5a7427709b9deb95d29d3fa8a2bf9cfd388f1" version = "v1.2" [[projects]] branch = "master" - digest = "1:bf2ac97824a7221eb16b096aecc1c390d4c8a4e49524386aaa2e2dd215cbfb31" + digest = "1:3bf17a6e6eaa6ad24152148a631d18662f7212e21637c2699bff3369b7f00fa2" name = "github.com/petar/GoLLRB" packages = ["llrb"] - pruneopts = "NT" + pruneopts = "NUT" revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4" [[projects]] - digest = "1:e4e9e026b8e4c5630205cd0208efb491b40ad40552e57f7a646bb8a46896077b" + digest = "1:6c6d91dc326ed6778783cff869c49fb2f61303cdd2ebbcf90abe53505793f3b6" name = "github.com/peterbourgon/diskv" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "5f041e8faa004a95c88a202771f4cc3e991971e6" version = "v2.0.1" @@ -464,45 +444,45 @@ digest = "1:14715f705ff5dfe0ffd6571d7d201dd8e921030f8070321a79380d8ca4ec1a24" name = "github.com/pkg/errors" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" version = "v0.8.1" [[projects]] - digest = "1:ec2a29e3bd141038ae5c3d3a4f57db0c341fcc1d98055a607aedd683aed124ee" + digest = "1:7c7cfeecd2b7147bcfec48a4bf622b4879e26aec145a9e373ce51d0c23b16f6b" name = "github.com/prometheus/client_golang" packages = [ "prometheus", "prometheus/internal", "prometheus/promhttp", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "505eaef017263e299324067d40ca2c48f6a2cf50" version = "v0.9.2" [[projects]] branch = "master" - digest = "1:c2cc5049e927e2749c0d5163c9f8d924880d83e84befa732b9aad0b6be227bed" + digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4" name = "github.com/prometheus/client_model" packages = ["go"] - pruneopts = "NT" + pruneopts = "NUT" revision = "fd36f4220a901265f90734c3183c5f0c91daa0b8" [[projects]] - digest = "1:30261b5e263b5c4fb40571b53a41a99c96016c6b1b2c45c1cefd226fc3f6304b" + digest = "1:4e776079b966091d3e6e12ed2aaf728bea5cd1175ef88bb654e03adbf5d4f5d3" name = "github.com/prometheus/common" packages = [ "expfmt", "internal/bitbucket.org/ww/goautoneg", "model", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "cfeb6f9992ffa54aaa4f2170ade4067ee478b250" version = "v0.2.0" [[projects]] branch = "master" - digest = "1:1c282f5c094061ce301d1ea3098799fc907ac1399e9f064c463787323a7b7340" + digest = "1:0a2e604afa3cbf53a1ddade2f240ee8472eded98856dd8c7cfbfea392ddbbfc7" name = "github.com/prometheus/procfs" packages = [ ".", @@ -511,45 +491,45 @@ "nfs", "xfs", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "d0f344d83b0c80a1bc03b547a2374a9ec6711144" [[projects]] - digest = "1:fcef1ce61da6f8f6f115154fb0e0e5b159fe11656839ba1e6061372711c013ee" + digest = "1:e09ada96a5a41deda4748b1659cc8953961799e798aea557257b56baee4ecaf3" name = "github.com/rogpeppe/go-internal" packages = [ "modfile", "module", "semver", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "1cf9852c553c5b7da2d5a4a091129a7822fed0c9" version = "v1.2.2" [[projects]] - digest = "1:efe8ddffa78bddbd1d826faf622cca77dbf7ddc72df04077d69a688cac657148" + digest = "1:f4aaa07a6c33f2b354726d0571acbc8ca118837c75709f6353203ae1a3f8eeab" name = "github.com/sirupsen/logrus" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "839c75faf7f98a33d445d181f3018b5c3409a45e" version = "v1.4.2" [[projects]] - digest = "1:1bc08ec221c4fb25e6f2c019b23fe989fb44573c696983d8e403a3b76cc378e1" + digest = "1:90cf76d709ce9b057e7d75bd245bf7c1242d21ba4f908fb22c7a2a96d1dcc0ca" name = "github.com/spf13/afero" packages = [ ".", "mem", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "f4711e4db9e9a1d3887343acb72b2bbfc2f686f5" version = "v1.2.1" [[projects]] - digest = "1:37a91e5093cb260946900c75198c293f3439187e43f48e1a3ae10b4aa55bd7ad" + digest = "1:d3533ee568fc00a971617ec09dc0f0b3eddfb4adbc1275f8f6332553d67506b4" name = "github.com/spf13/cobra" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "f2b07da1e2c38d5f12845a4f607e2e1018cbb1f5" version = "v0.0.5" @@ -557,7 +537,7 @@ digest = "1:9d8420bbf131d1618bde6530af37c3799340d3762cc47210c1d9532a4c3a2779" name = "github.com/spf13/pflag" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "298182f68c66c05229eb03ac171abe6e309ee79a" version = "v1.0.3" @@ -565,7 +545,7 @@ digest = "1:22f696cee54865fb8e9ff91df7b633f6b8f22037a8015253c6b6a71ca82219c7" name = "go.uber.org/atomic" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "1ea20fb1cbb1cc08cbd0d913a96dead89aa18289" version = "v1.3.2" @@ -573,12 +553,12 @@ digest = "1:58ca93bdf81bac106ded02226b5395a0595d5346cdc4caa8d9c1f3a5f8f9976e" name = "go.uber.org/multierr" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "3c4937480c32f4c13a875a1829af76c98ca3d40a" version = "v1.1.0" [[projects]] - digest = "1:572fa4496563920f3e3107a2294cf2621d6cc4ffd03403fb6397b1bab9fa082a" + digest = "1:85674ac609b704fd4e9f463553b6ffc3a3527a993ae0ba550eb56beaabdfe094" name = "go.uber.org/zap" packages = [ ".", @@ -588,21 +568,21 @@ "internal/exit", "zapcore", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "ff33455a0e382e8a81d14dd7c922020b6b5e7982" version = "v1.9.1" [[projects]] branch = "master" - digest = "1:a4d7148f288d0c8ccedd6387326ee3f6083c69911ef75e0cb8f17af92d5b0fff" + digest = "1:058e9504b9a79bfe86092974d05bb3298d2aa0c312d266d43148de289a5065d9" name = "golang.org/x/crypto" packages = ["ssh/terminal"] - pruneopts = "NT" + pruneopts = "NUT" revision = "c2843e01d9a2bc60bb26ad24e09734fdc2d9ec58" [[projects]] branch = "master" - digest = "1:e4b8752f1341b29443bcc664ab1653602b02c87562ad156f26f66c04cef7946c" + digest = "1:e3477b53a5c2fb71a7c9688e9b3d58be702807a5a88def8b9a327259d46e4979" name = "golang.org/x/net" packages = [ "context", @@ -612,12 +592,12 @@ "http2/hpack", "idna", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "56fb01167e7d1e1d17dd87993d34c963f4356e87" [[projects]] branch = "master" - digest = "1:3418b2325cb0e56bb54774c4e484a2d8829b1fe4bad1c5f077cfd08d138a9a9f" + digest = "1:17ee74a4d9b6078611784b873cdbfe91892d2c73052c430724e66fcc015b6c7b" name = "golang.org/x/oauth2" packages = [ ".", @@ -626,22 +606,22 @@ "jws", "jwt", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "e64efc72b421e893cbf63f17ba2221e7d6d0b0f3" [[projects]] branch = "master" - digest = "1:f79c4f7d249f294c24a46e88128795113cf28fceaf3c4d4bcf06cfb058ddf816" + digest = "1:cbd2ea6a2826d49d015dbd20a12e388c7afb7c0b2a8cee23aa1d35b6d1028d02" name = "golang.org/x/sys" packages = [ "unix", "windows", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "10058d7d4faa7dd5ef860cbd31af00903076e7b8" [[projects]] - digest = "1:8c74f97396ed63cc2ef04ebb5fc37bb032871b8fd890a25991ed40974b00cd2a" + digest = "1:e33513a825fcd765e97b5de639a2f7547542d1a8245df0cef18e1fd390b778a9" name = "golang.org/x/text" packages = [ "collate", @@ -660,7 +640,7 @@ "unicode/rangetable", "width", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" version = "v0.3.0" @@ -669,12 +649,12 @@ digest = "1:9fdc2b55e8e0fafe4b41884091e51e77344f7dc511c5acedcfd98200003bff90" name = "golang.org/x/time" packages = ["rate"] - pruneopts = "NT" + pruneopts = "NUT" revision = "9d24e82272b4f38b78bc8cff74fa936d31ccd8ef" [[projects]] branch = "master" - digest = "1:74790bf1df47538c3ff7b2e0f099def37634a9a3ab40b4bdd8532867f865050e" + digest = "1:e46d8e20161401a9cf8765dfa428494a3492a0b56fe114156b7da792bf41ba78" name = "golang.org/x/tools" packages = [ "go/ast/astutil", @@ -690,11 +670,11 @@ "internal/module", "internal/semver", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "00c44ba9c14f88ffdd4fb5bfae57fe8dd6d6afb1" [[projects]] - digest = "1:902ffa11f1d8c19c12b05cabffe69e1a16608ad03a8899ebcb9c6bde295660ae" + digest = "1:d395d49d784dd3a11938a3e85091b6570664aa90ff2767a626565c6c130fa7e9" name = "google.golang.org/appengine" packages = [ ".", @@ -708,7 +688,7 @@ "internal/urlfetch", "urlfetch", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "e9657d882bb81064595ca3b56cbe2546bbabf7b1" version = "v1.4.0" @@ -716,7 +696,7 @@ digest = "1:2d1fbdc6777e5408cabeb02bf336305e724b925ff4546ded0fa8715a7267922a" name = "gopkg.in/inf.v0" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "d2d2541c53f18d2a059457998ce2876cc8e67cbf" version = "v0.9.1" @@ -724,12 +704,12 @@ digest = "1:18108594151654e9e696b27b181b953f9a90b16bf14d253dd1b397b025a1487f" name = "gopkg.in/yaml.v2" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" version = "v2.2.2" [[projects]] - digest = "1:6fa82ea248029bbbdddade20c06ab177ff6e485e5e45e48b045707415b7efd34" + digest = "1:50c54ca27ed4d58993d9f104f7c00478a210c3f3deccddee43ef8ff22f9072d7" name = "k8s.io/api" packages = [ "admission/v1beta1", @@ -766,22 +746,22 @@ "storage/v1alpha1", "storage/v1beta1", ] - pruneopts = "NT" - revision = "05914d821849570fba9eacfb29466f2d8d3cd229" + pruneopts = "NUT" + revision = "5cb15d34447165a97c76ed5a60e4e99c8a01ecfe" [[projects]] - digest = "1:c6f23048e162e65d586c809fd02e263e180ad157f110df17437c22517bb59a4b" + digest = "1:e9f7fa79848e63962835ad3df85bb0fc3df46059bc9d8b84a946be894dd49e39" name = "k8s.io/apiextensions-apiserver" packages = [ "pkg/apis/apiextensions", "pkg/apis/apiextensions/v1beta1", "pkg/client/clientset/clientset/scheme", ] - pruneopts = "NT" - revision = "0fe22c71c47604641d9aa352c785b7912c200562" + pruneopts = "NUT" + revision = "d002e88f6236312f0289d9d1deab106751718ff0" [[projects]] - digest = "1:15b5c41ff6faa4d0400557d4112d6337e1abc961c65513d44fce7922e32c9ca7" + digest = "1:25007e5aca71298609762b6e642a4b7a9643eaf4657ed5dcd2616bb4db47103e" name = "k8s.io/apimachinery" packages = [ "pkg/api/errors", @@ -828,11 +808,11 @@ "third_party/forked/golang/json", "third_party/forked/golang/reflect", ] - pruneopts = "NT" - revision = "2b1284ed4c93a43499e781493253e2ac5959c4fd" + pruneopts = "NUT" + revision = "86fb29eff6288413d76bd8506874fddd9fccdff0" [[projects]] - digest = "1:c904a3d70131b33df36e4e51b574226b82308fc1ea66964aa21095a95d453fc9" + digest = "1:4f899c0b40270cc108b6520d6060856e58d3fd157f64ebebcae339e5a55c96b0" name = "k8s.io/client-go" packages = [ "discovery", @@ -910,81 +890,55 @@ "util/retry", "util/workqueue", ] - pruneopts = "NT" - revision = "8d9ed539ba3134352c586810e749e58df4e94e4f" - -[[projects]] - digest = "1:dc1ae99dcab96913d81ae970b1f7a7411a54199b14bfb17a7e86f9a56979c720" - name = "k8s.io/code-generator" - packages = [ - "cmd/client-gen", - "cmd/client-gen/args", - "cmd/client-gen/generators", - "cmd/client-gen/generators/fake", - "cmd/client-gen/generators/scheme", - "cmd/client-gen/generators/util", - "cmd/client-gen/path", - "cmd/client-gen/types", - "cmd/conversion-gen", - "cmd/conversion-gen/args", - "cmd/conversion-gen/generators", - "cmd/deepcopy-gen", - "cmd/deepcopy-gen/args", - "cmd/defaulter-gen", - "cmd/defaulter-gen/args", - "cmd/informer-gen", - "cmd/informer-gen/args", - "cmd/informer-gen/generators", - "cmd/lister-gen", - "cmd/lister-gen/args", - "cmd/lister-gen/generators", - "pkg/util", - ] - pruneopts = "T" - revision = "c2090bec4d9b1fb25de3812f868accc2bc9ecbae" + pruneopts = "NUT" + revision = "b40b2a5939e43f7ffe0028ad67586b7ce50bb675" [[projects]] branch = "master" - digest = "1:a9f99f1c11620be972d49d2e4e296031a5fbc168ada49a9e618d9b35f751f119" + digest = "1:28a32d7ac148ae6f81d5903f6455ae6530c19ba48708d0366263d61679945b13" name = "k8s.io/gengo" packages = [ "args", - "examples/deepcopy-gen/generators", - "examples/defaulter-gen/generators", - "examples/set-gen/sets", "generator", "namer", "parser", "types", ] - pruneopts = "T" + pruneopts = "NUT" revision = "b90029ef6cd877cb3f422d75b3a07707e3aac6b7" [[projects]] - digest = "1:29f93bb84d907a2c035e729e19d66fe52165d8c905cb3ef1920140d76ae6afaf" + digest = "1:c263611800c3a97991dbcf9d3bc4de390f6224aaa8ca0a7226a9d734f65a416a" name = "k8s.io/klog" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "71442cd4037d612096940ceb0f3fec3f7fff66e0" version = "v0.2.0" [[projects]] - digest = "1:c48a795cd7048bb1888273bc604b6e69b22f9b8089c3df65f77cc527757b515c" + digest = "1:0dac10b488f2671c15738b662478d665b0c0ec7cae3362669dec172147331ce5" name = "k8s.io/kube-openapi" packages = [ - "cmd/openapi-gen", - "cmd/openapi-gen/args", "pkg/common", - "pkg/generators", - "pkg/generators/rules", "pkg/util/proto", - "pkg/util/sets", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" [[projects]] - digest = "1:06035489efbd51ccface65fc878ceeb849aba05b2f9443c8993f363fc96e80ac" + digest = "1:584e35289f5869d56bea9469d4de6f96758a3276125bb3e7b2c41bd65cb5a226" + name = "k8s.io/kube-state-metrics" + packages = [ + "pkg/collector", + "pkg/metric", + "pkg/metrics_store", + ] + pruneopts = "NUT" + revision = "de19ed4f12d471fccc79f9a9fee73f7c107ecd33" + version = "v1.6.0" + +[[projects]] + digest = "1:f467a1933d5cbafd32eb126229e4629a099f4852e26b4be25db96f8f03b4101f" name = "sigs.k8s.io/controller-runtime" packages = [ "pkg/cache", @@ -999,6 +953,7 @@ "pkg/handler", "pkg/internal/controller", "pkg/internal/controller/metrics", + "pkg/internal/objectutil", "pkg/internal/recorder", "pkg/leaderelection", "pkg/manager", @@ -1018,12 +973,12 @@ "pkg/webhook/internal/metrics", "pkg/webhook/types", ] - pruneopts = "NT" - revision = "12d98582e72927b6cd0123e2b4e819f9341ce62c" - version = "v0.1.10" + pruneopts = "NUT" + revision = "f1eaba5087d69cebb154c6a48193e6667f5b512c" + version = "v0.1.12" [[projects]] - digest = "1:00eecd8f1e0541da85a37549f6514c4b3517e2e000b74a0dc9f47cee07d7e1b5" + digest = "1:024781b25f1d15e78be60cc44842c092d3cda8d494f6c972e6f35707ac35419a" name = "sigs.k8s.io/controller-tools" packages = [ "pkg/crd/generator", @@ -1033,14 +988,14 @@ "pkg/internal/general", "pkg/util", ] - pruneopts = "NT" + pruneopts = "NUT" revision = "9d55346c2bde73fb3326ac22eac2e5210a730207" [[projects]] digest = "1:8730e0150dfb2b7e173890c8b9868e7a273082ef8e39f4940e3506a481cf895c" name = "sigs.k8s.io/yaml" packages = ["."] - pruneopts = "NT" + pruneopts = "NUT" revision = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" version = "v1.1.0" @@ -1049,14 +1004,17 @@ analyzer-version = 1 input-imports = [ "github.com/aerogear/mobile-security-service/pkg/models", + "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1", + "github.com/coreos/prometheus-operator/pkg/client/versioned/typed/monitoring/v1", "github.com/go-logr/logr", "github.com/go-openapi/spec", "github.com/openshift/api/route/v1", - "github.com/openshift/client-go/apps/clientset/versioned/typed/apps/v1", "github.com/operator-framework/operator-sdk/pkg/k8sutil", + "github.com/operator-framework/operator-sdk/pkg/kube-metrics", "github.com/operator-framework/operator-sdk/pkg/leader", "github.com/operator-framework/operator-sdk/pkg/log/zap", "github.com/operator-framework/operator-sdk/pkg/metrics", + "github.com/operator-framework/operator-sdk/pkg/restmapper", "github.com/operator-framework/operator-sdk/pkg/test", "github.com/operator-framework/operator-sdk/pkg/test/e2eutil", "github.com/operator-framework/operator-sdk/version", @@ -1065,7 +1023,6 @@ "k8s.io/api/batch/v1", "k8s.io/api/batch/v1beta1", "k8s.io/api/core/v1", - "k8s.io/apimachinery/pkg/api/errors", "k8s.io/apimachinery/pkg/api/resource", "k8s.io/apimachinery/pkg/apis/meta/v1", "k8s.io/apimachinery/pkg/labels", @@ -1073,18 +1030,9 @@ "k8s.io/apimachinery/pkg/runtime/schema", "k8s.io/apimachinery/pkg/types", "k8s.io/apimachinery/pkg/util/intstr", - "k8s.io/apimachinery/pkg/util/wait", "k8s.io/client-go/kubernetes/scheme", "k8s.io/client-go/plugin/pkg/client/auth/gcp", "k8s.io/client-go/rest", - "k8s.io/code-generator/cmd/client-gen", - "k8s.io/code-generator/cmd/conversion-gen", - "k8s.io/code-generator/cmd/deepcopy-gen", - "k8s.io/code-generator/cmd/defaulter-gen", - "k8s.io/code-generator/cmd/informer-gen", - "k8s.io/code-generator/cmd/lister-gen", - "k8s.io/gengo/args", - "k8s.io/kube-openapi/cmd/openapi-gen", "k8s.io/kube-openapi/pkg/common", "sigs.k8s.io/controller-runtime/pkg/client", "sigs.k8s.io/controller-runtime/pkg/client/config", From 3db2b9ff42f40650b69569e664d03e2364bfddcf Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Fri, 4 Oct 2019 14:00:30 +0300 Subject: [PATCH 3/6] feat(sdk-upgrade):upgrade CircleCI to Golang 1.12 --- .circleci/config.yml | 12 +++++++++--- Makefile | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 84dc492c..be6c9880 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,9 @@ jobs: working_directory: /go/src/github.com/aerogear/mobile-security-service-operator docker: - - image: circleci/golang:1.10 + - image: circleci/golang:1.12 + environment: + GO111MODULE: "off" steps: - checkout @@ -27,7 +29,9 @@ jobs: image_push_master: working_directory: /go/src/github.com/aerogear/mobile-security-service-operator docker: - - image: circleci/golang:1.10 + - image: circleci/golang:1.12 + environment: + GO111MODULE: "off" steps: - checkout - run: @@ -46,7 +50,9 @@ jobs: image_release: working_directory: /go/src/github.com/aerogear/mobile-security-service-operator docker: - - image: circleci/golang:1.10 + - image: circleci/golang:1.12 + environment: + GO111MODULE: "off" steps: - checkout - run: diff --git a/Makefile b/Makefile index c6488487..12f39b93 100644 --- a/Makefile +++ b/Makefile @@ -214,13 +214,13 @@ code/gen: .PHONY: test/run test/run: @echo Running tests: - GOCACHE=off go test -cover $(TEST_PKGS) + go test -cover $(TEST_PKGS) .PHONY: test/compile test/compile: @GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go test -c -o=$(TEST_COMPILE_OUTPUT) ./test/e2e/... .PHONY: test/integration-cover test/integration-cover: echo "mode: count" > coverage-all.out - GOCACHE=off $(foreach pkg,$(PACKAGES),\ + $(foreach pkg,$(PACKAGES),\ go test -failfast -tags=integration -coverprofile=coverage.out -covermode=count $(addprefix $(PKG)/,$(pkg)) || exit 1;\ tail -n +2 coverage.out >> coverage-all.out;) From ed136be7cdb1165eab3642c0ea2a610b15a50e42 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 8 Oct 2019 10:36:25 +0300 Subject: [PATCH 4/6] Update deploy/role.yaml Co-Authored-By: Gerard Ryan --- deploy/role.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/role.yaml b/deploy/role.yaml index bb126980..788bbbdb 100644 --- a/deploy/role.yaml +++ b/deploy/role.yaml @@ -108,7 +108,7 @@ rules: verbs: - get -# monitoring related perrmissions +# monitoring related permissions - apiGroups: - monitoring.coreos.com resources: From e0394a121d306e98eaef8d95b2944f7199e2ddb1 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 8 Oct 2019 10:43:41 +0300 Subject: [PATCH 5/6] feat(sdk-upgrade) : Don't create ServiceMonitor CRs if CRD's not ther --- cmd/manager/main.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index ba546272..bede82f9 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -124,18 +124,20 @@ func main() { log.Info("Could not create metrics Service", "error", err.Error()) } - err = addMonitoringKeyLabelToService(cfg, operatorNamespace, service) - if err != nil { - log.Error(err, "Could not add monitoring-key label to operator metrics Service") - } + if service != nil { + err = addMonitoringKeyLabelToService(cfg, operatorNamespace, service) + if err != nil { + log.Error(err, "Could not add monitoring-key label to operator metrics Service") + } - err = createServiceMonitor(cfg, operatorNamespace, service) - if err != nil { - log.Info("Could not create ServiceMonitor object", "error", err.Error()) - // If this operator is deployed to a cluster without the prometheus-operator running, it will return - // ErrServiceMonitorNotPresent, which can be used to safely skip ServiceMonitor creation. - if err == metrics.ErrServiceMonitorNotPresent { - log.Info("Install prometheus-operator in you cluster to create ServiceMonitor objects", "error", err.Error()) + err = createServiceMonitor(cfg, operatorNamespace, service) + if err != nil { + log.Info("Could not create ServiceMonitor object", "error", err.Error()) + // If this operator is deployed to a cluster without the prometheus-operator running, it will return + // ErrServiceMonitorNotPresent, which can be used to safely skip ServiceMonitor creation. + if err == metrics.ErrServiceMonitorNotPresent { + log.Info("Install prometheus-operator in you cluster to create ServiceMonitor objects", "error", err.Error()) + } } } From bd69506855e03887d24c29c2d5af0d0d21def958 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 8 Oct 2019 10:47:10 +0300 Subject: [PATCH 6/6] feat(sdk-upgrade) : Update JenkinsFile to install O SDK 0.10 --- Jenkinsfile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 5449435a..6b56355a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,6 +58,21 @@ pipeline { } } + stage("Install Operator SDK") { + steps { + // qe-pipeline-library step + installOperatorSdk version: "v0.10.0" + } + post { + failure { + echo "====++++'Install Operator SDK' execution failed++++====" + echo "Please check if the version of operator-sdk you provided exists" + echo "https://github.com/operator-framework/operator-sdk/releases" + } + } + } + + stage("Create an OpenShift project") { steps { // qe-pipeline-library step