-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6673091
commit b6ca3c2
Showing
7 changed files
with
541 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
package operators | ||
|
||
import ( | ||
"fmt" | ||
g "github.com/onsi/ginkgo" | ||
o "github.com/onsi/gomega" | ||
exutil "github.com/openshift/origin/test/extended/util" | ||
e2e "k8s.io/kubernetes/test/e2e/framework" | ||
"path/filepath" | ||
"strings" | ||
"time" | ||
) | ||
|
||
var _ = g.Describe("[Feature:Platform] Service Catalog should", func() { | ||
defer g.GinkgoRecover() | ||
|
||
var oc = exutil.NewCLI("service-catalog", exutil.KubeConfigPath()).WithoutNamespace() | ||
|
||
var ( | ||
buildPruningBaseDir = exutil.FixturePath("testdata", "service_catalog") | ||
upsBroker = filepath.Join(buildPruningBaseDir, "ups-broker.yaml") | ||
upsDeployment = filepath.Join(buildPruningBaseDir, "ups-deployment.yaml") | ||
upsService = filepath.Join(buildPruningBaseDir, "ups-service.yaml") | ||
upsInstance = filepath.Join(buildPruningBaseDir, "ups-instance.yaml") | ||
upsBinding = filepath.Join(buildPruningBaseDir, "ups-binding.yaml") | ||
) | ||
|
||
enableServiceCatalogResources := [][]string{ | ||
{"servicecatalogapiserver", "openshift-service-catalog-apiserver", "apiserver"}, | ||
{"servicecatalogcontrollermanager", "openshift-service-catalog-controller-manager", "controller-manager"}, | ||
} | ||
|
||
// Enable Service Catalog | ||
g.BeforeEach(func() { | ||
g.By("Enable Service Catalog") | ||
for _, v := range enableServiceCatalogResources { | ||
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Managed"}}`, "--type=merge").Output() | ||
if err != nil { | ||
e2e.Failf("Unable to create: %s, error:%v", v[0], err) | ||
} | ||
time.Sleep(60 * time.Second) | ||
output, err := oc.AsAdmin().Run("get").Args("daemonset", "-n", v[1], "-o=jsonpath={.status}").Output() | ||
if err != nil { | ||
e2e.Failf("Unable to get: %s, error:%v", v[0], err) | ||
} | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("numberUnavailable")) | ||
} | ||
}, 120) | ||
|
||
// The below steps will cover OCP-24049, author: jiazha@redhat.com | ||
// Disable these servicecatalogoperator resource | ||
g.AfterEach(func() { | ||
g.By("delete this ups broker") | ||
output, err := oc.AsAdmin().Run("get").Args("clusterservicebroker").Output() | ||
if strings.Contains(output, "ups-broker") { | ||
_, err = oc.AsAdmin().Run("delete").Args("clusterservicebroker", "ups-broker").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(20 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("clusterserviceclass").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("user-provided-service")) | ||
} | ||
for _, v := range enableServiceCatalogResources { | ||
g.By("disable " + v[0]) | ||
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Removed"}}`, "--type=merge").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(5 * time.Second) | ||
if v[0] == "servicecatalogapiserver" { | ||
output, err := oc.AsAdmin().Run("get").Args(v[0], "cluster", "-o=jsonpath={.status.conditions}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.ContainSubstring("RemovalRequestIgnored")) | ||
} else { | ||
output, err := oc.AsAdmin().Run("get").Args("ns").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("openshift-service-catalog-controller-manager")) | ||
} | ||
} | ||
}, 120) | ||
|
||
g.It("check basic usages: OCP-24062, OCP-24049, OCP-15600", func() { | ||
g.By("Check Service Catalog apiservice") | ||
output, err := oc.AsAdmin().Run("get").Args("apiservices", "v1beta1.servicecatalog.k8s.io", "-o=jsonpath={.status.conditions[0].reason}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.Equal("Passed")) | ||
|
||
// The below steps will cover test case: OCP-15600, author: jiazha@redhat.com | ||
g.By("Deploy a fake broker") | ||
|
||
upsFiles := []string{upsDeployment, upsService, upsBroker} | ||
e2e.Logf("current namespace:%s", oc.Namespace()) | ||
for _, v := range upsFiles { | ||
configFile, err := oc.AsAdmin().Run("process").Args("-f", v, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json") | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
} | ||
time.Sleep(60 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("clusterservicebroker", "ups-broker", "-o=jsonpath={.status.conditions[0].type}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.Equal("Ready")) | ||
|
||
g.By("create a ups instance") | ||
configFile, err := oc.AsAdmin().Run("process").Args("-f", upsInstance, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json") | ||
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(20 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("serviceinstance", "-n", oc.Namespace(), "ups-instance", "-o=jsonpath={.status.conditions[0].reason}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.Equal("ProvisionedSuccessfully")) | ||
|
||
g.By("bind to this instance") | ||
configFile, err = oc.AsAdmin().Run("process").Args("-f", upsBinding, "-p", fmt.Sprintf("NAMESPACE=%s", oc.Namespace())).OutputToFile("config.json") | ||
err = oc.AsAdmin().Run("create").Args("-f", configFile).Execute() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(20 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("servicebinding", "-n", oc.Namespace(), "ups-binding", "-o=jsonpath={.status.conditions[0].reason}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.Equal("InjectedBindResult")) | ||
output, err = oc.AsAdmin().Run("get").Args("secret", "-n", oc.Namespace()).Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.ContainSubstring("my-secret")) | ||
|
||
g.By("unbind from this instance") | ||
output, err = oc.AsAdmin().Run("delete").Args("servicebinding", "-n", oc.Namespace(), "ups-binding").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(20 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("servicebinding", "-n", oc.Namespace()).Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("ups-binding")) | ||
output, err = oc.AsAdmin().Run("get").Args("secret", "-n", oc.Namespace()).Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("my-secret")) | ||
|
||
g.By("delete this ups instance") | ||
_, err = oc.AsAdmin().Run("delete").Args("serviceinstance", "-n", oc.Namespace(), "ups-instance").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(20 * time.Second) | ||
output, err = oc.AsAdmin().Run("get").Args("serviceinstance", "-n", oc.Namespace()).Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).NotTo(o.ContainSubstring("ups-instance")) | ||
|
||
// The below steps will cover OCP-24062, author: jiazha@redhat.com | ||
// TODO: once https://bugzilla.redhat.com/show_bug.cgi?id=1712297 fix, we should cover the `Force` managementState | ||
// Unmanage these servicecatalogoperator resource | ||
g.By("set Service Catalog to Unmanaged") | ||
for _, v := range enableServiceCatalogResources { | ||
_, err := oc.AsAdmin().Run("patch").Args(v[0], "cluster", "-p", `{"spec":{"managementState":"Unmanaged"}}`, "--type=merge").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
time.Sleep(5 * time.Second) | ||
output, err := oc.AsAdmin().Run("patch").Args("daemonset", v[2], "-n", v[1], "-p", `{"spec":{"template":{"spec":{"priorityClassName":"test"}}}}`).Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.ContainSubstring("patched")) | ||
time.Sleep(1 * time.Minute) | ||
output, err = oc.AsAdmin().Run("get").Args("daemonset", v[2], "-n", v[1], "-o=jsonpath={.spec.template.spec.priorityClassName}").Output() | ||
o.Expect(err).NotTo(o.HaveOccurred()) | ||
o.Expect(output).To(o.Equal("test")) | ||
} | ||
}) | ||
|
||
}) |
Oops, something went wrong.