diff --git a/hack/generate/samples/internal/go/v3/memcached_with_webhooks.go b/hack/generate/samples/internal/go/v3/memcached_with_webhooks.go index 586e30625ee..4623ffbdfcf 100644 --- a/hack/generate/samples/internal/go/v3/memcached_with_webhooks.go +++ b/hack/generate/samples/internal/go/v3/memcached_with_webhooks.go @@ -274,6 +274,7 @@ func (mh *Memcached) implementingAPI() { ` // Size defines the number of Memcached instances + // +operator-sdk:csv:customresourcedefinitions:type=spec Size int32 `+"`"+`json:"size,omitempty"`+"`"+` `) pkg.CheckError("inserting spec Status", err) @@ -285,10 +286,21 @@ func (mh *Memcached) implementingAPI() { ` // Nodes store the name of the pods which are running Memcached instances + // +operator-sdk:csv:customresourcedefinitions:type=status Nodes []string `+"`"+`json:"nodes,omitempty"`+"`"+` `) pkg.CheckError("inserting Node Status", err) + // Add CSV marker that shows CRD owned resources + err = kbutil.InsertCode( + filepath.Join(mh.ctx.Dir, "api", mh.ctx.Version, fmt.Sprintf("%s_types.go", strings.ToLower(mh.ctx.Kind))), + `//+kubebuilder:subresource:status`, + ` + // +operator-sdk:csv:customresourcedefinitions:resources={{Deployment,v1,memcached-deployment}} + `) + + pkg.CheckError("inserting CRD owned resources CSV marker", err) + sampleFile := filepath.Join("config", "samples", fmt.Sprintf("%s_%s_%s.yaml", mh.ctx.Group, mh.ctx.Version, strings.ToLower(mh.ctx.Kind))) diff --git a/test/common/scorecard.go b/test/common/scorecard.go index 57b23820893..6e4bdf87084 100644 --- a/test/common/scorecard.go +++ b/test/common/scorecard.go @@ -59,7 +59,10 @@ func ScorecardSpec(tc *testutils.TestContext, operatorType string) func() { "--wait-time", "4m") outputBytes, err = tc.Run(cmd) // Some tests are expected to fail, which results in scorecard exiting 1. - Expect(err).To(HaveOccurred()) + // Go tests no longer expect to fail + if strings.ToLower(operatorType) != "go" { + Expect(err).To(HaveOccurred()) + } Expect(json.Unmarshal(outputBytes, &output)).To(Succeed()) expected := map[string]v1alpha3.State{ @@ -75,6 +78,11 @@ func ScorecardSpec(tc *testutils.TestContext, operatorType string) func() { if strings.ToLower(operatorType) == "go" { // Go projects have generated CRD validation. expected["olm-crds-have-validation"] = v1alpha3.PassState + // Go generated test operator now has CSV markers + // that allows these validations to pass + expected["olm-crds-have-resources"] = v1alpha3.PassState + expected["olm-spec-descriptors"] = v1alpha3.PassState + expected["olm-status-descriptors"] = v1alpha3.PassState // The Go sample project tests a custom suite. expected["customtest1"] = v1alpha3.PassState expected["customtest2"] = v1alpha3.PassState diff --git a/testdata/go/v3/memcached-operator/api/v1alpha1/memcached_types.go b/testdata/go/v3/memcached-operator/api/v1alpha1/memcached_types.go index 16a1747debe..6960e100d93 100644 --- a/testdata/go/v3/memcached-operator/api/v1alpha1/memcached_types.go +++ b/testdata/go/v3/memcached-operator/api/v1alpha1/memcached_types.go @@ -29,6 +29,7 @@ type MemcachedSpec struct { // Important: Run "make" to regenerate code after modifying this file // Size defines the number of Memcached instances + // +operator-sdk:csv:customresourcedefinitions:type=spec Size int32 `json:"size,omitempty"` // Foo is an example field of Memcached. Edit memcached_types.go to remove/update @@ -41,11 +42,13 @@ type MemcachedStatus struct { // Important: Run "make" to regenerate code after modifying this file // Nodes store the name of the pods which are running Memcached instances + // +operator-sdk:csv:customresourcedefinitions:type=status Nodes []string `json:"nodes,omitempty"` } //+kubebuilder:object:root=true //+kubebuilder:subresource:status +// +operator-sdk:csv:customresourcedefinitions:resources={{Deployment,v1,memcached-deployment}} // Memcached is the Schema for the memcacheds API type Memcached struct { diff --git a/testdata/go/v3/memcached-operator/bundle/manifests/memcached-operator.clusterserviceversion.yaml b/testdata/go/v3/memcached-operator/bundle/manifests/memcached-operator.clusterserviceversion.yaml index 17cbc2d3867..4de2ad3dfb0 100644 --- a/testdata/go/v3/memcached-operator/bundle/manifests/memcached-operator.clusterserviceversion.yaml +++ b/testdata/go/v3/memcached-operator/bundle/manifests/memcached-operator.clusterserviceversion.yaml @@ -26,6 +26,19 @@ spec: displayName: Memcached kind: Memcached name: memcacheds.cache.example.com + resources: + - kind: Deployment + name: memcached-deployment + version: v1 + specDescriptors: + - description: Size defines the number of Memcached instances + displayName: Size + path: size + statusDescriptors: + - description: Nodes store the name of the pods which are running Memcached + instances + displayName: Nodes + path: nodes version: v1alpha1 description: Memcached Operator description. TODO. displayName: Memcached Operator diff --git a/testdata/go/v3/memcached-operator/config/manifests/bases/memcached-operator.clusterserviceversion.yaml b/testdata/go/v3/memcached-operator/config/manifests/bases/memcached-operator.clusterserviceversion.yaml index bcfeaa4015d..7aca6b2a03b 100644 --- a/testdata/go/v3/memcached-operator/config/manifests/bases/memcached-operator.clusterserviceversion.yaml +++ b/testdata/go/v3/memcached-operator/config/manifests/bases/memcached-operator.clusterserviceversion.yaml @@ -14,6 +14,19 @@ spec: displayName: Memcached kind: Memcached name: memcacheds.cache.example.com + resources: + - kind: Deployment + name: memcached-deployment + version: v1 + specDescriptors: + - description: Size defines the number of Memcached instances + displayName: Size + path: size + statusDescriptors: + - description: Nodes store the name of the pods which are running Memcached + instances + displayName: Nodes + path: nodes version: v1alpha1 description: Memcached Operator description. TODO. displayName: Memcached Operator