From 178a6798a49bac761eac76540791785efd38fd50 Mon Sep 17 00:00:00 2001 From: Philippe Martin Date: Thu, 18 Aug 2022 19:31:48 +0200 Subject: [PATCH] Revert "`odo dev`: Add support for non-exec commands part of a composite run or debug command (#5923)" This reverts commit 224069cd68f4a03f4b5b17009fb4ca42ef8c5d89. --- pkg/binding/binding.go | 5 +- pkg/component/component.go | 4 +- pkg/component/delete/delete.go | 46 +- pkg/component/delete/delete_test.go | 187 +-- pkg/component/delete/interface.go | 2 +- pkg/deploy/deploy.go | 44 +- pkg/dev/dev.go | 3 - pkg/dev/interface.go | 2 - pkg/dev/mock.go | 42 +- .../adapters/kubernetes/component/adapter.go | 20 +- .../kubernetes/component/adapter_test.go | 16 +- .../kubernetes/component/commandhandler.go | 57 +- .../adapters/kubernetes/component/push.go | 9 +- .../adapters/kubernetes/component/utils.go | 57 - pkg/kclient/deployments.go | 4 +- pkg/kclient/deployments_test.go | 4 +- pkg/kclient/interface.go | 6 +- pkg/kclient/mock_Client.go | 1467 +++++++++-------- pkg/kclient/services.go | 5 +- pkg/kclient/services_test.go | 15 +- pkg/kclient/volumes_test.go | 5 +- pkg/labels/constants.go | 4 +- pkg/labels/labels.go | 26 +- pkg/labels/labels_test.go | 27 +- pkg/logs/logs.go | 8 +- pkg/odo/cli/dev/dev.go | 3 +- pkg/service/link.go | 6 +- pkg/service/service.go | 42 + pkg/storage/kubernetes.go | 5 +- pkg/storage/kubernetes_test.go | 20 +- pkg/storage/storage_test.go | 2 +- pkg/testingutil/deployments.go | 33 +- pkg/testingutil/pods.go | 5 +- pkg/testingutil/services.go | 5 +- pkg/watch/watch.go | 5 +- tests/e2escenarios/e2e_devfile_test.go | 2 +- tests/e2escenarios/e2e_test.go | 9 +- tests/helper/helper_dev.go | 45 +- tests/integration/cmd_add_binding_test.go | 2 +- tests/integration/cmd_delete_test.go | 2 +- .../cmd_describe_component_test.go | 2 +- .../cmd_describe_list_binding_test.go | 2 +- tests/integration/cmd_dev_debug_test.go | 72 +- tests/integration/cmd_dev_test.go | 257 +-- tests/integration/cmd_devfile_deploy_test.go | 4 +- tests/integration/cmd_devfile_list_test.go | 6 +- tests/integration/cmd_logs_test.go | 5 +- 47 files changed, 1099 insertions(+), 1500 deletions(-) delete mode 100644 pkg/devfile/adapters/kubernetes/component/utils.go diff --git a/pkg/binding/binding.go b/pkg/binding/binding.go index c80f53b0934..0cb8dbf2505 100644 --- a/pkg/binding/binding.go +++ b/pkg/binding/binding.go @@ -4,12 +4,11 @@ import ( "fmt" "path/filepath" + "github.com/redhat-developer/odo/pkg/project" bindingApis "github.com/redhat-developer/service-binding-operator/apis" bindingApi "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1" specApi "github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3" - "github.com/redhat-developer/odo/pkg/project" - "github.com/devfile/library/pkg/devfile/parser" devfilefs "github.com/devfile/library/pkg/testingutil/filesystem" "gopkg.in/yaml.v2" @@ -302,7 +301,7 @@ func (o *BindingClient) checkServiceBindingOperatorInstalled() error { func (o *BindingClient) CheckServiceBindingsInjectionDone(componentName string, appName string) (bool, error) { - deployment, err := o.kubernetesClient.GetOneDeployment(componentName, appName, true) + deployment, err := o.kubernetesClient.GetOneDeployment(componentName, appName) if err != nil { // If not deployment yet => all bindings are done if _, ok := err.(*kclient.DeploymentNotFoundError); ok { diff --git a/pkg/component/component.go b/pkg/component/component.go index c659886e23c..34df0ad123d 100644 --- a/pkg/component/component.go +++ b/pkg/component/component.go @@ -88,7 +88,7 @@ func Exists(client kclient.ClientInterface, componentName, applicationName strin // GetOnePod gets a pod using the component and app name func GetOnePod(client kclient.ClientInterface, componentName string, appName string) (*corev1.Pod, error) { - return client.GetRunningPodFromSelector(odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode, false)) + return client.GetRunningPodFromSelector(odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode)) } // Log returns log from component @@ -212,7 +212,7 @@ func ListAllClusterComponents(client kclient.ClientInterface, namespace string) } func getResourcesForComponent(client kclient.ClientInterface, name string, namespace string) ([]unstructured.Unstructured, error) { - selector := labels.GetSelector(name, "app", labels.ComponentAnyMode, false) + selector := labels.GetSelector(name, "app", labels.ComponentAnyMode) resourceList, err := client.GetAllResourcesFromSelector(selector, namespace) if err != nil { return nil, err diff --git a/pkg/component/delete/delete.go b/pkg/component/delete/delete.go index f4539ab737c..23881fec43f 100644 --- a/pkg/component/delete/delete.go +++ b/pkg/component/delete/delete.go @@ -5,7 +5,6 @@ import ( "path/filepath" "github.com/devfile/library/pkg/devfile/parser" - "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" @@ -37,7 +36,7 @@ func NewDeleteComponentClient(kubeClient kclient.ClientInterface) *DeleteCompone // It only returns resources not owned by another resource of the component, letting the garbage collector do its job func (do *DeleteComponentClient) ListClusterResourcesToDelete(componentName string, namespace string) ([]unstructured.Unstructured, error) { var result []unstructured.Unstructured - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentAnyMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentAnyMode) list, err := do.kubeClient.GetAllResourcesFromSelector(selector, namespace) if err != nil { return nil, err @@ -91,7 +90,7 @@ func references(list []unstructured.Unstructured, ownerRef metav1.OwnerReference // ListResourcesToDeleteFromDevfile parses all the devfile components and returns a list of resources that are present on the cluster and can be deleted func (do DeleteComponentClient) ListResourcesToDeleteFromDevfile(devfileObj parser.DevfileObj, appName string, mode string) (isInnerLoopDeployed bool, resources []unstructured.Unstructured, err error) { - var deployment *v1.Deployment + if mode == odolabels.ComponentDevMode || mode == odolabels.ComponentAnyMode { // Inner Loop // Fetch the deployment of the devfile component @@ -102,7 +101,7 @@ func (do DeleteComponentClient) ListResourcesToDeleteFromDevfile(devfileObj pars return isInnerLoopDeployed, resources, fmt.Errorf("failed to get the resource %q name for component %q; cause: %w", kclient.DeploymentKind, componentName, err) } - deployment, err = do.kubeClient.GetDeploymentByName(deploymentName) + deployment, err := do.kubeClient.GetDeploymentByName(deploymentName) if err != nil && !kerrors.IsNotFound(err) { return isInnerLoopDeployed, resources, err } @@ -121,30 +120,27 @@ func (do DeleteComponentClient) ListResourcesToDeleteFromDevfile(devfileObj pars } } - // Parse the devfile for K8s resources; these may belong to either innerloop or outerloop - localResources, err := libdevfile.ListKubernetesComponents(devfileObj, filepath.Dir(devfileObj.Ctx.GetAbsPath())) - if err != nil { - return isInnerLoopDeployed, resources, fmt.Errorf("failed to gather resources for deletion: %w", err) - } - for _, lr := range localResources { - var gvr *meta.RESTMapping - gvr, err = do.kubeClient.GetRestMappingFromUnstructured(lr) + if mode == odolabels.ComponentDeployMode || mode == odolabels.ComponentAnyMode { + // Outer Loop + // Parse the devfile for outerloop K8s resources + localResources, err := libdevfile.ListKubernetesComponents(devfileObj, filepath.Dir(devfileObj.Ctx.GetAbsPath())) if err != nil { - continue + return isInnerLoopDeployed, resources, fmt.Errorf("failed to gather resources for deletion: %w", err) } - // Try to fetch the resource from the cluster; if it exists, append it to the resources list - var cr *unstructured.Unstructured - cr, err = do.kubeClient.GetDynamicResource(gvr.Resource, lr.GetName()) - // If a specific mode is asked for, then make sure it matches with the cr's mode. - if err != nil || (mode != odolabels.ComponentAnyMode && odolabels.GetMode(cr.GetLabels()) != mode) { - if cr != nil { - klog.V(4).Infof("Ignoring resource: %s/%s; its mode(%s) does not match with the given mode(%s)", gvr.Resource.Resource, lr.GetName(), odolabels.GetMode(cr.GetLabels()), mode) - } else { - klog.V(4).Infof("Ignoring resource: %s/%s; it does not exist on the cluster", gvr.Resource.Resource, lr.GetName()) + for _, lr := range localResources { + var gvr *meta.RESTMapping + gvr, err = do.kubeClient.GetRestMappingFromUnstructured(lr) + if err != nil { + continue } - continue + // Try to fetch the resource from the cluster; if it exists, append it to the resources list + var cr *unstructured.Unstructured + cr, err = do.kubeClient.GetDynamicResource(gvr.Resource, lr.GetName()) + if err != nil { + continue + } + resources = append(resources, *cr) } - resources = append(resources, *cr) } return isInnerLoopDeployed, resources, nil @@ -159,7 +155,7 @@ func (do *DeleteComponentClient) ExecutePreStopEvents(devfileObj parser.DevfileO klog.V(4).Infof("Gathering information for component: %q", componentName) klog.V(3).Infof("Checking component status for %q", componentName) - selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode) pod, err := do.kubeClient.GetRunningPodFromSelector(selector) if err != nil { klog.V(1).Info("Component not found on the cluster.") diff --git a/pkg/component/delete/delete_test.go b/pkg/component/delete/delete_test.go index 31e5bb3fea7..4b0a299e13a 100644 --- a/pkg/component/delete/delete_test.go +++ b/pkg/component/delete/delete_test.go @@ -17,15 +17,12 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "github.com/redhat-developer/odo/pkg/kclient" + "github.com/redhat-developer/odo/pkg/labels" odolabels "github.com/redhat-developer/odo/pkg/labels" odoTestingUtil "github.com/redhat-developer/odo/pkg/testingutil" "github.com/redhat-developer/odo/pkg/util" ) -const ( - appName = "app" -) - func TestDeleteComponentClient_ListClusterResourcesToDelete(t *testing.T) { res1 := getUnstructured("dep1", "deployment", "v1", "") res2 := getUnstructured("svc1", "service", "v1", "") @@ -238,19 +235,18 @@ func TestDeleteComponentClient_DeleteResources(t *testing.T) { } func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { + const appName = "app" + const projectName = "default" const compName = "nodejs-prj1-api-abhz" - innerLoopCoreDeploymentName, _ := util.NamespaceKubernetesObject(compName, appName) - - // innerLoopCoreDeployment is the deployment created by odo dev for the component - innerLoopCoreDeployment := odoTestingUtil.CreateFakeDeployment(compName, true) + innerLoopDeploymentName, _ := util.NamespaceKubernetesObject(compName, appName) + deployment := odoTestingUtil.CreateFakeDeployment(compName) - innerLoopCoreDeploymentUnstructured, e := kclient.ConvertK8sResourceToUnstructured(innerLoopCoreDeployment) + deployedInnerLoopResource, e := kclient.ConvertK8sResourceToUnstructured(deployment) if e != nil { t.Errorf("unable to convert deployment to unstructured") } - // outerLoopResourceUnstructured is the deployment created by odo deploy - outerLoopResourceUnstructured := unstructured.Unstructured{ + outerLoopResource := unstructured.Unstructured{ Object: map[string]interface{}{ "apiVersion": "apps/v1", "kind": "Deployment", @@ -288,18 +284,14 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { }, }, } - - // labeledOuterloopResource is the deployment with labels set - labeledOuterloopResource := *outerLoopResourceUnstructured.DeepCopy() - labeledOuterloopResource.SetLabels(odolabels.GetLabels(compName, appName, odolabels.ComponentDeployMode, false)) - - // innerLoopResourceUnstructured is the deployment that will be deployed by apply command with `odo dev` - innerLoopResourceUnstructured := *outerLoopResourceUnstructured.DeepCopy() - innerLoopResourceUnstructured.SetLabels(odolabels.GetLabels(compName, appName, odolabels.ComponentDevMode, false)) - - deploymentRESTMapping := meta.RESTMapping{ - Resource: getGVR("apps", "v1", "Deployment"), + outerLoopGVR := meta.RESTMapping{ + Resource: schema.GroupVersionResource{ + Group: "apps", + Version: "v1", + Resource: outerLoopResource.GetKind(), + }, } + deployedOuterLoopResource := getUnstructured("my-component", "Deployment", "apps/v1", projectName) type fields struct { kubeClient func(ctrl *gomock.Controller) kclient.ClientInterface @@ -307,7 +299,6 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { type args struct { devfileObj parser.DevfileObj appName string - mode string } tests := []struct { name string @@ -318,17 +309,17 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { wantErr bool }{ { - name: "list innerloop core resource(deployment), and outerloop resources", + name: "both innerloop and outerloop resources are pushed to the cluster", fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName).Return(deployment, nil) - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) + kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResource).Return(&outerLoopGVR, nil) kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). - Return(&labeledOuterloopResource, nil) + GetDynamicResource(outerLoopGVR.Resource, outerLoopResource.GetName()). + Return(&deployedOuterLoopResource, nil) return kubeClient }, @@ -336,19 +327,18 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, }, wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured, labeledOuterloopResource}, + wantResources: []unstructured.Unstructured{deployedInnerLoopResource, deployedOuterLoopResource}, wantErr: false, }, { - name: "list innerloop core resource(deployment) only", + name: "no outerloop resources are present in the devfile", fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName).Return(deployment, nil) return kubeClient }, }, @@ -362,89 +352,55 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { return obj }(), appName: appName, - mode: odolabels.ComponentDevMode, }, wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured}, + wantResources: []unstructured.Unstructured{deployedInnerLoopResource}, wantErr: false, }, { - name: "list innerloop core resources(deployment), another innerloop resources", + name: "only outerloop resources are deployed; innerloop resource is not found", fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) - - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName). + Return(&appsv1.Deployment{}, kerrors.NewNotFound(schema.GroupResource{Group: "apps", Resource: "Deployments"}, innerLoopDeploymentName)) + kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResource).Return(&outerLoopGVR, nil) kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). - Return(&innerLoopResourceUnstructured, nil) - - return kubeClient - }, - }, - args: args{ - devfileObj: func() parser.DevfileObj { - obj := odoTestingUtil.GetTestDevfileObjFromFile("devfile-composite-apply-commands.yaml") - // change the metadata name to the desired one since devfile.yaml has a different name - metadata := obj.Data.GetMetadata() - metadata.Name = compName - obj.Data.SetMetadata(metadata) - return obj - }(), - appName: appName, - mode: odolabels.ComponentDevMode, - }, - wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured, innerLoopResourceUnstructured}, - wantErr: false, - }, - { - name: "list outerloop resources only", - fields: fields{ - kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { - kubeClient := kclient.NewMockClientInterface(ctrl) - - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName). - Return(&appsv1.Deployment{}, kerrors.NewNotFound(deploymentRESTMapping.Resource.GroupResource(), innerLoopCoreDeploymentName)) - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) - kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). - Return(&labeledOuterloopResource, nil) + GetDynamicResource(outerLoopGVR.Resource, outerLoopResource.GetName()). + Return(&deployedOuterLoopResource, nil) return kubeClient }, }, args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, }, wantIsInnerLoopDeployed: false, - wantResources: []unstructured.Unstructured{labeledOuterloopResource}, + wantResources: []unstructured.Unstructured{deployedOuterLoopResource}, wantErr: false, }, { - name: "list uri-referenced outerloop resources", + name: "only uri-referenced outerloop resources are deployed; innerloop resource is not found", fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName). - Return(&appsv1.Deployment{}, kerrors.NewNotFound(schema.GroupResource{Group: "apps", Resource: "Deployments"}, innerLoopCoreDeploymentName)) - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName). + Return(&appsv1.Deployment{}, + kerrors.NewNotFound(schema.GroupResource{Group: "apps", Resource: "Deployments"}, + innerLoopDeploymentName)) + kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResource).Return(&outerLoopGVR, nil) kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). - Return(&labeledOuterloopResource, nil) + GetDynamicResource(outerLoopGVR.Resource, outerLoopResource.GetName()). + Return(&deployedOuterLoopResource, nil) return kubeClient }, }, args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy-with-k8s-uri.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, }, wantIsInnerLoopDeployed: false, - wantResources: []unstructured.Unstructured{labeledOuterloopResource}, + wantResources: []unstructured.Unstructured{deployedOuterLoopResource}, wantErr: false, }, { @@ -452,14 +408,13 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(&appsv1.Deployment{}, errors.New("some error")) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName).Return(&appsv1.Deployment{}, errors.New("some error")) return kubeClient }, }, args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, }, wantIsInnerLoopDeployed: false, wantResources: nil, @@ -470,18 +425,17 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(nil, errors.New("some error")) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName).Return(deployment, nil) + kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResource).Return(nil, errors.New("some error")) return kubeClient }, }, args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, }, wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured}, + wantResources: []unstructured.Unstructured{deployedInnerLoopResource}, wantErr: false, }, { @@ -489,10 +443,10 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { fields: fields{ kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { kubeClient := kclient.NewMockClientInterface(ctrl) - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) + kubeClient.EXPECT().GetDeploymentByName(innerLoopDeploymentName).Return(deployment, nil) + kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResource).Return(&outerLoopGVR, nil) kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). + GetDynamicResource(outerLoopGVR.Resource, outerLoopResource.GetName()). Return(nil, errors.New("some error")) return kubeClient }, @@ -500,42 +454,9 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { args: args{ devfileObj: odoTestingUtil.GetTestDevfileObjFromFile("devfile-deploy.yaml"), appName: appName, - mode: odolabels.ComponentAnyMode, - }, - wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured}, - wantErr: false, - }, - { - name: "do not list outerloop resource if Dev mode is asked", - fields: fields{ - kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { - kubeClient := kclient.NewMockClientInterface(ctrl) - - kubeClient.EXPECT().GetDeploymentByName(innerLoopCoreDeploymentName).Return(innerLoopCoreDeployment, nil) - - kubeClient.EXPECT().GetRestMappingFromUnstructured(outerLoopResourceUnstructured).Return(&deploymentRESTMapping, nil) - kubeClient.EXPECT(). - GetDynamicResource(deploymentRESTMapping.Resource, outerLoopResourceUnstructured.GetName()). - Return(&outerLoopResourceUnstructured, nil) - - return kubeClient - }, - }, - args: args{ - devfileObj: func() parser.DevfileObj { - obj := odoTestingUtil.GetTestDevfileObjFromFile("devfile-composite-apply-commands.yaml") - // change the metadata name to the desired one since devfile.yaml has a different name - metadata := obj.Data.GetMetadata() - metadata.Name = compName - obj.Data.SetMetadata(metadata) - return obj - }(), - appName: appName, - mode: odolabels.ComponentDevMode, }, wantIsInnerLoopDeployed: true, - wantResources: []unstructured.Unstructured{innerLoopCoreDeploymentUnstructured}, + wantResources: []unstructured.Unstructured{deployedInnerLoopResource}, wantErr: false, }, } @@ -545,7 +466,7 @@ func TestDeleteComponentClient_ListResourcesToDeleteFromDevfile(t *testing.T) { do := DeleteComponentClient{ kubeClient: tt.fields.kubeClient(ctrl), } - gotIsInnerLoopDeployed, gotResources, err := do.ListResourcesToDeleteFromDevfile(tt.args.devfileObj, tt.args.appName, tt.args.mode) + gotIsInnerLoopDeployed, gotResources, err := do.ListResourcesToDeleteFromDevfile(tt.args.devfileObj, tt.args.appName, labels.ComponentAnyMode) if (err != nil) != tt.wantErr { t.Errorf("ListResourcesToDeleteFromDevfile() error = %v, wantErr %v", err, tt.wantErr) return @@ -602,7 +523,7 @@ func TestDeleteComponentClient_ExecutePreStopEvents(t *testing.T) { kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { client := kclient.NewMockClientInterface(ctrl) - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) client.EXPECT().GetRunningPodFromSelector(selector).Return(&corev1.Pod{}, &kclient.PodNotFoundError{Selector: selector}) return client }, @@ -619,7 +540,7 @@ func TestDeleteComponentClient_ExecutePreStopEvents(t *testing.T) { kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { client := kclient.NewMockClientInterface(ctrl) - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) client.EXPECT().GetRunningPodFromSelector(selector).Return(nil, errors.New("some un-ignorable error")) return client }, @@ -636,7 +557,7 @@ func TestDeleteComponentClient_ExecutePreStopEvents(t *testing.T) { kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { client := kclient.NewMockClientInterface(ctrl) - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) client.EXPECT().GetRunningPodFromSelector(selector).Return(odoTestingUtil.CreateFakePod(componentName, "runtime"), nil) cmd := []string{"/bin/sh", "-c", "cd /projects/nodejs-starter && (echo \"Hello World!\") 1>>/proc/1/fd/1 2>>/proc/1/fd/2"} @@ -657,7 +578,7 @@ func TestDeleteComponentClient_ExecutePreStopEvents(t *testing.T) { kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { client := kclient.NewMockClientInterface(ctrl) - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) pod := odoTestingUtil.CreateFakePod(componentName, "runtime") pod.Status.Phase = corev1.PodFailed client.EXPECT().GetRunningPodFromSelector(selector).Return(pod, nil) @@ -676,9 +597,9 @@ func TestDeleteComponentClient_ExecutePreStopEvents(t *testing.T) { kubeClient: func(ctrl *gomock.Controller) kclient.ClientInterface { client := kclient.NewMockClientInterface(ctrl) - selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) fakePod := odoTestingUtil.CreateFakePod(componentName, "runtime") - // Expecting this method to be called twice because if the command execution fails, we try to get the pod logs by calling GetOnePodFromSelector again. + //Expecting this method to be called twice because if the command execution fails, we try to get the pod logs by calling GetOnePodFromSelector again. client.EXPECT().GetRunningPodFromSelector(selector).Return(fakePod, nil).Times(2) client.EXPECT().GetPodLogs(fakePod.Name, gomock.Any(), gomock.Any()).Return(nil, errors.New("an error")) diff --git a/pkg/component/delete/interface.go b/pkg/component/delete/interface.go index 9566fae59c1..0d0a9c6e853 100644 --- a/pkg/component/delete/interface.go +++ b/pkg/component/delete/interface.go @@ -8,7 +8,7 @@ import ( type Client interface { // ListClusterResourcesToDelete lists Kubernetes resources from cluster in namespace for a given odo component ListClusterResourcesToDelete(componentName string, namespace string) ([]unstructured.Unstructured, error) - // DeleteResources deletes the unstructured resources and return the resources that failed to be deleted + // DeleteResources deletes the unstuctured resources and return the resources that failed to be deleted // set wait to true to wait for all the dependencies to be deleted DeleteResources(resources []unstructured.Unstructured, wait bool) []unstructured.Unstructured // ExecutePreStopEvents executes preStop events if any, as a precondition to deleting a devfile component deployment diff --git a/pkg/deploy/deploy.go b/pkg/deploy/deploy.go index 54142a52f25..ed73665d28a 100644 --- a/pkg/deploy/deploy.go +++ b/pkg/deploy/deploy.go @@ -2,15 +2,21 @@ package deploy import ( "errors" + "fmt" + "strings" "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" "github.com/devfile/library/pkg/devfile/parser" + devfilefs "github.com/devfile/library/pkg/testingutil/filesystem" + "k8s.io/klog" - "github.com/redhat-developer/odo/pkg/devfile/adapters/kubernetes/component" + "github.com/redhat-developer/odo/pkg/component" "github.com/redhat-developer/odo/pkg/devfile/image" "github.com/redhat-developer/odo/pkg/kclient" odolabels "github.com/redhat-developer/odo/pkg/labels" "github.com/redhat-developer/odo/pkg/libdevfile" + "github.com/redhat-developer/odo/pkg/log" + "github.com/redhat-developer/odo/pkg/service" "github.com/redhat-developer/odo/pkg/testingutil/filesystem" ) @@ -58,7 +64,41 @@ func (o *deployHandler) ApplyImage(img v1alpha2.Component) error { // ApplyKubernetes applies inline Kubernetes YAML from the devfile.yaml file func (o *deployHandler) ApplyKubernetes(kubernetes v1alpha2.Component) error { - return component.ApplyKubernetes(odolabels.ComponentDeployMode, o.appName, o.devfileObj, kubernetes, o.kubeClient, o.path) + + // Validate if the GVRs represented by Kubernetes inlined components are supported by the underlying cluster + _, err := service.ValidateResourceExist(o.kubeClient, o.devfileObj, kubernetes, o.path) + if err != nil { + return err + } + + // Get the most common labels that's applicable to all resources being deployed. + // Set the mode to DEPLOY. Regardless of what Kubernetes resource we are deploying. + labels := odolabels.GetLabels(o.devfileObj.Data.GetMetadata().Name, o.appName, odolabels.ComponentDeployMode) + klog.V(4).Infof("Injecting labels: %+v into k8s artifact", labels) + + // Create the annotations + // Retrieve the component type from the devfile and also inject it into the list of annotations + annotations := make(map[string]string) + odolabels.SetProjectType(annotations, component.GetComponentTypeFromDevfileMetadata(o.devfileObj.Data.GetMetadata())) + + // Get the Kubernetes component + u, err := libdevfile.GetK8sComponentAsUnstructured(o.devfileObj, kubernetes.Name, o.path, devfilefs.DefaultFs{}) + if err != nil { + return err + } + + // Deploy the actual Kubernetes component and error out if there's an issue. + log.Sectionf("Deploying Kubernetes Component: %s", u.GetName()) + isOperatorBackedService, err := service.PushKubernetesResource(o.kubeClient, u, labels, annotations) + if err != nil { + return fmt.Errorf("failed to create service(s) associated with the component: %w", err) + } + + if isOperatorBackedService { + log.Successf("Kubernetes resource %q on the cluster; refer %q to know how to link it to the component", strings.Join([]string{u.GetKind(), u.GetName()}, "/"), "odo link -h") + + } + return nil } // Execute will deploy the listed information in the `exec` section of devfile.yaml diff --git a/pkg/dev/dev.go b/pkg/dev/dev.go index bccf37a9306..6a1652d69dd 100644 --- a/pkg/dev/dev.go +++ b/pkg/dev/dev.go @@ -9,7 +9,6 @@ import ( "github.com/redhat-developer/odo/pkg/kclient" "github.com/redhat-developer/odo/pkg/portForward" "github.com/redhat-developer/odo/pkg/preference" - "github.com/redhat-developer/odo/pkg/testingutil/filesystem" "github.com/devfile/library/pkg/devfile/parser" "k8s.io/klog/v2" @@ -55,7 +54,6 @@ func (o *DevClient) Start( runCommand string, randomPorts bool, errOut io.Writer, - fs filesystem.Filesystem, ) (watch.ComponentStatus, error) { klog.V(4).Infoln("Creating new adapter") adapter := component.NewKubernetesAdapter( @@ -65,7 +63,6 @@ func (o *DevClient) Start( Context: path, AppName: "app", Devfile: devfileObj, - FS: fs, }, namespace) diff --git a/pkg/dev/interface.go b/pkg/dev/interface.go index a91c7c66128..8fe302c2f83 100644 --- a/pkg/dev/interface.go +++ b/pkg/dev/interface.go @@ -7,7 +7,6 @@ import ( "github.com/devfile/library/pkg/devfile/parser" "github.com/redhat-developer/odo/pkg/devfile/adapters" - "github.com/redhat-developer/odo/pkg/testingutil/filesystem" "github.com/redhat-developer/odo/pkg/watch" ) @@ -27,7 +26,6 @@ type Client interface { runCommand string, randomPorts bool, errOut io.Writer, - fs filesystem.Filesystem, ) (watch.ComponentStatus, error) // Watch watches for any changes to the files under path while ignoring the files/directories in ignorePaths. diff --git a/pkg/dev/mock.go b/pkg/dev/mock.go index a26519b61df..24871fa43a0 100644 --- a/pkg/dev/mock.go +++ b/pkg/dev/mock.go @@ -6,54 +6,54 @@ package dev import ( context "context" + io "io" + reflect "reflect" + parser "github.com/devfile/library/pkg/devfile/parser" gomock "github.com/golang/mock/gomock" adapters "github.com/redhat-developer/odo/pkg/devfile/adapters" - filesystem "github.com/redhat-developer/odo/pkg/testingutil/filesystem" watch "github.com/redhat-developer/odo/pkg/watch" - io "io" - reflect "reflect" ) -// MockClient is a mock of Client interface +// MockClient is a mock of Client interface. type MockClient struct { ctrl *gomock.Controller recorder *MockClientMockRecorder } -// MockClientMockRecorder is the mock recorder for MockClient +// MockClientMockRecorder is the mock recorder for MockClient. type MockClientMockRecorder struct { mock *MockClient } -// NewMockClient creates a new mock instance +// NewMockClient creates a new mock instance. func NewMockClient(ctrl *gomock.Controller) *MockClient { mock := &MockClient{ctrl: ctrl} mock.recorder = &MockClientMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClient) EXPECT() *MockClientMockRecorder { return m.recorder } -// Start mocks base method -func (m *MockClient) Start(devfileObj parser.DevfileObj, namespace string, ignorePaths []string, path string, debug bool, buildCommand, runCommand string, randomPorts bool, errOut io.Writer, fs filesystem.Filesystem) (watch.ComponentStatus, error) { +// Start mocks base method. +func (m *MockClient) Start(devfileObj parser.DevfileObj, namespace string, ignorePaths []string, path string, debug bool, buildCommand, runCommand string, randomPorts bool, errOut io.Writer) (watch.ComponentStatus, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Start", devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut, fs) + ret := m.ctrl.Call(m, "Start", devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut) ret0, _ := ret[0].(watch.ComponentStatus) ret1, _ := ret[1].(error) return ret0, ret1 } -// Start indicates an expected call of Start -func (mr *MockClientMockRecorder) Start(devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut, fs interface{}) *gomock.Call { +// Start indicates an expected call of Start. +func (mr *MockClientMockRecorder) Start(devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockClient)(nil).Start), devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut, fs) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Start", reflect.TypeOf((*MockClient)(nil).Start), devfileObj, namespace, ignorePaths, path, debug, buildCommand, runCommand, randomPorts, errOut) } -// Watch mocks base method +// Watch mocks base method. func (m *MockClient) Watch(devfilePath string, devfileObj parser.DevfileObj, path string, ignorePaths []string, out io.Writer, h Handler, ctx context.Context, debug bool, buildCommand, runCommand string, variables map[string]string, randomPorts, watchFiles bool, errOut io.Writer, componentStatus watch.ComponentStatus) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Watch", devfilePath, devfileObj, path, ignorePaths, out, h, ctx, debug, buildCommand, runCommand, variables, randomPorts, watchFiles, errOut, componentStatus) @@ -61,36 +61,36 @@ func (m *MockClient) Watch(devfilePath string, devfileObj parser.DevfileObj, pat return ret0 } -// Watch indicates an expected call of Watch +// Watch indicates an expected call of Watch. func (mr *MockClientMockRecorder) Watch(devfilePath, devfileObj, path, ignorePaths, out, h, ctx, debug, buildCommand, runCommand, variables, randomPorts, watchFiles, errOut, componentStatus interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Watch", reflect.TypeOf((*MockClient)(nil).Watch), devfilePath, devfileObj, path, ignorePaths, out, h, ctx, debug, buildCommand, runCommand, variables, randomPorts, watchFiles, errOut, componentStatus) } -// MockHandler is a mock of Handler interface +// MockHandler is a mock of Handler interface. type MockHandler struct { ctrl *gomock.Controller recorder *MockHandlerMockRecorder } -// MockHandlerMockRecorder is the mock recorder for MockHandler +// MockHandlerMockRecorder is the mock recorder for MockHandler. type MockHandlerMockRecorder struct { mock *MockHandler } -// NewMockHandler creates a new mock instance +// NewMockHandler creates a new mock instance. func NewMockHandler(ctrl *gomock.Controller) *MockHandler { mock := &MockHandler{ctrl: ctrl} mock.recorder = &MockHandlerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockHandler) EXPECT() *MockHandlerMockRecorder { return m.recorder } -// RegenerateAdapterAndPush mocks base method +// RegenerateAdapterAndPush mocks base method. func (m *MockHandler) RegenerateAdapterAndPush(arg0 adapters.PushParameters, arg1 watch.WatchParameters, arg2 *watch.ComponentStatus) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RegenerateAdapterAndPush", arg0, arg1, arg2) @@ -98,7 +98,7 @@ func (m *MockHandler) RegenerateAdapterAndPush(arg0 adapters.PushParameters, arg return ret0 } -// RegenerateAdapterAndPush indicates an expected call of RegenerateAdapterAndPush +// RegenerateAdapterAndPush indicates an expected call of RegenerateAdapterAndPush. func (mr *MockHandlerMockRecorder) RegenerateAdapterAndPush(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegenerateAdapterAndPush", reflect.TypeOf((*MockHandler)(nil).RegenerateAdapterAndPush), arg0, arg1, arg2) diff --git a/pkg/devfile/adapters/kubernetes/component/adapter.go b/pkg/devfile/adapters/kubernetes/component/adapter.go index a18bb05edb2..14e8b0428d3 100644 --- a/pkg/devfile/adapters/kubernetes/component/adapter.go +++ b/pkg/devfile/adapters/kubernetes/component/adapter.go @@ -26,7 +26,6 @@ import ( "github.com/redhat-developer/odo/pkg/service" storagepkg "github.com/redhat-developer/odo/pkg/storage" "github.com/redhat-developer/odo/pkg/sync" - "github.com/redhat-developer/odo/pkg/testingutil/filesystem" "github.com/redhat-developer/odo/pkg/util" "github.com/redhat-developer/odo/pkg/watch" @@ -55,11 +54,10 @@ type Adapter struct { // AdapterContext is a construct that is common to all adapters type AdapterContext struct { - ComponentName string // ComponentName is the odo component name, it is NOT related to any devfile components - Context string // Context is the given directory containing the source code and configs - AppName string // the application name associated to a component - Devfile parser.DevfileObj // Devfile is the object returned by the Devfile parser - FS filesystem.Filesystem // FS is the object used for building image component if present + ComponentName string // ComponentName is the odo component name, it is NOT related to any devfile components + Context string // Context is the given directory containing the source code and configs + AppName string // the application name associated to a component + Devfile parser.DevfileObj // Devfile is the object returned by the Devfile parser } var _ sync.SyncClient = (*Adapter)(nil) @@ -115,7 +113,7 @@ func (a Adapter) Push(parameters adapters.PushParameters, componentStatus *watch } // Set the mode to Dev since we are using "odo dev" here - labels := odolabels.GetLabels(a.ComponentName, a.AppName, odolabels.ComponentDevMode, false) + labels := odolabels.GetLabels(a.ComponentName, a.AppName, odolabels.ComponentDevMode) k8sComponents, err := a.pushDevfileKubernetesComponents(labels) if err != nil { @@ -199,6 +197,7 @@ func (a Adapter) Push(parameters adapters.PushParameters, componentStatus *watch if err != nil { return fmt.Errorf("error while retrieving container from pod %s with a mounted project volume: %w", pod.GetName(), err) } + //s.End(true) s := log.Spinner("Syncing files into the container") defer s.End(false) @@ -275,8 +274,8 @@ func (a Adapter) Push(parameters adapters.PushParameters, componentStatus *watch return err } } else if commandType == devfilev1.CompositeCommandType { - // this handler will run each command in this composite command individually, - // and will determine whether each command is running or not. + //this handler will run each command in this composite command individually, + //and will determine whether each command is running or not. isComposite = true } else { return fmt.Errorf("unsupported type %q for Devfile command %s, only exec and composite are handled", @@ -359,7 +358,8 @@ func (a *Adapter) createOrUpdateComponent( } // Set the labels - labels := odolabels.GetLabels(componentName, a.AppName, odolabels.ComponentDevMode, true) + labels := odolabels.GetLabels(componentName, a.AppName, odolabels.ComponentDevMode) + labels["component"] = componentName annotations := make(map[string]string) odolabels.SetProjectType(annotations, component.GetComponentTypeFromDevfileMetadata(a.AdapterContext.Devfile.Data.GetMetadata())) diff --git a/pkg/devfile/adapters/kubernetes/component/adapter_test.go b/pkg/devfile/adapters/kubernetes/component/adapter_test.go index 4a68c913ade..e5867d2192f 100644 --- a/pkg/devfile/adapters/kubernetes/component/adapter_test.go +++ b/pkg/devfile/adapters/kubernetes/component/adapter_test.go @@ -299,13 +299,13 @@ func TestAdapter_generateDeploymentObjectMeta(t *testing.T) { fields: fields{ componentName: "nodejs", appName: "app", - deployment: odoTestingUtil.CreateFakeDeployment("nodejs", false), + deployment: odoTestingUtil.CreateFakeDeployment("nodejs"), }, args: args{ - labels: odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, + labels: odoTestingUtil.CreateFakeDeployment("nodejs").Labels, annotations: nil, }, - want: generator.GetObjectMeta("nodejs", "project-0", odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, nil), + want: generator.GetObjectMeta("nodejs", "project-0", odoTestingUtil.CreateFakeDeployment("nodejs").Labels, nil), wantErr: false, }, { @@ -316,10 +316,10 @@ func TestAdapter_generateDeploymentObjectMeta(t *testing.T) { deployment: nil, }, args: args{ - labels: odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, + labels: odoTestingUtil.CreateFakeDeployment("nodejs").Labels, annotations: nil, }, - want: generator.GetObjectMeta(namespacedKubernetesName, "project-0", odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, nil), + want: generator.GetObjectMeta(namespacedKubernetesName, "project-0", odoTestingUtil.CreateFakeDeployment("nodejs").Labels, nil), wantErr: false, }, { @@ -327,13 +327,13 @@ func TestAdapter_generateDeploymentObjectMeta(t *testing.T) { fields: fields{ componentName: "nodejs", appName: "app", - deployment: odoTestingUtil.CreateFakeDeployment("nodejs", false), + deployment: odoTestingUtil.CreateFakeDeployment("nodejs"), }, args: args{ - labels: odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, + labels: odoTestingUtil.CreateFakeDeployment("nodejs").Labels, annotations: odolabels.Builder().WithMode(odolabels.ComponentDevMode).Labels(), }, - want: generator.GetObjectMeta("nodejs", "project-0", odoTestingUtil.CreateFakeDeployment("nodejs", false).Labels, odolabels.Builder().WithMode(odolabels.ComponentDevMode).Labels()), + want: generator.GetObjectMeta("nodejs", "project-0", odoTestingUtil.CreateFakeDeployment("nodejs").Labels, odolabels.Builder().WithMode(odolabels.ComponentDevMode).Labels()), wantErr: false, }, } diff --git a/pkg/devfile/adapters/kubernetes/component/commandhandler.go b/pkg/devfile/adapters/kubernetes/component/commandhandler.go index c4e4d71a17c..ba1e3661391 100644 --- a/pkg/devfile/adapters/kubernetes/component/commandhandler.go +++ b/pkg/devfile/adapters/kubernetes/component/commandhandler.go @@ -6,19 +6,13 @@ import ( "time" devfilev1 "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" - "github.com/devfile/library/pkg/devfile/parser" - devfilefs "github.com/devfile/library/pkg/testingutil/filesystem" "k8s.io/klog" "github.com/redhat-developer/odo/pkg/component" "github.com/redhat-developer/odo/pkg/devfile/adapters" - "github.com/redhat-developer/odo/pkg/devfile/image" - "github.com/redhat-developer/odo/pkg/kclient" - odolabels "github.com/redhat-developer/odo/pkg/labels" "github.com/redhat-developer/odo/pkg/libdevfile" "github.com/redhat-developer/odo/pkg/log" "github.com/redhat-developer/odo/pkg/remotecmd" - "github.com/redhat-developer/odo/pkg/service" "github.com/redhat-developer/odo/pkg/sync" "github.com/redhat-developer/odo/pkg/task" "github.com/redhat-developer/odo/pkg/util" @@ -37,12 +31,14 @@ var _ libdevfile.Handler = (*adapterHandler)(nil) var _ ComponentAdapter = (*adapterHandler)(nil) var _ sync.SyncClient = (*adapterHandler)(nil) -func (a *adapterHandler) ApplyImage(img devfilev1.Component) error { - return image.BuildPushSpecificImage(a.FS, a.parameters.Path, img, true) +func (a *adapterHandler) ApplyImage(_ devfilev1.Component) error { + klog.V(2).Info("this handler can only handle exec commands in container components, not image components") + return nil } -func (a *adapterHandler) ApplyKubernetes(kubernetes devfilev1.Component) error { - return ApplyKubernetes(odolabels.ComponentDevMode, a.AppName, a.Devfile, kubernetes, a.kubeClient, a.parameters.Path) +func (a *adapterHandler) ApplyKubernetes(_ devfilev1.Component) error { + klog.V(2).Info("this handler can only handle exec commands in container components, not Kubernetes components") + return nil } func (a *adapterHandler) Execute(devfileCmd devfilev1.Command) error { @@ -130,47 +126,6 @@ func (a *adapterHandler) Execute(devfileCmd devfilev1.Command) error { fmt.Sprintf("Devfile command %q exited with an error status in %.0f second(s)", devfileCmd.Id, totalWaitTime)) } -// ApplyKubernetes contains the logic to create the k8s resources defined by the `apply` command -// mode(Dev, Deploy): the mode in which the resources are deployed -// appName: application name -// devfile: the devfile object -// kubernetes: the kubernetes devfile component to be deployed -// kubeClient: Kubernetes client to be used to deploy the resource -// path: path to the context directory -func ApplyKubernetes(mode, appName string, devfile parser.DevfileObj, kubernetes devfilev1.Component, kubeClient kclient.ClientInterface, path string) error { - // Validate if the GVRs represented by Kubernetes inlined components are supported by the underlying cluster - _, err := ValidateResourceExist(kubeClient, devfile, kubernetes, path) - if err != nil { - return err - } - - // Get the most common labels that's applicable to all resources being deployed. - // Set the mode. Regardless of what Kubernetes resource we are deploying. - labels := odolabels.GetLabels(devfile.Data.GetMetadata().Name, appName, mode, false) - - klog.V(4).Infof("Injecting labels: %+v into k8s artifact", labels) - - // Create the annotations - // Retrieve the component type from the devfile and also inject it into the list of annotations - annotations := make(map[string]string) - odolabels.SetProjectType(annotations, component.GetComponentTypeFromDevfileMetadata(devfile.Data.GetMetadata())) - - // Get the Kubernetes component - u, err := libdevfile.GetK8sComponentAsUnstructured(devfile, kubernetes.Name, path, devfilefs.DefaultFs{}) - if err != nil { - return err - } - - // Deploy the actual Kubernetes component and error out if there's an issue. - log.Sectionf("Deploying Kubernetes Component: %s", u.GetName()) - _, err = service.PushKubernetesResource(kubeClient, u, labels, annotations) - if err != nil { - return fmt.Errorf("failed to create service(s) associated with the component: %w", err) - } - - return nil -} - // devfileCommandToRemoteCmdDefinition builds and returns a new remotecmd.CommandDefinition object from the specified devfileCmd. // An error is returned for non-exec Devfile commands. func devfileCommandToRemoteCmdDefinition(devfileCmd devfilev1.Command) (remotecmd.CommandDefinition, error) { diff --git a/pkg/devfile/adapters/kubernetes/component/push.go b/pkg/devfile/adapters/kubernetes/component/push.go index 42dac135c39..a1ed481e1d9 100644 --- a/pkg/devfile/adapters/kubernetes/component/push.go +++ b/pkg/devfile/adapters/kubernetes/component/push.go @@ -5,9 +5,6 @@ import ( "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" devfilev1 "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" - appsv1 "k8s.io/api/apps/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/redhat-developer/odo/pkg/component" "github.com/redhat-developer/odo/pkg/devfile" "github.com/redhat-developer/odo/pkg/devfile/adapters" @@ -15,6 +12,8 @@ import ( odolabels "github.com/redhat-developer/odo/pkg/labels" "github.com/redhat-developer/odo/pkg/libdevfile" "github.com/redhat-developer/odo/pkg/service" + appsv1 "k8s.io/api/apps/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // getComponentDeployment returns the deployment associated with the component, if deployed @@ -23,7 +22,7 @@ func (a *Adapter) getComponentDeployment() (*appsv1.Deployment, bool, error) { // Get the Dev deployment: // Since `odo deploy` can theoretically deploy a deployment as well with the same instance name // we make sure that we are retrieving the deployment with the Dev mode, NOT Deploy. - selectorLabels := odolabels.GetSelector(a.ComponentName, a.AppName, odolabels.ComponentDevMode, true) + selectorLabels := odolabels.GetSelector(a.ComponentName, a.AppName, odolabels.ComponentDevMode) deployment, err := a.kubeClient.GetOneDeploymentFromSelector(selectorLabels) if err != nil { @@ -48,7 +47,7 @@ func (a *Adapter) pushDevfileKubernetesComponents( } // validate if the GVRs represented by Kubernetes inlined components are supported by the underlying cluster - err = ValidateResourcesExist(a.kubeClient, a.Devfile, k8sComponents, a.Context) + err = service.ValidateResourcesExist(a.kubeClient, a.Devfile, k8sComponents, a.Context) if err != nil { return nil, err } diff --git a/pkg/devfile/adapters/kubernetes/component/utils.go b/pkg/devfile/adapters/kubernetes/component/utils.go deleted file mode 100644 index e677a7209af..00000000000 --- a/pkg/devfile/adapters/kubernetes/component/utils.go +++ /dev/null @@ -1,57 +0,0 @@ -package component - -import ( - "errors" - "fmt" - "strings" - - devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" - "github.com/devfile/library/pkg/devfile/parser" - devfilefs "github.com/devfile/library/pkg/testingutil/filesystem" - - "github.com/redhat-developer/odo/pkg/kclient" - "github.com/redhat-developer/odo/pkg/libdevfile" -) - -// ValidateResourcesExist validates if the Kubernetes inlined components are installed on the cluster -func ValidateResourcesExist(client kclient.ClientInterface, devfileObj parser.DevfileObj, k8sComponents []devfile.Component, context string) error { - if len(k8sComponents) == 0 { - return nil - } - - var unsupportedResources []string - for _, c := range k8sComponents { - kindErr, err := ValidateResourceExist(client, devfileObj, c, context) - if err != nil { - if kindErr != "" { - unsupportedResources = append(unsupportedResources, kindErr) - } else { - return err - } - } - } - - if len(unsupportedResources) > 0 { - // tell the user about all the unsupported resources in one message - return fmt.Errorf("following resource(s) in the devfile are not supported by your cluster; please install corresponding Operator(s) before doing \"odo dev\": %s", strings.Join(unsupportedResources, ", ")) - } - return nil -} - -// ValidateResourceExist validates if a Kubernetes inlined component is installed on the cluster -func ValidateResourceExist(client kclient.ClientInterface, devfileObj parser.DevfileObj, k8sComponent devfile.Component, context string) (kindErr string, err error) { - // get the string representation of the YAML definition of a CRD - u, err := libdevfile.GetK8sComponentAsUnstructured(devfileObj, k8sComponent.Name, context, devfilefs.DefaultFs{}) - if err != nil { - return "", err - } - - _, err = client.GetRestMappingFromUnstructured(u) - if err != nil && u.GetKind() != "ServiceBinding" { - // getting a RestMapping would fail if there are no matches for the Kind field on the cluster; - // but if it's a "ServiceBinding" resource, we don't add it to unsupported list because odo can create links - // without having SBO installed - return u.GetKind(), errors.New("resource not supported") - } - return "", nil -} diff --git a/pkg/kclient/deployments.go b/pkg/kclient/deployments.go index 54b63a8a592..5fc1e933e7a 100644 --- a/pkg/kclient/deployments.go +++ b/pkg/kclient/deployments.go @@ -37,8 +37,8 @@ func (c *Client) GetDeploymentByName(name string) (*appsv1.Deployment, error) { } // GetOneDeployment returns the Deployment object associated with the given component and app -func (c *Client) GetOneDeployment(componentName, appName string, isPartOfComponent bool) (*appsv1.Deployment, error) { - selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode, isPartOfComponent) +func (c *Client) GetOneDeployment(componentName, appName string) (*appsv1.Deployment, error) { + selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode) return c.GetOneDeploymentFromSelector(selector) } diff --git a/pkg/kclient/deployments_test.go b/pkg/kclient/deployments_test.go index 09535fa53fd..7b4b0f7f8c1 100644 --- a/pkg/kclient/deployments_test.go +++ b/pkg/kclient/deployments_test.go @@ -158,10 +158,10 @@ func TestGetDeploymentByName(t *testing.T) { fkclientset.Kubernetes.PrependReactor("get", "deployments", func(action ktesting.Action) (bool, runtime.Object, error) { if tt.deploymentName == "mydeploy2" { - emptyDeployment := odoTestingUtil.CreateFakeDeployment("", false) + emptyDeployment := odoTestingUtil.CreateFakeDeployment("") return true, emptyDeployment, nil } else if tt.deploymentName == "mydeploy1" { - deployment := odoTestingUtil.CreateFakeDeployment(tt.deploymentName, false) + deployment := odoTestingUtil.CreateFakeDeployment(tt.deploymentName) return true, deployment, nil } else { return true, nil, errors.New("deployment get error") diff --git a/pkg/kclient/interface.go b/pkg/kclient/interface.go index ffbbbb7ff4c..ffbaba42e6f 100644 --- a/pkg/kclient/interface.go +++ b/pkg/kclient/interface.go @@ -8,8 +8,6 @@ import ( "github.com/go-openapi/spec" projectv1 "github.com/openshift/api/project/v1" olm "github.com/operator-framework/api/pkg/operators/v1alpha1" - bindingApi "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1" - specApi "github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" @@ -24,6 +22,8 @@ import ( "k8s.io/client-go/tools/clientcmd" "github.com/redhat-developer/odo/pkg/api" + bindingApi "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1" + specApi "github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3" ) type ClientInterface interface { @@ -47,7 +47,7 @@ type ClientInterface interface { // deployment.go GetDeploymentByName(name string) (*appsv1.Deployment, error) - GetOneDeployment(componentName, appName string, isPartOfComponent bool) (*appsv1.Deployment, error) + GetOneDeployment(componentName, appName string) (*appsv1.Deployment, error) GetOneDeploymentFromSelector(selector string) (*appsv1.Deployment, error) GetDeploymentFromSelector(selector string) ([]appsv1.Deployment, error) CreateDeployment(deploy appsv1.Deployment) (*appsv1.Deployment, error) diff --git a/pkg/kclient/mock_Client.go b/pkg/kclient/mock_Client.go index 53f5decec72..63b1d2582c2 100644 --- a/pkg/kclient/mock_Client.go +++ b/pkg/kclient/mock_Client.go @@ -6,6 +6,10 @@ package kclient import ( context "context" + io "io" + reflect "reflect" + time "time" + spec "github.com/go-openapi/spec" gomock "github.com/golang/mock/gomock" v1 "github.com/openshift/api/project/v1" @@ -13,7 +17,6 @@ import ( api "github.com/redhat-developer/odo/pkg/api" v1alpha10 "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1" v1alpha3 "github.com/redhat-developer/service-binding-operator/apis/spec/v1alpha3" - io "io" v10 "k8s.io/api/apps/v1" v11 "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/api/meta" @@ -26,335 +29,277 @@ import ( kubernetes "k8s.io/client-go/kubernetes" rest "k8s.io/client-go/rest" clientcmd "k8s.io/client-go/tools/clientcmd" - reflect "reflect" - time "time" ) -// MockClientInterface is a mock of ClientInterface interface +// MockClientInterface is a mock of ClientInterface interface. type MockClientInterface struct { ctrl *gomock.Controller recorder *MockClientInterfaceMockRecorder } -// MockClientInterfaceMockRecorder is the mock recorder for MockClientInterface +// MockClientInterfaceMockRecorder is the mock recorder for MockClientInterface. type MockClientInterfaceMockRecorder struct { mock *MockClientInterface } -// NewMockClientInterface creates a new mock instance +// NewMockClientInterface creates a new mock instance. func NewMockClientInterface(ctrl *gomock.Controller) *MockClientInterface { mock := &MockClientInterface{ctrl: ctrl} mock.recorder = &MockClientInterfaceMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockClientInterface) EXPECT() *MockClientInterfaceMockRecorder { return m.recorder } -// GetAllResourcesFromSelector mocks base method -func (m *MockClientInterface) GetAllResourcesFromSelector(selector, ns string) ([]unstructured.Unstructured, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAllResourcesFromSelector", selector, ns) - ret0, _ := ret[0].([]unstructured.Unstructured) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// GetAllResourcesFromSelector indicates an expected call of GetAllResourcesFromSelector -func (mr *MockClientInterfaceMockRecorder) GetAllResourcesFromSelector(selector, ns interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllResourcesFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetAllResourcesFromSelector), selector, ns) -} - -// IsServiceBindingSupported mocks base method -func (m *MockClientInterface) IsServiceBindingSupported() (bool, error) { +// APIServiceBindingFromBinding mocks base method. +func (m *MockClientInterface) APIServiceBindingFromBinding(binding v1alpha10.ServiceBinding) (api.ServiceBinding, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsServiceBindingSupported") - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "APIServiceBindingFromBinding", binding) + ret0, _ := ret[0].(api.ServiceBinding) ret1, _ := ret[1].(error) return ret0, ret1 } -// IsServiceBindingSupported indicates an expected call of IsServiceBindingSupported -func (mr *MockClientInterfaceMockRecorder) IsServiceBindingSupported() *gomock.Call { +// APIServiceBindingFromBinding indicates an expected call of APIServiceBindingFromBinding. +func (mr *MockClientInterfaceMockRecorder) APIServiceBindingFromBinding(binding interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsServiceBindingSupported", reflect.TypeOf((*MockClientInterface)(nil).IsServiceBindingSupported)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIServiceBindingFromBinding", reflect.TypeOf((*MockClientInterface)(nil).APIServiceBindingFromBinding), binding) } -// GetBindableKinds mocks base method -func (m *MockClientInterface) GetBindableKinds() (v1alpha10.BindableKinds, error) { +// APIServiceBindingFromSpec mocks base method. +func (m *MockClientInterface) APIServiceBindingFromSpec(spec v1alpha3.ServiceBinding) api.ServiceBinding { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBindableKinds") - ret0, _ := ret[0].(v1alpha10.BindableKinds) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "APIServiceBindingFromSpec", spec) + ret0, _ := ret[0].(api.ServiceBinding) + return ret0 } -// GetBindableKinds indicates an expected call of GetBindableKinds -func (mr *MockClientInterfaceMockRecorder) GetBindableKinds() *gomock.Call { +// APIServiceBindingFromSpec indicates an expected call of APIServiceBindingFromSpec. +func (mr *MockClientInterfaceMockRecorder) APIServiceBindingFromSpec(spec interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindableKinds", reflect.TypeOf((*MockClientInterface)(nil).GetBindableKinds)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIServiceBindingFromSpec", reflect.TypeOf((*MockClientInterface)(nil).APIServiceBindingFromSpec), spec) } -// GetBindableKindStatusRestMapping mocks base method -func (m *MockClientInterface) GetBindableKindStatusRestMapping(bindableKindStatuses []v1alpha10.BindableKindsStatus) ([]*meta.RESTMapping, error) { +// ApplyDeployment mocks base method. +func (m *MockClientInterface) ApplyDeployment(deploy v10.Deployment) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBindableKindStatusRestMapping", bindableKindStatuses) - ret0, _ := ret[0].([]*meta.RESTMapping) + ret := m.ctrl.Call(m, "ApplyDeployment", deploy) + ret0, _ := ret[0].(*v10.Deployment) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetBindableKindStatusRestMapping indicates an expected call of GetBindableKindStatusRestMapping -func (mr *MockClientInterfaceMockRecorder) GetBindableKindStatusRestMapping(bindableKindStatuses interface{}) *gomock.Call { +// ApplyDeployment indicates an expected call of ApplyDeployment. +func (mr *MockClientInterfaceMockRecorder) ApplyDeployment(deploy interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindableKindStatusRestMapping", reflect.TypeOf((*MockClientInterface)(nil).GetBindableKindStatusRestMapping), bindableKindStatuses) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ApplyDeployment", reflect.TypeOf((*MockClientInterface)(nil).ApplyDeployment), deploy) } -// GetBindingServiceBinding mocks base method -func (m *MockClientInterface) GetBindingServiceBinding(name string) (v1alpha10.ServiceBinding, error) { +// CreateDeployment mocks base method. +func (m *MockClientInterface) CreateDeployment(deploy v10.Deployment) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBindingServiceBinding", name) - ret0, _ := ret[0].(v1alpha10.ServiceBinding) + ret := m.ctrl.Call(m, "CreateDeployment", deploy) + ret0, _ := ret[0].(*v10.Deployment) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetBindingServiceBinding indicates an expected call of GetBindingServiceBinding -func (mr *MockClientInterfaceMockRecorder) GetBindingServiceBinding(name interface{}) *gomock.Call { +// CreateDeployment indicates an expected call of CreateDeployment. +func (mr *MockClientInterfaceMockRecorder) CreateDeployment(deploy interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindingServiceBinding", reflect.TypeOf((*MockClientInterface)(nil).GetBindingServiceBinding), name) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateDeployment", reflect.TypeOf((*MockClientInterface)(nil).CreateDeployment), deploy) } -// GetSpecServiceBinding mocks base method -func (m *MockClientInterface) GetSpecServiceBinding(name string) (v1alpha3.ServiceBinding, error) { +// CreateNamespace mocks base method. +func (m *MockClientInterface) CreateNamespace(name string) (*v11.Namespace, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSpecServiceBinding", name) - ret0, _ := ret[0].(v1alpha3.ServiceBinding) + ret := m.ctrl.Call(m, "CreateNamespace", name) + ret0, _ := ret[0].(*v11.Namespace) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetSpecServiceBinding indicates an expected call of GetSpecServiceBinding -func (mr *MockClientInterfaceMockRecorder) GetSpecServiceBinding(name interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSpecServiceBinding", reflect.TypeOf((*MockClientInterface)(nil).GetSpecServiceBinding), name) -} - -// ListServiceBindingsFromAllGroups mocks base method -func (m *MockClientInterface) ListServiceBindingsFromAllGroups() ([]v1alpha3.ServiceBinding, []v1alpha10.ServiceBinding, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServiceBindingsFromAllGroups") - ret0, _ := ret[0].([]v1alpha3.ServiceBinding) - ret1, _ := ret[1].([]v1alpha10.ServiceBinding) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 -} - -// ListServiceBindingsFromAllGroups indicates an expected call of ListServiceBindingsFromAllGroups -func (mr *MockClientInterfaceMockRecorder) ListServiceBindingsFromAllGroups() *gomock.Call { +// CreateNamespace indicates an expected call of CreateNamespace. +func (mr *MockClientInterfaceMockRecorder) CreateNamespace(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServiceBindingsFromAllGroups", reflect.TypeOf((*MockClientInterface)(nil).ListServiceBindingsFromAllGroups)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNamespace", reflect.TypeOf((*MockClientInterface)(nil).CreateNamespace), name) } -// NewServiceBindingServiceObject mocks base method -func (m *MockClientInterface) NewServiceBindingServiceObject(serviceNs string, unstructuredService unstructured.Unstructured, bindingName string) (v1alpha10.Service, error) { +// CreateNewProject mocks base method. +func (m *MockClientInterface) CreateNewProject(projectName string, wait bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "NewServiceBindingServiceObject", serviceNs, unstructuredService, bindingName) - ret0, _ := ret[0].(v1alpha10.Service) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateNewProject", projectName, wait) + ret0, _ := ret[0].(error) + return ret0 } -// NewServiceBindingServiceObject indicates an expected call of NewServiceBindingServiceObject -func (mr *MockClientInterfaceMockRecorder) NewServiceBindingServiceObject(serviceNs, unstructuredService, bindingName interface{}) *gomock.Call { +// CreateNewProject indicates an expected call of CreateNewProject. +func (mr *MockClientInterfaceMockRecorder) CreateNewProject(projectName, wait interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewServiceBindingServiceObject", reflect.TypeOf((*MockClientInterface)(nil).NewServiceBindingServiceObject), serviceNs, unstructuredService, bindingName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNewProject", reflect.TypeOf((*MockClientInterface)(nil).CreateNewProject), projectName, wait) } -// APIServiceBindingFromBinding mocks base method -func (m *MockClientInterface) APIServiceBindingFromBinding(binding v1alpha10.ServiceBinding) (api.ServiceBinding, error) { +// CreatePVC mocks base method. +func (m *MockClientInterface) CreatePVC(pvc v11.PersistentVolumeClaim) (*v11.PersistentVolumeClaim, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "APIServiceBindingFromBinding", binding) - ret0, _ := ret[0].(api.ServiceBinding) + ret := m.ctrl.Call(m, "CreatePVC", pvc) + ret0, _ := ret[0].(*v11.PersistentVolumeClaim) ret1, _ := ret[1].(error) return ret0, ret1 } -// APIServiceBindingFromBinding indicates an expected call of APIServiceBindingFromBinding -func (mr *MockClientInterfaceMockRecorder) APIServiceBindingFromBinding(binding interface{}) *gomock.Call { +// CreatePVC indicates an expected call of CreatePVC. +func (mr *MockClientInterfaceMockRecorder) CreatePVC(pvc interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIServiceBindingFromBinding", reflect.TypeOf((*MockClientInterface)(nil).APIServiceBindingFromBinding), binding) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePVC", reflect.TypeOf((*MockClientInterface)(nil).CreatePVC), pvc) } -// APIServiceBindingFromSpec mocks base method -func (m *MockClientInterface) APIServiceBindingFromSpec(spec v1alpha3.ServiceBinding) api.ServiceBinding { +// CreateSecret mocks base method. +func (m *MockClientInterface) CreateSecret(objectMeta v12.ObjectMeta, data map[string]string, ownerReference v12.OwnerReference) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "APIServiceBindingFromSpec", spec) - ret0, _ := ret[0].(api.ServiceBinding) + ret := m.ctrl.Call(m, "CreateSecret", objectMeta, data, ownerReference) + ret0, _ := ret[0].(error) return ret0 } -// APIServiceBindingFromSpec indicates an expected call of APIServiceBindingFromSpec -func (mr *MockClientInterfaceMockRecorder) APIServiceBindingFromSpec(spec interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIServiceBindingFromSpec", reflect.TypeOf((*MockClientInterface)(nil).APIServiceBindingFromSpec), spec) -} - -// GetWorkloadKinds mocks base method -func (m *MockClientInterface) GetWorkloadKinds() ([]string, []schema.GroupVersionKind, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetWorkloadKinds") - ret0, _ := ret[0].([]string) - ret1, _ := ret[1].([]schema.GroupVersionKind) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 -} - -// GetWorkloadKinds indicates an expected call of GetWorkloadKinds -func (mr *MockClientInterfaceMockRecorder) GetWorkloadKinds() *gomock.Call { +// CreateSecret indicates an expected call of CreateSecret. +func (mr *MockClientInterfaceMockRecorder) CreateSecret(objectMeta, data, ownerReference interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkloadKinds", reflect.TypeOf((*MockClientInterface)(nil).GetWorkloadKinds)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecret", reflect.TypeOf((*MockClientInterface)(nil).CreateSecret), objectMeta, data, ownerReference) } -// GetDeploymentByName mocks base method -func (m *MockClientInterface) GetDeploymentByName(name string) (*v10.Deployment, error) { +// CreateSecrets mocks base method. +func (m *MockClientInterface) CreateSecrets(componentName string, commonObjectMeta v12.ObjectMeta, svc *v11.Service, ownerReference v12.OwnerReference) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDeploymentByName", name) - ret0, _ := ret[0].(*v10.Deployment) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "CreateSecrets", componentName, commonObjectMeta, svc, ownerReference) + ret0, _ := ret[0].(error) + return ret0 } -// GetDeploymentByName indicates an expected call of GetDeploymentByName -func (mr *MockClientInterfaceMockRecorder) GetDeploymentByName(name interface{}) *gomock.Call { +// CreateSecrets indicates an expected call of CreateSecrets. +func (mr *MockClientInterfaceMockRecorder) CreateSecrets(componentName, commonObjectMeta, svc, ownerReference interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentByName", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentByName), name) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecrets", reflect.TypeOf((*MockClientInterface)(nil).CreateSecrets), componentName, commonObjectMeta, svc, ownerReference) } -// GetOneDeployment mocks base method -func (m *MockClientInterface) GetOneDeployment(componentName, appName string, isPartOfComponent bool) (*v10.Deployment, error) { +// CreateService mocks base method. +func (m *MockClientInterface) CreateService(svc v11.Service) (*v11.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOneDeployment", componentName, appName, isPartOfComponent) - ret0, _ := ret[0].(*v10.Deployment) + ret := m.ctrl.Call(m, "CreateService", svc) + ret0, _ := ret[0].(*v11.Service) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetOneDeployment indicates an expected call of GetOneDeployment -func (mr *MockClientInterfaceMockRecorder) GetOneDeployment(componentName, appName, isPartOfComponent interface{}) *gomock.Call { +// CreateService indicates an expected call of CreateService. +func (mr *MockClientInterfaceMockRecorder) CreateService(svc interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneDeployment", reflect.TypeOf((*MockClientInterface)(nil).GetOneDeployment), componentName, appName, isPartOfComponent) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateService", reflect.TypeOf((*MockClientInterface)(nil).CreateService), svc) } -// GetOneDeploymentFromSelector mocks base method -func (m *MockClientInterface) GetOneDeploymentFromSelector(selector string) (*v10.Deployment, error) { +// CreateTLSSecret mocks base method. +func (m *MockClientInterface) CreateTLSSecret(tlsCertificate, tlsPrivKey []byte, objectMeta v12.ObjectMeta) (*v11.Secret, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOneDeploymentFromSelector", selector) - ret0, _ := ret[0].(*v10.Deployment) + ret := m.ctrl.Call(m, "CreateTLSSecret", tlsCertificate, tlsPrivKey, objectMeta) + ret0, _ := ret[0].(*v11.Secret) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetOneDeploymentFromSelector indicates an expected call of GetOneDeploymentFromSelector -func (mr *MockClientInterfaceMockRecorder) GetOneDeploymentFromSelector(selector interface{}) *gomock.Call { +// CreateTLSSecret indicates an expected call of CreateTLSSecret. +func (mr *MockClientInterfaceMockRecorder) CreateTLSSecret(tlsCertificate, tlsPrivKey, objectMeta interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneDeploymentFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetOneDeploymentFromSelector), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTLSSecret", reflect.TypeOf((*MockClientInterface)(nil).CreateTLSSecret), tlsCertificate, tlsPrivKey, objectMeta) } -// GetDeploymentFromSelector mocks base method -func (m *MockClientInterface) GetDeploymentFromSelector(selector string) ([]v10.Deployment, error) { +// DeleteDynamicResource mocks base method. +func (m *MockClientInterface) DeleteDynamicResource(name string, gvr schema.GroupVersionResource, wait bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDeploymentFromSelector", selector) - ret0, _ := ret[0].([]v10.Deployment) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteDynamicResource", name, gvr, wait) + ret0, _ := ret[0].(error) + return ret0 } -// GetDeploymentFromSelector indicates an expected call of GetDeploymentFromSelector -func (mr *MockClientInterfaceMockRecorder) GetDeploymentFromSelector(selector interface{}) *gomock.Call { +// DeleteDynamicResource indicates an expected call of DeleteDynamicResource. +func (mr *MockClientInterfaceMockRecorder) DeleteDynamicResource(name, gvr, wait interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentFromSelector), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).DeleteDynamicResource), name, gvr, wait) } -// CreateDeployment mocks base method -func (m *MockClientInterface) CreateDeployment(deploy v10.Deployment) (*v10.Deployment, error) { +// DeleteNamespace mocks base method. +func (m *MockClientInterface) DeleteNamespace(name string, wait bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateDeployment", deploy) - ret0, _ := ret[0].(*v10.Deployment) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteNamespace", name, wait) + ret0, _ := ret[0].(error) + return ret0 } -// CreateDeployment indicates an expected call of CreateDeployment -func (mr *MockClientInterfaceMockRecorder) CreateDeployment(deploy interface{}) *gomock.Call { +// DeleteNamespace indicates an expected call of DeleteNamespace. +func (mr *MockClientInterfaceMockRecorder) DeleteNamespace(name, wait interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateDeployment", reflect.TypeOf((*MockClientInterface)(nil).CreateDeployment), deploy) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNamespace", reflect.TypeOf((*MockClientInterface)(nil).DeleteNamespace), name, wait) } -// UpdateDeployment mocks base method -func (m *MockClientInterface) UpdateDeployment(deploy v10.Deployment) (*v10.Deployment, error) { +// DeletePVC mocks base method. +func (m *MockClientInterface) DeletePVC(pvcName string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateDeployment", deploy) - ret0, _ := ret[0].(*v10.Deployment) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeletePVC", pvcName) + ret0, _ := ret[0].(error) + return ret0 } -// UpdateDeployment indicates an expected call of UpdateDeployment -func (mr *MockClientInterfaceMockRecorder) UpdateDeployment(deploy interface{}) *gomock.Call { +// DeletePVC indicates an expected call of DeletePVC. +func (mr *MockClientInterfaceMockRecorder) DeletePVC(pvcName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDeployment", reflect.TypeOf((*MockClientInterface)(nil).UpdateDeployment), deploy) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePVC", reflect.TypeOf((*MockClientInterface)(nil).DeletePVC), pvcName) } -// ApplyDeployment mocks base method -func (m *MockClientInterface) ApplyDeployment(deploy v10.Deployment) (*v10.Deployment, error) { +// DeleteProject mocks base method. +func (m *MockClientInterface) DeleteProject(name string, wait bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ApplyDeployment", deploy) - ret0, _ := ret[0].(*v10.Deployment) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteProject", name, wait) + ret0, _ := ret[0].(error) + return ret0 } -// ApplyDeployment indicates an expected call of ApplyDeployment -func (mr *MockClientInterfaceMockRecorder) ApplyDeployment(deploy interface{}) *gomock.Call { +// DeleteProject indicates an expected call of DeleteProject. +func (mr *MockClientInterfaceMockRecorder) DeleteProject(name, wait interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ApplyDeployment", reflect.TypeOf((*MockClientInterface)(nil).ApplyDeployment), deploy) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProject", reflect.TypeOf((*MockClientInterface)(nil).DeleteProject), name, wait) } -// GetDeploymentAPIVersion mocks base method -func (m *MockClientInterface) GetDeploymentAPIVersion() (schema.GroupVersionKind, error) { +// DeleteSecret mocks base method. +func (m *MockClientInterface) DeleteSecret(secretName, namespace string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDeploymentAPIVersion") - ret0, _ := ret[0].(schema.GroupVersionKind) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteSecret", secretName, namespace) + ret0, _ := ret[0].(error) + return ret0 } -// GetDeploymentAPIVersion indicates an expected call of GetDeploymentAPIVersion -func (mr *MockClientInterfaceMockRecorder) GetDeploymentAPIVersion() *gomock.Call { +// DeleteSecret indicates an expected call of DeleteSecret. +func (mr *MockClientInterfaceMockRecorder) DeleteSecret(secretName, namespace interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentAPIVersion", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentAPIVersion)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecret", reflect.TypeOf((*MockClientInterface)(nil).DeleteSecret), secretName, namespace) } -// IsDeploymentExtensionsV1Beta1 mocks base method -func (m *MockClientInterface) IsDeploymentExtensionsV1Beta1() (bool, error) { +// DeleteService mocks base method. +func (m *MockClientInterface) DeleteService(serviceName string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsDeploymentExtensionsV1Beta1") - ret0, _ := ret[0].(bool) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "DeleteService", serviceName) + ret0, _ := ret[0].(error) + return ret0 } -// IsDeploymentExtensionsV1Beta1 indicates an expected call of IsDeploymentExtensionsV1Beta1 -func (mr *MockClientInterfaceMockRecorder) IsDeploymentExtensionsV1Beta1() *gomock.Call { +// DeleteService indicates an expected call of DeleteService. +func (mr *MockClientInterfaceMockRecorder) DeleteService(serviceName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsDeploymentExtensionsV1Beta1", reflect.TypeOf((*MockClientInterface)(nil).IsDeploymentExtensionsV1Beta1)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteService", reflect.TypeOf((*MockClientInterface)(nil).DeleteService), serviceName) } -// DeploymentWatcher mocks base method +// DeploymentWatcher mocks base method. func (m *MockClientInterface) DeploymentWatcher(ctx context.Context, selector string) (watch.Interface, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "DeploymentWatcher", ctx, selector) @@ -363,102 +308,145 @@ func (m *MockClientInterface) DeploymentWatcher(ctx context.Context, selector st return ret0, ret1 } -// DeploymentWatcher indicates an expected call of DeploymentWatcher +// DeploymentWatcher indicates an expected call of DeploymentWatcher. func (mr *MockClientInterfaceMockRecorder) DeploymentWatcher(ctx, selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeploymentWatcher", reflect.TypeOf((*MockClientInterface)(nil).DeploymentWatcher), ctx, selector) } -// PatchDynamicResource mocks base method -func (m *MockClientInterface) PatchDynamicResource(exampleCustomResource unstructured.Unstructured) (bool, error) { +// ExecCMDInContainer mocks base method. +func (m *MockClientInterface) ExecCMDInContainer(containerName, podName string, cmd []string, stdout, stderr io.Writer, stdin io.Reader, tty bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchDynamicResource", exampleCustomResource) - ret0, _ := ret[0].(bool) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "ExecCMDInContainer", containerName, podName, cmd, stdout, stderr, stdin, tty) + ret0, _ := ret[0].(error) + return ret0 } -// PatchDynamicResource indicates an expected call of PatchDynamicResource -func (mr *MockClientInterfaceMockRecorder) PatchDynamicResource(exampleCustomResource interface{}) *gomock.Call { +// ExecCMDInContainer indicates an expected call of ExecCMDInContainer. +func (mr *MockClientInterfaceMockRecorder) ExecCMDInContainer(containerName, podName, cmd, stdout, stderr, stdin, tty interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).PatchDynamicResource), exampleCustomResource) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExecCMDInContainer", reflect.TypeOf((*MockClientInterface)(nil).ExecCMDInContainer), containerName, podName, cmd, stdout, stderr, stdin, tty) } -// ListDynamicResources mocks base method -func (m *MockClientInterface) ListDynamicResources(namespace string, gvr schema.GroupVersionResource) (*unstructured.UnstructuredList, error) { +// ExtractProjectToComponent mocks base method. +func (m *MockClientInterface) ExtractProjectToComponent(containerName, podName, targetPath string, stdin io.Reader) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListDynamicResources", namespace, gvr) - ret0, _ := ret[0].(*unstructured.UnstructuredList) + ret := m.ctrl.Call(m, "ExtractProjectToComponent", containerName, podName, targetPath, stdin) + ret0, _ := ret[0].(error) + return ret0 +} + +// ExtractProjectToComponent indicates an expected call of ExtractProjectToComponent. +func (mr *MockClientInterfaceMockRecorder) ExtractProjectToComponent(containerName, podName, targetPath, stdin interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExtractProjectToComponent", reflect.TypeOf((*MockClientInterface)(nil).ExtractProjectToComponent), containerName, podName, targetPath, stdin) +} + +// GeneratePortForwardReq mocks base method. +func (m *MockClientInterface) GeneratePortForwardReq(podName string) *rest.Request { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GeneratePortForwardReq", podName) + ret0, _ := ret[0].(*rest.Request) + return ret0 +} + +// GeneratePortForwardReq indicates an expected call of GeneratePortForwardReq. +func (mr *MockClientInterfaceMockRecorder) GeneratePortForwardReq(podName interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GeneratePortForwardReq", reflect.TypeOf((*MockClientInterface)(nil).GeneratePortForwardReq), podName) +} + +// GetAllPodsInNamespace mocks base method. +func (m *MockClientInterface) GetAllPodsInNamespace() (*v11.PodList, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetAllPodsInNamespace") + ret0, _ := ret[0].(*v11.PodList) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListDynamicResources indicates an expected call of ListDynamicResources -func (mr *MockClientInterfaceMockRecorder) ListDynamicResources(namespace, gvr interface{}) *gomock.Call { +// GetAllPodsInNamespace indicates an expected call of GetAllPodsInNamespace. +func (mr *MockClientInterfaceMockRecorder) GetAllPodsInNamespace() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDynamicResources", reflect.TypeOf((*MockClientInterface)(nil).ListDynamicResources), namespace, gvr) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllPodsInNamespace", reflect.TypeOf((*MockClientInterface)(nil).GetAllPodsInNamespace)) } -// GetDynamicResource mocks base method -func (m *MockClientInterface) GetDynamicResource(gvr schema.GroupVersionResource, name string) (*unstructured.Unstructured, error) { +// GetAllResourcesFromSelector mocks base method. +func (m *MockClientInterface) GetAllResourcesFromSelector(selector, ns string) ([]unstructured.Unstructured, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDynamicResource", gvr, name) - ret0, _ := ret[0].(*unstructured.Unstructured) + ret := m.ctrl.Call(m, "GetAllResourcesFromSelector", selector, ns) + ret0, _ := ret[0].([]unstructured.Unstructured) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetDynamicResource indicates an expected call of GetDynamicResource -func (mr *MockClientInterfaceMockRecorder) GetDynamicResource(gvr, name interface{}) *gomock.Call { +// GetAllResourcesFromSelector indicates an expected call of GetAllResourcesFromSelector. +func (mr *MockClientInterfaceMockRecorder) GetAllResourcesFromSelector(selector, ns interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).GetDynamicResource), gvr, name) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllResourcesFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetAllResourcesFromSelector), selector, ns) } -// UpdateDynamicResource mocks base method -func (m *MockClientInterface) UpdateDynamicResource(gvr schema.GroupVersionResource, name string, u *unstructured.Unstructured) error { +// GetBindableKindStatusRestMapping mocks base method. +func (m *MockClientInterface) GetBindableKindStatusRestMapping(bindableKindStatuses []v1alpha10.BindableKindsStatus) ([]*meta.RESTMapping, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateDynamicResource", gvr, name, u) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetBindableKindStatusRestMapping", bindableKindStatuses) + ret0, _ := ret[0].([]*meta.RESTMapping) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdateDynamicResource indicates an expected call of UpdateDynamicResource -func (mr *MockClientInterfaceMockRecorder) UpdateDynamicResource(gvr, name, u interface{}) *gomock.Call { +// GetBindableKindStatusRestMapping indicates an expected call of GetBindableKindStatusRestMapping. +func (mr *MockClientInterfaceMockRecorder) GetBindableKindStatusRestMapping(bindableKindStatuses interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).UpdateDynamicResource), gvr, name, u) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindableKindStatusRestMapping", reflect.TypeOf((*MockClientInterface)(nil).GetBindableKindStatusRestMapping), bindableKindStatuses) } -// DeleteDynamicResource mocks base method -func (m *MockClientInterface) DeleteDynamicResource(name string, gvr schema.GroupVersionResource, wait bool) error { +// GetBindableKinds mocks base method. +func (m *MockClientInterface) GetBindableKinds() (v1alpha10.BindableKinds, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteDynamicResource", name, gvr, wait) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetBindableKinds") + ret0, _ := ret[0].(v1alpha10.BindableKinds) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// DeleteDynamicResource indicates an expected call of DeleteDynamicResource -func (mr *MockClientInterfaceMockRecorder) DeleteDynamicResource(name, gvr, wait interface{}) *gomock.Call { +// GetBindableKinds indicates an expected call of GetBindableKinds. +func (mr *MockClientInterfaceMockRecorder) GetBindableKinds() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).DeleteDynamicResource), name, gvr, wait) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindableKinds", reflect.TypeOf((*MockClientInterface)(nil).GetBindableKinds)) } -// PodWarningEventWatcher mocks base method -func (m *MockClientInterface) PodWarningEventWatcher(ctx context.Context) (watch.Interface, bool, error) { +// GetBindingServiceBinding mocks base method. +func (m *MockClientInterface) GetBindingServiceBinding(name string) (v1alpha10.ServiceBinding, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PodWarningEventWatcher", ctx) - ret0, _ := ret[0].(watch.Interface) - ret1, _ := ret[1].(bool) - ret2, _ := ret[2].(error) - return ret0, ret1, ret2 + ret := m.ctrl.Call(m, "GetBindingServiceBinding", name) + ret0, _ := ret[0].(v1alpha10.ServiceBinding) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// PodWarningEventWatcher indicates an expected call of PodWarningEventWatcher -func (mr *MockClientInterfaceMockRecorder) PodWarningEventWatcher(ctx interface{}) *gomock.Call { +// GetBindingServiceBinding indicates an expected call of GetBindingServiceBinding. +func (mr *MockClientInterfaceMockRecorder) GetBindingServiceBinding(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PodWarningEventWatcher", reflect.TypeOf((*MockClientInterface)(nil).PodWarningEventWatcher), ctx) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBindingServiceBinding", reflect.TypeOf((*MockClientInterface)(nil).GetBindingServiceBinding), name) +} + +// GetCSVWithCR mocks base method. +func (m *MockClientInterface) GetCSVWithCR(name string) (*v1alpha1.ClusterServiceVersion, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetCSVWithCR", name) + ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersion) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCSVWithCR indicates an expected call of GetCSVWithCR. +func (mr *MockClientInterfaceMockRecorder) GetCSVWithCR(name interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCSVWithCR", reflect.TypeOf((*MockClientInterface)(nil).GetCSVWithCR), name) } -// GetClient mocks base method +// GetClient mocks base method. func (m *MockClientInterface) GetClient() kubernetes.Interface { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetClient") @@ -466,13 +454,27 @@ func (m *MockClientInterface) GetClient() kubernetes.Interface { return ret0 } -// GetClient indicates an expected call of GetClient +// GetClient indicates an expected call of GetClient. func (mr *MockClientInterfaceMockRecorder) GetClient() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetClient", reflect.TypeOf((*MockClientInterface)(nil).GetClient)) } -// GetConfig mocks base method +// GetClientConfig mocks base method. +func (m *MockClientInterface) GetClientConfig() *rest.Config { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetClientConfig") + ret0, _ := ret[0].(*rest.Config) + return ret0 +} + +// GetClientConfig indicates an expected call of GetClientConfig. +func (mr *MockClientInterfaceMockRecorder) GetClientConfig() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetClientConfig", reflect.TypeOf((*MockClientInterface)(nil).GetClientConfig)) +} + +// GetConfig mocks base method. func (m *MockClientInterface) GetConfig() clientcmd.ClientConfig { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetConfig") @@ -480,137 +482,159 @@ func (m *MockClientInterface) GetConfig() clientcmd.ClientConfig { return ret0 } -// GetConfig indicates an expected call of GetConfig +// GetConfig indicates an expected call of GetConfig. func (mr *MockClientInterfaceMockRecorder) GetConfig() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConfig", reflect.TypeOf((*MockClientInterface)(nil).GetConfig)) } -// GetClientConfig mocks base method -func (m *MockClientInterface) GetClientConfig() *rest.Config { +// GetCurrentNamespace mocks base method. +func (m *MockClientInterface) GetCurrentNamespace() string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetClientConfig") - ret0, _ := ret[0].(*rest.Config) + ret := m.ctrl.Call(m, "GetCurrentNamespace") + ret0, _ := ret[0].(string) return ret0 } -// GetClientConfig indicates an expected call of GetClientConfig -func (mr *MockClientInterfaceMockRecorder) GetClientConfig() *gomock.Call { +// GetCurrentNamespace indicates an expected call of GetCurrentNamespace. +func (mr *MockClientInterfaceMockRecorder) GetCurrentNamespace() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetClientConfig", reflect.TypeOf((*MockClientInterface)(nil).GetClientConfig)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentNamespace", reflect.TypeOf((*MockClientInterface)(nil).GetCurrentNamespace)) } -// GetDynamicClient mocks base method -func (m *MockClientInterface) GetDynamicClient() dynamic.Interface { +// GetCurrentProjectName mocks base method. +func (m *MockClientInterface) GetCurrentProjectName() string { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDynamicClient") - ret0, _ := ret[0].(dynamic.Interface) + ret := m.ctrl.Call(m, "GetCurrentProjectName") + ret0, _ := ret[0].(string) return ret0 } -// GetDynamicClient indicates an expected call of GetDynamicClient -func (mr *MockClientInterfaceMockRecorder) GetDynamicClient() *gomock.Call { +// GetCurrentProjectName indicates an expected call of GetCurrentProjectName. +func (mr *MockClientInterfaceMockRecorder) GetCurrentProjectName() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDynamicClient", reflect.TypeOf((*MockClientInterface)(nil).GetDynamicClient)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentProjectName", reflect.TypeOf((*MockClientInterface)(nil).GetCurrentProjectName)) } -// GeneratePortForwardReq mocks base method -func (m *MockClientInterface) GeneratePortForwardReq(podName string) *rest.Request { +// GetCustomResourcesFromCSV mocks base method. +func (m *MockClientInterface) GetCustomResourcesFromCSV(csv *v1alpha1.ClusterServiceVersion) *[]v1alpha1.CRDDescription { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GeneratePortForwardReq", podName) - ret0, _ := ret[0].(*rest.Request) + ret := m.ctrl.Call(m, "GetCustomResourcesFromCSV", csv) + ret0, _ := ret[0].(*[]v1alpha1.CRDDescription) return ret0 } -// GeneratePortForwardReq indicates an expected call of GeneratePortForwardReq -func (mr *MockClientInterfaceMockRecorder) GeneratePortForwardReq(podName interface{}) *gomock.Call { +// GetCustomResourcesFromCSV indicates an expected call of GetCustomResourcesFromCSV. +func (mr *MockClientInterfaceMockRecorder) GetCustomResourcesFromCSV(csv interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GeneratePortForwardReq", reflect.TypeOf((*MockClientInterface)(nil).GeneratePortForwardReq), podName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomResourcesFromCSV", reflect.TypeOf((*MockClientInterface)(nil).GetCustomResourcesFromCSV), csv) } -// SetDiscoveryInterface mocks base method -func (m *MockClientInterface) SetDiscoveryInterface(client discovery.DiscoveryInterface) { +// GetDeploymentAPIVersion mocks base method. +func (m *MockClientInterface) GetDeploymentAPIVersion() (schema.GroupVersionKind, error) { m.ctrl.T.Helper() - m.ctrl.Call(m, "SetDiscoveryInterface", client) + ret := m.ctrl.Call(m, "GetDeploymentAPIVersion") + ret0, _ := ret[0].(schema.GroupVersionKind) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// SetDiscoveryInterface indicates an expected call of SetDiscoveryInterface -func (mr *MockClientInterfaceMockRecorder) SetDiscoveryInterface(client interface{}) *gomock.Call { +// GetDeploymentAPIVersion indicates an expected call of GetDeploymentAPIVersion. +func (mr *MockClientInterfaceMockRecorder) GetDeploymentAPIVersion() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetDiscoveryInterface", reflect.TypeOf((*MockClientInterface)(nil).SetDiscoveryInterface), client) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentAPIVersion", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentAPIVersion)) } -// IsResourceSupported mocks base method -func (m *MockClientInterface) IsResourceSupported(apiGroup, apiVersion, resourceName string) (bool, error) { +// GetDeploymentByName mocks base method. +func (m *MockClientInterface) GetDeploymentByName(name string) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsResourceSupported", apiGroup, apiVersion, resourceName) - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "GetDeploymentByName", name) + ret0, _ := ret[0].(*v10.Deployment) ret1, _ := ret[1].(error) return ret0, ret1 } -// IsResourceSupported indicates an expected call of IsResourceSupported -func (mr *MockClientInterfaceMockRecorder) IsResourceSupported(apiGroup, apiVersion, resourceName interface{}) *gomock.Call { +// GetDeploymentByName indicates an expected call of GetDeploymentByName. +func (mr *MockClientInterfaceMockRecorder) GetDeploymentByName(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsResourceSupported", reflect.TypeOf((*MockClientInterface)(nil).IsResourceSupported), apiGroup, apiVersion, resourceName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentByName", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentByName), name) } -// IsSSASupported mocks base method -func (m *MockClientInterface) IsSSASupported() bool { +// GetDeploymentFromSelector mocks base method. +func (m *MockClientInterface) GetDeploymentFromSelector(selector string) ([]v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsSSASupported") - ret0, _ := ret[0].(bool) - return ret0 + ret := m.ctrl.Call(m, "GetDeploymentFromSelector", selector) + ret0, _ := ret[0].([]v10.Deployment) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// IsSSASupported indicates an expected call of IsSSASupported -func (mr *MockClientInterfaceMockRecorder) IsSSASupported() *gomock.Call { +// GetDeploymentFromSelector indicates an expected call of GetDeploymentFromSelector. +func (mr *MockClientInterfaceMockRecorder) GetDeploymentFromSelector(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSSASupported", reflect.TypeOf((*MockClientInterface)(nil).IsSSASupported)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeploymentFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetDeploymentFromSelector), selector) } -// GetCurrentNamespace mocks base method -func (m *MockClientInterface) GetCurrentNamespace() string { +// GetDynamicClient mocks base method. +func (m *MockClientInterface) GetDynamicClient() dynamic.Interface { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCurrentNamespace") - ret0, _ := ret[0].(string) + ret := m.ctrl.Call(m, "GetDynamicClient") + ret0, _ := ret[0].(dynamic.Interface) return ret0 } -// GetCurrentNamespace indicates an expected call of GetCurrentNamespace -func (mr *MockClientInterfaceMockRecorder) GetCurrentNamespace() *gomock.Call { +// GetDynamicClient indicates an expected call of GetDynamicClient. +func (mr *MockClientInterfaceMockRecorder) GetDynamicClient() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentNamespace", reflect.TypeOf((*MockClientInterface)(nil).GetCurrentNamespace)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDynamicClient", reflect.TypeOf((*MockClientInterface)(nil).GetDynamicClient)) } -// SetNamespace mocks base method -func (m *MockClientInterface) SetNamespace(ns string) { +// GetDynamicResource mocks base method. +func (m *MockClientInterface) GetDynamicResource(gvr schema.GroupVersionResource, name string) (*unstructured.Unstructured, error) { m.ctrl.T.Helper() - m.ctrl.Call(m, "SetNamespace", ns) + ret := m.ctrl.Call(m, "GetDynamicResource", gvr, name) + ret0, _ := ret[0].(*unstructured.Unstructured) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// SetNamespace indicates an expected call of SetNamespace -func (mr *MockClientInterfaceMockRecorder) SetNamespace(ns interface{}) *gomock.Call { +// GetDynamicResource indicates an expected call of GetDynamicResource. +func (mr *MockClientInterfaceMockRecorder) GetDynamicResource(gvr, name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetNamespace", reflect.TypeOf((*MockClientInterface)(nil).SetNamespace), ns) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).GetDynamicResource), gvr, name) } -// GetNamespaces mocks base method -func (m *MockClientInterface) GetNamespaces() ([]string, error) { +// GetGVKFromGVR mocks base method. +func (m *MockClientInterface) GetGVKFromGVR(gvr schema.GroupVersionResource) (schema.GroupVersionKind, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetNamespaces") - ret0, _ := ret[0].([]string) + ret := m.ctrl.Call(m, "GetGVKFromGVR", gvr) + ret0, _ := ret[0].(schema.GroupVersionKind) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetNamespaces indicates an expected call of GetNamespaces -func (mr *MockClientInterfaceMockRecorder) GetNamespaces() *gomock.Call { +// GetGVKFromGVR indicates an expected call of GetGVKFromGVR. +func (mr *MockClientInterfaceMockRecorder) GetGVKFromGVR(gvr interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNamespaces", reflect.TypeOf((*MockClientInterface)(nil).GetNamespaces)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGVKFromGVR", reflect.TypeOf((*MockClientInterface)(nil).GetGVKFromGVR), gvr) +} + +// GetGVRFromGVK mocks base method. +func (m *MockClientInterface) GetGVRFromGVK(gvk schema.GroupVersionKind) (schema.GroupVersionResource, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetGVRFromGVK", gvk) + ret0, _ := ret[0].(schema.GroupVersionResource) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGVRFromGVK indicates an expected call of GetGVRFromGVK. +func (mr *MockClientInterfaceMockRecorder) GetGVRFromGVK(gvk interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGVRFromGVK", reflect.TypeOf((*MockClientInterface)(nil).GetGVRFromGVK), gvk) } -// GetNamespace mocks base method +// GetNamespace mocks base method. func (m *MockClientInterface) GetNamespace(name string) (*v11.Namespace, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetNamespace", name) @@ -619,13 +643,13 @@ func (m *MockClientInterface) GetNamespace(name string) (*v11.Namespace, error) return ret0, ret1 } -// GetNamespace indicates an expected call of GetNamespace +// GetNamespace indicates an expected call of GetNamespace. func (mr *MockClientInterfaceMockRecorder) GetNamespace(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNamespace", reflect.TypeOf((*MockClientInterface)(nil).GetNamespace), name) } -// GetNamespaceNormal mocks base method +// GetNamespaceNormal mocks base method. func (m *MockClientInterface) GetNamespaceNormal(name string) (*v11.Namespace, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetNamespaceNormal", name) @@ -634,174 +658,193 @@ func (m *MockClientInterface) GetNamespaceNormal(name string) (*v11.Namespace, e return ret0, ret1 } -// GetNamespaceNormal indicates an expected call of GetNamespaceNormal +// GetNamespaceNormal indicates an expected call of GetNamespaceNormal. func (mr *MockClientInterfaceMockRecorder) GetNamespaceNormal(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNamespaceNormal", reflect.TypeOf((*MockClientInterface)(nil).GetNamespaceNormal), name) } -// CreateNamespace mocks base method -func (m *MockClientInterface) CreateNamespace(name string) (*v11.Namespace, error) { +// GetNamespaces mocks base method. +func (m *MockClientInterface) GetNamespaces() ([]string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNamespace", name) - ret0, _ := ret[0].(*v11.Namespace) + ret := m.ctrl.Call(m, "GetNamespaces") + ret0, _ := ret[0].([]string) ret1, _ := ret[1].(error) return ret0, ret1 } -// CreateNamespace indicates an expected call of CreateNamespace -func (mr *MockClientInterfaceMockRecorder) CreateNamespace(name interface{}) *gomock.Call { +// GetNamespaces indicates an expected call of GetNamespaces. +func (mr *MockClientInterfaceMockRecorder) GetNamespaces() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNamespace", reflect.TypeOf((*MockClientInterface)(nil).CreateNamespace), name) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNamespaces", reflect.TypeOf((*MockClientInterface)(nil).GetNamespaces)) } -// DeleteNamespace mocks base method -func (m *MockClientInterface) DeleteNamespace(name string, wait bool) error { +// GetOneDeployment mocks base method. +func (m *MockClientInterface) GetOneDeployment(componentName, appName string) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteNamespace", name, wait) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetOneDeployment", componentName, appName) + ret0, _ := ret[0].(*v10.Deployment) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// DeleteNamespace indicates an expected call of DeleteNamespace -func (mr *MockClientInterfaceMockRecorder) DeleteNamespace(name, wait interface{}) *gomock.Call { +// GetOneDeployment indicates an expected call of GetOneDeployment. +func (mr *MockClientInterfaceMockRecorder) GetOneDeployment(componentName, appName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNamespace", reflect.TypeOf((*MockClientInterface)(nil).DeleteNamespace), name, wait) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneDeployment", reflect.TypeOf((*MockClientInterface)(nil).GetOneDeployment), componentName, appName) } -// SetCurrentNamespace mocks base method -func (m *MockClientInterface) SetCurrentNamespace(namespace string) error { +// GetOneDeploymentFromSelector mocks base method. +func (m *MockClientInterface) GetOneDeploymentFromSelector(selector string) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetCurrentNamespace", namespace) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetOneDeploymentFromSelector", selector) + ret0, _ := ret[0].(*v10.Deployment) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// SetCurrentNamespace indicates an expected call of SetCurrentNamespace -func (mr *MockClientInterfaceMockRecorder) SetCurrentNamespace(namespace interface{}) *gomock.Call { +// GetOneDeploymentFromSelector indicates an expected call of GetOneDeploymentFromSelector. +func (mr *MockClientInterfaceMockRecorder) GetOneDeploymentFromSelector(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentNamespace", reflect.TypeOf((*MockClientInterface)(nil).SetCurrentNamespace), namespace) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneDeploymentFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetOneDeploymentFromSelector), selector) } -// WaitForServiceAccountInNamespace mocks base method -func (m *MockClientInterface) WaitForServiceAccountInNamespace(namespace, serviceAccountName string) error { +// GetOneService mocks base method. +func (m *MockClientInterface) GetOneService(componentName, appName string) (*v11.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitForServiceAccountInNamespace", namespace, serviceAccountName) - ret0, _ := ret[0].(error) - return ret0 -} - -// WaitForServiceAccountInNamespace indicates an expected call of WaitForServiceAccountInNamespace -func (mr *MockClientInterfaceMockRecorder) WaitForServiceAccountInNamespace(namespace, serviceAccountName interface{}) *gomock.Call { + ret := m.ctrl.Call(m, "GetOneService", componentName, appName) + ret0, _ := ret[0].(*v11.Service) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOneService indicates an expected call of GetOneService. +func (mr *MockClientInterfaceMockRecorder) GetOneService(componentName, appName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForServiceAccountInNamespace", reflect.TypeOf((*MockClientInterface)(nil).WaitForServiceAccountInNamespace), namespace, serviceAccountName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneService", reflect.TypeOf((*MockClientInterface)(nil).GetOneService), componentName, appName) } -// GetServerVersion mocks base method -func (m *MockClientInterface) GetServerVersion(timeout time.Duration) (*ServerInfo, error) { +// GetOneServiceFromSelector mocks base method. +func (m *MockClientInterface) GetOneServiceFromSelector(selector string) (*v11.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerVersion", timeout) - ret0, _ := ret[0].(*ServerInfo) + ret := m.ctrl.Call(m, "GetOneServiceFromSelector", selector) + ret0, _ := ret[0].(*v11.Service) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetServerVersion indicates an expected call of GetServerVersion -func (mr *MockClientInterfaceMockRecorder) GetServerVersion(timeout interface{}) *gomock.Call { +// GetOneServiceFromSelector indicates an expected call of GetOneServiceFromSelector. +func (mr *MockClientInterfaceMockRecorder) GetOneServiceFromSelector(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerVersion", reflect.TypeOf((*MockClientInterface)(nil).GetServerVersion), timeout) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneServiceFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetOneServiceFromSelector), selector) } -// IsCSVSupported mocks base method -func (m *MockClientInterface) IsCSVSupported() (bool, error) { +// GetOperatorGVRList mocks base method. +func (m *MockClientInterface) GetOperatorGVRList() ([]meta.RESTMapping, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsCSVSupported") - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "GetOperatorGVRList") + ret0, _ := ret[0].([]meta.RESTMapping) ret1, _ := ret[1].(error) return ret0, ret1 } -// IsCSVSupported indicates an expected call of IsCSVSupported -func (mr *MockClientInterfaceMockRecorder) IsCSVSupported() *gomock.Call { +// GetOperatorGVRList indicates an expected call of GetOperatorGVRList. +func (mr *MockClientInterfaceMockRecorder) GetOperatorGVRList() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsCSVSupported", reflect.TypeOf((*MockClientInterface)(nil).IsCSVSupported)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOperatorGVRList", reflect.TypeOf((*MockClientInterface)(nil).GetOperatorGVRList)) } -// ListClusterServiceVersions mocks base method -func (m *MockClientInterface) ListClusterServiceVersions() (*v1alpha1.ClusterServiceVersionList, error) { +// GetPVCFromName mocks base method. +func (m *MockClientInterface) GetPVCFromName(pvcName string) (*v11.PersistentVolumeClaim, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListClusterServiceVersions") - ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersionList) + ret := m.ctrl.Call(m, "GetPVCFromName", pvcName) + ret0, _ := ret[0].(*v11.PersistentVolumeClaim) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListClusterServiceVersions indicates an expected call of ListClusterServiceVersions -func (mr *MockClientInterfaceMockRecorder) ListClusterServiceVersions() *gomock.Call { +// GetPVCFromName indicates an expected call of GetPVCFromName. +func (mr *MockClientInterfaceMockRecorder) GetPVCFromName(pvcName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListClusterServiceVersions", reflect.TypeOf((*MockClientInterface)(nil).ListClusterServiceVersions)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPVCFromName", reflect.TypeOf((*MockClientInterface)(nil).GetPVCFromName), pvcName) } -// GetCustomResourcesFromCSV mocks base method -func (m *MockClientInterface) GetCustomResourcesFromCSV(csv *v1alpha1.ClusterServiceVersion) *[]v1alpha1.CRDDescription { +// GetPodLogs mocks base method. +func (m *MockClientInterface) GetPodLogs(podName, containerName string, followLog bool) (io.ReadCloser, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCustomResourcesFromCSV", csv) - ret0, _ := ret[0].(*[]v1alpha1.CRDDescription) - return ret0 + ret := m.ctrl.Call(m, "GetPodLogs", podName, containerName, followLog) + ret0, _ := ret[0].(io.ReadCloser) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// GetCustomResourcesFromCSV indicates an expected call of GetCustomResourcesFromCSV -func (mr *MockClientInterfaceMockRecorder) GetCustomResourcesFromCSV(csv interface{}) *gomock.Call { +// GetPodLogs indicates an expected call of GetPodLogs. +func (mr *MockClientInterfaceMockRecorder) GetPodLogs(podName, containerName, followLog interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCustomResourcesFromCSV", reflect.TypeOf((*MockClientInterface)(nil).GetCustomResourcesFromCSV), csv) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodLogs", reflect.TypeOf((*MockClientInterface)(nil).GetPodLogs), podName, containerName, followLog) } -// GetCSVWithCR mocks base method -func (m *MockClientInterface) GetCSVWithCR(name string) (*v1alpha1.ClusterServiceVersion, error) { +// GetPodUsingComponentName mocks base method. +func (m *MockClientInterface) GetPodUsingComponentName(componentName string) (*v11.Pod, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCSVWithCR", name) - ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersion) + ret := m.ctrl.Call(m, "GetPodUsingComponentName", componentName) + ret0, _ := ret[0].(*v11.Pod) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetCSVWithCR indicates an expected call of GetCSVWithCR -func (mr *MockClientInterfaceMockRecorder) GetCSVWithCR(name interface{}) *gomock.Call { +// GetPodUsingComponentName indicates an expected call of GetPodUsingComponentName. +func (mr *MockClientInterfaceMockRecorder) GetPodUsingComponentName(componentName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCSVWithCR", reflect.TypeOf((*MockClientInterface)(nil).GetCSVWithCR), name) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodUsingComponentName", reflect.TypeOf((*MockClientInterface)(nil).GetPodUsingComponentName), componentName) } -// GetResourceSpecDefinition mocks base method -func (m *MockClientInterface) GetResourceSpecDefinition(group, version, kind string) (*spec.Schema, error) { +// GetPodsMatchingSelector mocks base method. +func (m *MockClientInterface) GetPodsMatchingSelector(selector string) (*v11.PodList, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetResourceSpecDefinition", group, version, kind) - ret0, _ := ret[0].(*spec.Schema) + ret := m.ctrl.Call(m, "GetPodsMatchingSelector", selector) + ret0, _ := ret[0].(*v11.PodList) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetResourceSpecDefinition indicates an expected call of GetResourceSpecDefinition -func (mr *MockClientInterfaceMockRecorder) GetResourceSpecDefinition(group, version, kind interface{}) *gomock.Call { +// GetPodsMatchingSelector indicates an expected call of GetPodsMatchingSelector. +func (mr *MockClientInterfaceMockRecorder) GetPodsMatchingSelector(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResourceSpecDefinition", reflect.TypeOf((*MockClientInterface)(nil).GetResourceSpecDefinition), group, version, kind) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodsMatchingSelector", reflect.TypeOf((*MockClientInterface)(nil).GetPodsMatchingSelector), selector) } -// GetRestMappingFromUnstructured mocks base method -func (m *MockClientInterface) GetRestMappingFromUnstructured(arg0 unstructured.Unstructured) (*meta.RESTMapping, error) { +// GetProject mocks base method. +func (m *MockClientInterface) GetProject(projectName string) (*v1.Project, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRestMappingFromUnstructured", arg0) - ret0, _ := ret[0].(*meta.RESTMapping) + ret := m.ctrl.Call(m, "GetProject", projectName) + ret0, _ := ret[0].(*v1.Project) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetRestMappingFromUnstructured indicates an expected call of GetRestMappingFromUnstructured -func (mr *MockClientInterfaceMockRecorder) GetRestMappingFromUnstructured(arg0 interface{}) *gomock.Call { +// GetProject indicates an expected call of GetProject. +func (mr *MockClientInterfaceMockRecorder) GetProject(projectName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRestMappingFromUnstructured", reflect.TypeOf((*MockClientInterface)(nil).GetRestMappingFromUnstructured), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProject", reflect.TypeOf((*MockClientInterface)(nil).GetProject), projectName) +} + +// GetResourceSpecDefinition mocks base method. +func (m *MockClientInterface) GetResourceSpecDefinition(group, version, kind string) (*spec.Schema, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetResourceSpecDefinition", group, version, kind) + ret0, _ := ret[0].(*spec.Schema) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetResourceSpecDefinition indicates an expected call of GetResourceSpecDefinition. +func (mr *MockClientInterfaceMockRecorder) GetResourceSpecDefinition(group, version, kind interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetResourceSpecDefinition", reflect.TypeOf((*MockClientInterface)(nil).GetResourceSpecDefinition), group, version, kind) } -// GetRestMappingFromGVK mocks base method +// GetRestMappingFromGVK mocks base method. func (m *MockClientInterface) GetRestMappingFromGVK(gvk schema.GroupVersionKind) (*meta.RESTMapping, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "GetRestMappingFromGVK", gvk) @@ -810,291 +853,268 @@ func (m *MockClientInterface) GetRestMappingFromGVK(gvk schema.GroupVersionKind) return ret0, ret1 } -// GetRestMappingFromGVK indicates an expected call of GetRestMappingFromGVK +// GetRestMappingFromGVK indicates an expected call of GetRestMappingFromGVK. func (mr *MockClientInterfaceMockRecorder) GetRestMappingFromGVK(gvk interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRestMappingFromGVK", reflect.TypeOf((*MockClientInterface)(nil).GetRestMappingFromGVK), gvk) } -// GetOperatorGVRList mocks base method -func (m *MockClientInterface) GetOperatorGVRList() ([]meta.RESTMapping, error) { +// GetRestMappingFromUnstructured mocks base method. +func (m *MockClientInterface) GetRestMappingFromUnstructured(arg0 unstructured.Unstructured) (*meta.RESTMapping, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOperatorGVRList") - ret0, _ := ret[0].([]meta.RESTMapping) + ret := m.ctrl.Call(m, "GetRestMappingFromUnstructured", arg0) + ret0, _ := ret[0].(*meta.RESTMapping) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetOperatorGVRList indicates an expected call of GetOperatorGVRList -func (mr *MockClientInterfaceMockRecorder) GetOperatorGVRList() *gomock.Call { +// GetRestMappingFromUnstructured indicates an expected call of GetRestMappingFromUnstructured. +func (mr *MockClientInterfaceMockRecorder) GetRestMappingFromUnstructured(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOperatorGVRList", reflect.TypeOf((*MockClientInterface)(nil).GetOperatorGVRList)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRestMappingFromUnstructured", reflect.TypeOf((*MockClientInterface)(nil).GetRestMappingFromUnstructured), arg0) } -// GetGVKFromGVR mocks base method -func (m *MockClientInterface) GetGVKFromGVR(gvr schema.GroupVersionResource) (schema.GroupVersionKind, error) { +// GetRunningPodFromSelector mocks base method. +func (m *MockClientInterface) GetRunningPodFromSelector(selector string) (*v11.Pod, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGVKFromGVR", gvr) - ret0, _ := ret[0].(schema.GroupVersionKind) + ret := m.ctrl.Call(m, "GetRunningPodFromSelector", selector) + ret0, _ := ret[0].(*v11.Pod) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetGVKFromGVR indicates an expected call of GetGVKFromGVR -func (mr *MockClientInterfaceMockRecorder) GetGVKFromGVR(gvr interface{}) *gomock.Call { +// GetRunningPodFromSelector indicates an expected call of GetRunningPodFromSelector. +func (mr *MockClientInterfaceMockRecorder) GetRunningPodFromSelector(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGVKFromGVR", reflect.TypeOf((*MockClientInterface)(nil).GetGVKFromGVR), gvr) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRunningPodFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetRunningPodFromSelector), selector) } -// GetGVRFromGVK mocks base method -func (m *MockClientInterface) GetGVRFromGVK(gvk schema.GroupVersionKind) (schema.GroupVersionResource, error) { +// GetSecret mocks base method. +func (m *MockClientInterface) GetSecret(name, namespace string) (*v11.Secret, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGVRFromGVK", gvk) - ret0, _ := ret[0].(schema.GroupVersionResource) + ret := m.ctrl.Call(m, "GetSecret", name, namespace) + ret0, _ := ret[0].(*v11.Secret) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetGVRFromGVK indicates an expected call of GetGVRFromGVK -func (mr *MockClientInterfaceMockRecorder) GetGVRFromGVK(gvk interface{}) *gomock.Call { +// GetSecret indicates an expected call of GetSecret. +func (mr *MockClientInterfaceMockRecorder) GetSecret(name, namespace interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGVRFromGVK", reflect.TypeOf((*MockClientInterface)(nil).GetGVRFromGVK), gvk) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecret", reflect.TypeOf((*MockClientInterface)(nil).GetSecret), name, namespace) } -// TryWithBlockOwnerDeletion mocks base method -func (m *MockClientInterface) TryWithBlockOwnerDeletion(ownerReference v12.OwnerReference, exec func(v12.OwnerReference) error) error { +// GetServerVersion mocks base method. +func (m *MockClientInterface) GetServerVersion(timeout time.Duration) (*ServerInfo, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "TryWithBlockOwnerDeletion", ownerReference, exec) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetServerVersion", timeout) + ret0, _ := ret[0].(*ServerInfo) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// TryWithBlockOwnerDeletion indicates an expected call of TryWithBlockOwnerDeletion -func (mr *MockClientInterfaceMockRecorder) TryWithBlockOwnerDeletion(ownerReference, exec interface{}) *gomock.Call { +// GetServerVersion indicates an expected call of GetServerVersion. +func (mr *MockClientInterfaceMockRecorder) GetServerVersion(timeout interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryWithBlockOwnerDeletion", reflect.TypeOf((*MockClientInterface)(nil).TryWithBlockOwnerDeletion), ownerReference, exec) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerVersion", reflect.TypeOf((*MockClientInterface)(nil).GetServerVersion), timeout) } -// ExecCMDInContainer mocks base method -func (m *MockClientInterface) ExecCMDInContainer(containerName, podName string, cmd []string, stdout, stderr io.Writer, stdin io.Reader, tty bool) error { +// GetSpecServiceBinding mocks base method. +func (m *MockClientInterface) GetSpecServiceBinding(name string) (v1alpha3.ServiceBinding, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ExecCMDInContainer", containerName, podName, cmd, stdout, stderr, stdin, tty) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetSpecServiceBinding", name) + ret0, _ := ret[0].(v1alpha3.ServiceBinding) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// ExecCMDInContainer indicates an expected call of ExecCMDInContainer -func (mr *MockClientInterfaceMockRecorder) ExecCMDInContainer(containerName, podName, cmd, stdout, stderr, stdin, tty interface{}) *gomock.Call { +// GetSpecServiceBinding indicates an expected call of GetSpecServiceBinding. +func (mr *MockClientInterfaceMockRecorder) GetSpecServiceBinding(name interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExecCMDInContainer", reflect.TypeOf((*MockClientInterface)(nil).ExecCMDInContainer), containerName, podName, cmd, stdout, stderr, stdin, tty) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSpecServiceBinding", reflect.TypeOf((*MockClientInterface)(nil).GetSpecServiceBinding), name) } -// ExtractProjectToComponent mocks base method -func (m *MockClientInterface) ExtractProjectToComponent(containerName, podName, targetPath string, stdin io.Reader) error { +// GetWorkloadKinds mocks base method. +func (m *MockClientInterface) GetWorkloadKinds() ([]string, []schema.GroupVersionKind, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ExtractProjectToComponent", containerName, podName, targetPath, stdin) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "GetWorkloadKinds") + ret0, _ := ret[0].([]string) + ret1, _ := ret[1].([]schema.GroupVersionKind) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 } -// ExtractProjectToComponent indicates an expected call of ExtractProjectToComponent -func (mr *MockClientInterfaceMockRecorder) ExtractProjectToComponent(containerName, podName, targetPath, stdin interface{}) *gomock.Call { +// GetWorkloadKinds indicates an expected call of GetWorkloadKinds. +func (mr *MockClientInterfaceMockRecorder) GetWorkloadKinds() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExtractProjectToComponent", reflect.TypeOf((*MockClientInterface)(nil).ExtractProjectToComponent), containerName, podName, targetPath, stdin) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWorkloadKinds", reflect.TypeOf((*MockClientInterface)(nil).GetWorkloadKinds)) } -// GetPodUsingComponentName mocks base method -func (m *MockClientInterface) GetPodUsingComponentName(componentName string) (*v11.Pod, error) { +// IsCSVSupported mocks base method. +func (m *MockClientInterface) IsCSVSupported() (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPodUsingComponentName", componentName) - ret0, _ := ret[0].(*v11.Pod) + ret := m.ctrl.Call(m, "IsCSVSupported") + ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetPodUsingComponentName indicates an expected call of GetPodUsingComponentName -func (mr *MockClientInterfaceMockRecorder) GetPodUsingComponentName(componentName interface{}) *gomock.Call { +// IsCSVSupported indicates an expected call of IsCSVSupported. +func (mr *MockClientInterfaceMockRecorder) IsCSVSupported() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodUsingComponentName", reflect.TypeOf((*MockClientInterface)(nil).GetPodUsingComponentName), componentName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsCSVSupported", reflect.TypeOf((*MockClientInterface)(nil).IsCSVSupported)) } -// GetRunningPodFromSelector mocks base method -func (m *MockClientInterface) GetRunningPodFromSelector(selector string) (*v11.Pod, error) { +// IsDeploymentExtensionsV1Beta1 mocks base method. +func (m *MockClientInterface) IsDeploymentExtensionsV1Beta1() (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRunningPodFromSelector", selector) - ret0, _ := ret[0].(*v11.Pod) + ret := m.ctrl.Call(m, "IsDeploymentExtensionsV1Beta1") + ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetRunningPodFromSelector indicates an expected call of GetRunningPodFromSelector -func (mr *MockClientInterfaceMockRecorder) GetRunningPodFromSelector(selector interface{}) *gomock.Call { +// IsDeploymentExtensionsV1Beta1 indicates an expected call of IsDeploymentExtensionsV1Beta1. +func (mr *MockClientInterfaceMockRecorder) IsDeploymentExtensionsV1Beta1() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRunningPodFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetRunningPodFromSelector), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsDeploymentExtensionsV1Beta1", reflect.TypeOf((*MockClientInterface)(nil).IsDeploymentExtensionsV1Beta1)) } -// GetPodLogs mocks base method -func (m *MockClientInterface) GetPodLogs(podName, containerName string, followLog bool) (io.ReadCloser, error) { +// IsPodNameMatchingSelector mocks base method. +func (m *MockClientInterface) IsPodNameMatchingSelector(ctx context.Context, podname, selector string) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPodLogs", podName, containerName, followLog) - ret0, _ := ret[0].(io.ReadCloser) + ret := m.ctrl.Call(m, "IsPodNameMatchingSelector", ctx, podname, selector) + ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetPodLogs indicates an expected call of GetPodLogs -func (mr *MockClientInterfaceMockRecorder) GetPodLogs(podName, containerName, followLog interface{}) *gomock.Call { +// IsPodNameMatchingSelector indicates an expected call of IsPodNameMatchingSelector. +func (mr *MockClientInterfaceMockRecorder) IsPodNameMatchingSelector(ctx, podname, selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodLogs", reflect.TypeOf((*MockClientInterface)(nil).GetPodLogs), podName, containerName, followLog) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsPodNameMatchingSelector", reflect.TypeOf((*MockClientInterface)(nil).IsPodNameMatchingSelector), ctx, podname, selector) } -// GetAllPodsInNamespace mocks base method -func (m *MockClientInterface) GetAllPodsInNamespace() (*v11.PodList, error) { +// IsProjectSupported mocks base method. +func (m *MockClientInterface) IsProjectSupported() (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAllPodsInNamespace") - ret0, _ := ret[0].(*v11.PodList) + ret := m.ctrl.Call(m, "IsProjectSupported") + ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetAllPodsInNamespace indicates an expected call of GetAllPodsInNamespace -func (mr *MockClientInterfaceMockRecorder) GetAllPodsInNamespace() *gomock.Call { +// IsProjectSupported indicates an expected call of IsProjectSupported. +func (mr *MockClientInterfaceMockRecorder) IsProjectSupported() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllPodsInNamespace", reflect.TypeOf((*MockClientInterface)(nil).GetAllPodsInNamespace)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsProjectSupported", reflect.TypeOf((*MockClientInterface)(nil).IsProjectSupported)) } -// GetPodsMatchingSelector mocks base method -func (m *MockClientInterface) GetPodsMatchingSelector(selector string) (*v11.PodList, error) { +// IsResourceSupported mocks base method. +func (m *MockClientInterface) IsResourceSupported(apiGroup, apiVersion, resourceName string) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPodsMatchingSelector", selector) - ret0, _ := ret[0].(*v11.PodList) + ret := m.ctrl.Call(m, "IsResourceSupported", apiGroup, apiVersion, resourceName) + ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetPodsMatchingSelector indicates an expected call of GetPodsMatchingSelector -func (mr *MockClientInterfaceMockRecorder) GetPodsMatchingSelector(selector interface{}) *gomock.Call { +// IsResourceSupported indicates an expected call of IsResourceSupported. +func (mr *MockClientInterfaceMockRecorder) IsResourceSupported(apiGroup, apiVersion, resourceName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPodsMatchingSelector", reflect.TypeOf((*MockClientInterface)(nil).GetPodsMatchingSelector), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsResourceSupported", reflect.TypeOf((*MockClientInterface)(nil).IsResourceSupported), apiGroup, apiVersion, resourceName) } -// PodWatcher mocks base method -func (m *MockClientInterface) PodWatcher(ctx context.Context, selector string) (watch.Interface, error) { +// IsSSASupported mocks base method. +func (m *MockClientInterface) IsSSASupported() bool { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PodWatcher", ctx, selector) - ret0, _ := ret[0].(watch.Interface) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "IsSSASupported") + ret0, _ := ret[0].(bool) + return ret0 } -// PodWatcher indicates an expected call of PodWatcher -func (mr *MockClientInterfaceMockRecorder) PodWatcher(ctx, selector interface{}) *gomock.Call { +// IsSSASupported indicates an expected call of IsSSASupported. +func (mr *MockClientInterfaceMockRecorder) IsSSASupported() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PodWatcher", reflect.TypeOf((*MockClientInterface)(nil).PodWatcher), ctx, selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSSASupported", reflect.TypeOf((*MockClientInterface)(nil).IsSSASupported)) } -// IsPodNameMatchingSelector mocks base method -func (m *MockClientInterface) IsPodNameMatchingSelector(ctx context.Context, podname, selector string) (bool, error) { +// IsServiceBindingSupported mocks base method. +func (m *MockClientInterface) IsServiceBindingSupported() (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsPodNameMatchingSelector", ctx, podname, selector) + ret := m.ctrl.Call(m, "IsServiceBindingSupported") ret0, _ := ret[0].(bool) ret1, _ := ret[1].(error) return ret0, ret1 } -// IsPodNameMatchingSelector indicates an expected call of IsPodNameMatchingSelector -func (mr *MockClientInterfaceMockRecorder) IsPodNameMatchingSelector(ctx, podname, selector interface{}) *gomock.Call { +// IsServiceBindingSupported indicates an expected call of IsServiceBindingSupported. +func (mr *MockClientInterfaceMockRecorder) IsServiceBindingSupported() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsPodNameMatchingSelector", reflect.TypeOf((*MockClientInterface)(nil).IsPodNameMatchingSelector), ctx, podname, selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsServiceBindingSupported", reflect.TypeOf((*MockClientInterface)(nil).IsServiceBindingSupported)) } -// SetupPortForwarding mocks base method -func (m *MockClientInterface) SetupPortForwarding(pod *v11.Pod, portPairs []string, out, errOut io.Writer, stopChan chan struct{}) error { +// ListClusterServiceVersions mocks base method. +func (m *MockClientInterface) ListClusterServiceVersions() (*v1alpha1.ClusterServiceVersionList, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetupPortForwarding", pod, portPairs, out, errOut, stopChan) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "ListClusterServiceVersions") + ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersionList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// SetupPortForwarding indicates an expected call of SetupPortForwarding -func (mr *MockClientInterfaceMockRecorder) SetupPortForwarding(pod, portPairs, out, errOut, stopChan interface{}) *gomock.Call { +// ListClusterServiceVersions indicates an expected call of ListClusterServiceVersions. +func (mr *MockClientInterfaceMockRecorder) ListClusterServiceVersions() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetupPortForwarding", reflect.TypeOf((*MockClientInterface)(nil).SetupPortForwarding), pod, portPairs, out, errOut, stopChan) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListClusterServiceVersions", reflect.TypeOf((*MockClientInterface)(nil).ListClusterServiceVersions)) } -// CreateNewProject mocks base method -func (m *MockClientInterface) CreateNewProject(projectName string, wait bool) error { +// ListDynamicResources mocks base method. +func (m *MockClientInterface) ListDynamicResources(namespace string, gvr schema.GroupVersionResource) (*unstructured.UnstructuredList, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateNewProject", projectName, wait) - ret0, _ := ret[0].(error) - return ret0 -} - -// CreateNewProject indicates an expected call of CreateNewProject -func (mr *MockClientInterfaceMockRecorder) CreateNewProject(projectName, wait interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNewProject", reflect.TypeOf((*MockClientInterface)(nil).CreateNewProject), projectName, wait) -} - -// DeleteProject mocks base method -func (m *MockClientInterface) DeleteProject(name string, wait bool) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteProject", name, wait) - ret0, _ := ret[0].(error) - return ret0 -} - -// DeleteProject indicates an expected call of DeleteProject -func (mr *MockClientInterfaceMockRecorder) DeleteProject(name, wait interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteProject", reflect.TypeOf((*MockClientInterface)(nil).DeleteProject), name, wait) -} - -// GetCurrentProjectName mocks base method -func (m *MockClientInterface) GetCurrentProjectName() string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCurrentProjectName") - ret0, _ := ret[0].(string) - return ret0 + ret := m.ctrl.Call(m, "ListDynamicResources", namespace, gvr) + ret0, _ := ret[0].(*unstructured.UnstructuredList) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// GetCurrentProjectName indicates an expected call of GetCurrentProjectName -func (mr *MockClientInterfaceMockRecorder) GetCurrentProjectName() *gomock.Call { +// ListDynamicResources indicates an expected call of ListDynamicResources. +func (mr *MockClientInterfaceMockRecorder) ListDynamicResources(namespace, gvr interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentProjectName", reflect.TypeOf((*MockClientInterface)(nil).GetCurrentProjectName)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDynamicResources", reflect.TypeOf((*MockClientInterface)(nil).ListDynamicResources), namespace, gvr) } -// GetProject mocks base method -func (m *MockClientInterface) GetProject(projectName string) (*v1.Project, error) { +// ListPVCNames mocks base method. +func (m *MockClientInterface) ListPVCNames(selector string) ([]string, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetProject", projectName) - ret0, _ := ret[0].(*v1.Project) + ret := m.ctrl.Call(m, "ListPVCNames", selector) + ret0, _ := ret[0].([]string) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetProject indicates an expected call of GetProject -func (mr *MockClientInterfaceMockRecorder) GetProject(projectName interface{}) *gomock.Call { +// ListPVCNames indicates an expected call of ListPVCNames. +func (mr *MockClientInterfaceMockRecorder) ListPVCNames(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProject", reflect.TypeOf((*MockClientInterface)(nil).GetProject), projectName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPVCNames", reflect.TypeOf((*MockClientInterface)(nil).ListPVCNames), selector) } -// IsProjectSupported mocks base method -func (m *MockClientInterface) IsProjectSupported() (bool, error) { +// ListPVCs mocks base method. +func (m *MockClientInterface) ListPVCs(selector string) ([]v11.PersistentVolumeClaim, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsProjectSupported") - ret0, _ := ret[0].(bool) + ret := m.ctrl.Call(m, "ListPVCs", selector) + ret0, _ := ret[0].([]v11.PersistentVolumeClaim) ret1, _ := ret[1].(error) return ret0, ret1 } -// IsProjectSupported indicates an expected call of IsProjectSupported -func (mr *MockClientInterfaceMockRecorder) IsProjectSupported() *gomock.Call { +// ListPVCs indicates an expected call of ListPVCs. +func (mr *MockClientInterfaceMockRecorder) ListPVCs(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsProjectSupported", reflect.TypeOf((*MockClientInterface)(nil).IsProjectSupported)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPVCs", reflect.TypeOf((*MockClientInterface)(nil).ListPVCs), selector) } -// ListProjectNames mocks base method +// ListProjectNames mocks base method. func (m *MockClientInterface) ListProjectNames() ([]string, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "ListProjectNames") @@ -1103,335 +1123,316 @@ func (m *MockClientInterface) ListProjectNames() ([]string, error) { return ret0, ret1 } -// ListProjectNames indicates an expected call of ListProjectNames +// ListProjectNames indicates an expected call of ListProjectNames. func (mr *MockClientInterfaceMockRecorder) ListProjectNames() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProjectNames", reflect.TypeOf((*MockClientInterface)(nil).ListProjectNames)) } -// CreateTLSSecret mocks base method -func (m *MockClientInterface) CreateTLSSecret(tlsCertificate, tlsPrivKey []byte, objectMeta v12.ObjectMeta) (*v11.Secret, error) { +// ListSecrets mocks base method. +func (m *MockClientInterface) ListSecrets(labelSelector string) ([]v11.Secret, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateTLSSecret", tlsCertificate, tlsPrivKey, objectMeta) - ret0, _ := ret[0].(*v11.Secret) + ret := m.ctrl.Call(m, "ListSecrets", labelSelector) + ret0, _ := ret[0].([]v11.Secret) ret1, _ := ret[1].(error) return ret0, ret1 } -// CreateTLSSecret indicates an expected call of CreateTLSSecret -func (mr *MockClientInterfaceMockRecorder) CreateTLSSecret(tlsCertificate, tlsPrivKey, objectMeta interface{}) *gomock.Call { +// ListSecrets indicates an expected call of ListSecrets. +func (mr *MockClientInterfaceMockRecorder) ListSecrets(labelSelector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTLSSecret", reflect.TypeOf((*MockClientInterface)(nil).CreateTLSSecret), tlsCertificate, tlsPrivKey, objectMeta) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecrets", reflect.TypeOf((*MockClientInterface)(nil).ListSecrets), labelSelector) } -// GetSecret mocks base method -func (m *MockClientInterface) GetSecret(name, namespace string) (*v11.Secret, error) { +// ListServiceBindingsFromAllGroups mocks base method. +func (m *MockClientInterface) ListServiceBindingsFromAllGroups() ([]v1alpha3.ServiceBinding, []v1alpha10.ServiceBinding, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSecret", name, namespace) - ret0, _ := ret[0].(*v11.Secret) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "ListServiceBindingsFromAllGroups") + ret0, _ := ret[0].([]v1alpha3.ServiceBinding) + ret1, _ := ret[1].([]v1alpha10.ServiceBinding) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 } -// GetSecret indicates an expected call of GetSecret -func (mr *MockClientInterfaceMockRecorder) GetSecret(name, namespace interface{}) *gomock.Call { +// ListServiceBindingsFromAllGroups indicates an expected call of ListServiceBindingsFromAllGroups. +func (mr *MockClientInterfaceMockRecorder) ListServiceBindingsFromAllGroups() *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSecret", reflect.TypeOf((*MockClientInterface)(nil).GetSecret), name, namespace) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServiceBindingsFromAllGroups", reflect.TypeOf((*MockClientInterface)(nil).ListServiceBindingsFromAllGroups)) } -// UpdateSecret mocks base method -func (m *MockClientInterface) UpdateSecret(secret *v11.Secret, namespace string) (*v11.Secret, error) { +// ListServices mocks base method. +func (m *MockClientInterface) ListServices(selector string) ([]v11.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateSecret", secret, namespace) - ret0, _ := ret[0].(*v11.Secret) + ret := m.ctrl.Call(m, "ListServices", selector) + ret0, _ := ret[0].([]v11.Service) ret1, _ := ret[1].(error) return ret0, ret1 } -// UpdateSecret indicates an expected call of UpdateSecret -func (mr *MockClientInterfaceMockRecorder) UpdateSecret(secret, namespace interface{}) *gomock.Call { +// ListServices indicates an expected call of ListServices. +func (mr *MockClientInterfaceMockRecorder) ListServices(selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSecret", reflect.TypeOf((*MockClientInterface)(nil).UpdateSecret), secret, namespace) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServices", reflect.TypeOf((*MockClientInterface)(nil).ListServices), selector) } -// DeleteSecret mocks base method -func (m *MockClientInterface) DeleteSecret(secretName, namespace string) error { +// NewServiceBindingServiceObject mocks base method. +func (m *MockClientInterface) NewServiceBindingServiceObject(serviceNs string, unstructuredService unstructured.Unstructured, bindingName string) (v1alpha10.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteSecret", secretName, namespace) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "NewServiceBindingServiceObject", serviceNs, unstructuredService, bindingName) + ret0, _ := ret[0].(v1alpha10.Service) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// DeleteSecret indicates an expected call of DeleteSecret -func (mr *MockClientInterfaceMockRecorder) DeleteSecret(secretName, namespace interface{}) *gomock.Call { +// NewServiceBindingServiceObject indicates an expected call of NewServiceBindingServiceObject. +func (mr *MockClientInterfaceMockRecorder) NewServiceBindingServiceObject(serviceNs, unstructuredService, bindingName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSecret", reflect.TypeOf((*MockClientInterface)(nil).DeleteSecret), secretName, namespace) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewServiceBindingServiceObject", reflect.TypeOf((*MockClientInterface)(nil).NewServiceBindingServiceObject), serviceNs, unstructuredService, bindingName) } -// CreateSecret mocks base method -func (m *MockClientInterface) CreateSecret(objectMeta v12.ObjectMeta, data map[string]string, ownerReference v12.OwnerReference) error { +// PatchDynamicResource mocks base method. +func (m *MockClientInterface) PatchDynamicResource(exampleCustomResource unstructured.Unstructured) (bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecret", objectMeta, data, ownerReference) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "PatchDynamicResource", exampleCustomResource) + ret0, _ := ret[0].(bool) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// CreateSecret indicates an expected call of CreateSecret -func (mr *MockClientInterfaceMockRecorder) CreateSecret(objectMeta, data, ownerReference interface{}) *gomock.Call { +// PatchDynamicResource indicates an expected call of PatchDynamicResource. +func (mr *MockClientInterfaceMockRecorder) PatchDynamicResource(exampleCustomResource interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecret", reflect.TypeOf((*MockClientInterface)(nil).CreateSecret), objectMeta, data, ownerReference) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).PatchDynamicResource), exampleCustomResource) } -// CreateSecrets mocks base method -func (m *MockClientInterface) CreateSecrets(componentName string, commonObjectMeta v12.ObjectMeta, svc *v11.Service, ownerReference v12.OwnerReference) error { +// PodWarningEventWatcher mocks base method. +func (m *MockClientInterface) PodWarningEventWatcher(ctx context.Context) (watch.Interface, bool, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateSecrets", componentName, commonObjectMeta, svc, ownerReference) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "PodWarningEventWatcher", ctx) + ret0, _ := ret[0].(watch.Interface) + ret1, _ := ret[1].(bool) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 } -// CreateSecrets indicates an expected call of CreateSecrets -func (mr *MockClientInterfaceMockRecorder) CreateSecrets(componentName, commonObjectMeta, svc, ownerReference interface{}) *gomock.Call { +// PodWarningEventWatcher indicates an expected call of PodWarningEventWatcher. +func (mr *MockClientInterfaceMockRecorder) PodWarningEventWatcher(ctx interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSecrets", reflect.TypeOf((*MockClientInterface)(nil).CreateSecrets), componentName, commonObjectMeta, svc, ownerReference) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PodWarningEventWatcher", reflect.TypeOf((*MockClientInterface)(nil).PodWarningEventWatcher), ctx) } -// ListSecrets mocks base method -func (m *MockClientInterface) ListSecrets(labelSelector string) ([]v11.Secret, error) { +// PodWatcher mocks base method. +func (m *MockClientInterface) PodWatcher(ctx context.Context, selector string) (watch.Interface, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListSecrets", labelSelector) - ret0, _ := ret[0].([]v11.Secret) + ret := m.ctrl.Call(m, "PodWatcher", ctx, selector) + ret0, _ := ret[0].(watch.Interface) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListSecrets indicates an expected call of ListSecrets -func (mr *MockClientInterfaceMockRecorder) ListSecrets(labelSelector interface{}) *gomock.Call { +// PodWatcher indicates an expected call of PodWatcher. +func (mr *MockClientInterfaceMockRecorder) PodWatcher(ctx, selector interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSecrets", reflect.TypeOf((*MockClientInterface)(nil).ListSecrets), labelSelector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PodWatcher", reflect.TypeOf((*MockClientInterface)(nil).PodWatcher), ctx, selector) } -// WaitAndGetSecret mocks base method -func (m *MockClientInterface) WaitAndGetSecret(name, namespace string) (*v11.Secret, error) { +// RunLogout mocks base method. +func (m *MockClientInterface) RunLogout(stdout io.Writer) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "WaitAndGetSecret", name, namespace) - ret0, _ := ret[0].(*v11.Secret) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "RunLogout", stdout) + ret0, _ := ret[0].(error) + return ret0 } -// WaitAndGetSecret indicates an expected call of WaitAndGetSecret -func (mr *MockClientInterfaceMockRecorder) WaitAndGetSecret(name, namespace interface{}) *gomock.Call { +// RunLogout indicates an expected call of RunLogout. +func (mr *MockClientInterfaceMockRecorder) RunLogout(stdout interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitAndGetSecret", reflect.TypeOf((*MockClientInterface)(nil).WaitAndGetSecret), name, namespace) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunLogout", reflect.TypeOf((*MockClientInterface)(nil).RunLogout), stdout) } -// CreateService mocks base method -func (m *MockClientInterface) CreateService(svc v11.Service) (*v11.Service, error) { +// SetCurrentNamespace mocks base method. +func (m *MockClientInterface) SetCurrentNamespace(namespace string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateService", svc) - ret0, _ := ret[0].(*v11.Service) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "SetCurrentNamespace", namespace) + ret0, _ := ret[0].(error) + return ret0 } -// CreateService indicates an expected call of CreateService -func (mr *MockClientInterfaceMockRecorder) CreateService(svc interface{}) *gomock.Call { +// SetCurrentNamespace indicates an expected call of SetCurrentNamespace. +func (mr *MockClientInterfaceMockRecorder) SetCurrentNamespace(namespace interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateService", reflect.TypeOf((*MockClientInterface)(nil).CreateService), svc) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetCurrentNamespace", reflect.TypeOf((*MockClientInterface)(nil).SetCurrentNamespace), namespace) } -// UpdateService mocks base method -func (m *MockClientInterface) UpdateService(svc v11.Service) (*v11.Service, error) { +// SetDiscoveryInterface mocks base method. +func (m *MockClientInterface) SetDiscoveryInterface(client discovery.DiscoveryInterface) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateService", svc) - ret0, _ := ret[0].(*v11.Service) - ret1, _ := ret[1].(error) - return ret0, ret1 + m.ctrl.Call(m, "SetDiscoveryInterface", client) } -// UpdateService indicates an expected call of UpdateService -func (mr *MockClientInterfaceMockRecorder) UpdateService(svc interface{}) *gomock.Call { +// SetDiscoveryInterface indicates an expected call of SetDiscoveryInterface. +func (mr *MockClientInterfaceMockRecorder) SetDiscoveryInterface(client interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateService", reflect.TypeOf((*MockClientInterface)(nil).UpdateService), svc) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetDiscoveryInterface", reflect.TypeOf((*MockClientInterface)(nil).SetDiscoveryInterface), client) } -// ListServices mocks base method -func (m *MockClientInterface) ListServices(selector string) ([]v11.Service, error) { +// SetNamespace mocks base method. +func (m *MockClientInterface) SetNamespace(ns string) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListServices", selector) - ret0, _ := ret[0].([]v11.Service) - ret1, _ := ret[1].(error) - return ret0, ret1 + m.ctrl.Call(m, "SetNamespace", ns) } -// ListServices indicates an expected call of ListServices -func (mr *MockClientInterfaceMockRecorder) ListServices(selector interface{}) *gomock.Call { +// SetNamespace indicates an expected call of SetNamespace. +func (mr *MockClientInterfaceMockRecorder) SetNamespace(ns interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListServices", reflect.TypeOf((*MockClientInterface)(nil).ListServices), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetNamespace", reflect.TypeOf((*MockClientInterface)(nil).SetNamespace), ns) } -// DeleteService mocks base method -func (m *MockClientInterface) DeleteService(serviceName string) error { +// SetupPortForwarding mocks base method. +func (m *MockClientInterface) SetupPortForwarding(pod *v11.Pod, portPairs []string, out, errOut io.Writer, stopChan chan struct{}) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteService", serviceName) + ret := m.ctrl.Call(m, "SetupPortForwarding", pod, portPairs, out, errOut, stopChan) ret0, _ := ret[0].(error) return ret0 } -// DeleteService indicates an expected call of DeleteService -func (mr *MockClientInterfaceMockRecorder) DeleteService(serviceName interface{}) *gomock.Call { +// SetupPortForwarding indicates an expected call of SetupPortForwarding. +func (mr *MockClientInterfaceMockRecorder) SetupPortForwarding(pod, portPairs, out, errOut, stopChan interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteService", reflect.TypeOf((*MockClientInterface)(nil).DeleteService), serviceName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetupPortForwarding", reflect.TypeOf((*MockClientInterface)(nil).SetupPortForwarding), pod, portPairs, out, errOut, stopChan) } -// GetOneService mocks base method -func (m *MockClientInterface) GetOneService(componentName, appName string) (*v11.Service, error) { +// TryWithBlockOwnerDeletion mocks base method. +func (m *MockClientInterface) TryWithBlockOwnerDeletion(ownerReference v12.OwnerReference, exec func(v12.OwnerReference) error) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOneService", componentName, appName) - ret0, _ := ret[0].(*v11.Service) - ret1, _ := ret[1].(error) - return ret0, ret1 + ret := m.ctrl.Call(m, "TryWithBlockOwnerDeletion", ownerReference, exec) + ret0, _ := ret[0].(error) + return ret0 } -// GetOneService indicates an expected call of GetOneService -func (mr *MockClientInterfaceMockRecorder) GetOneService(componentName, appName interface{}) *gomock.Call { +// TryWithBlockOwnerDeletion indicates an expected call of TryWithBlockOwnerDeletion. +func (mr *MockClientInterfaceMockRecorder) TryWithBlockOwnerDeletion(ownerReference, exec interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneService", reflect.TypeOf((*MockClientInterface)(nil).GetOneService), componentName, appName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TryWithBlockOwnerDeletion", reflect.TypeOf((*MockClientInterface)(nil).TryWithBlockOwnerDeletion), ownerReference, exec) } -// GetOneServiceFromSelector mocks base method -func (m *MockClientInterface) GetOneServiceFromSelector(selector string) (*v11.Service, error) { +// UpdateDeployment mocks base method. +func (m *MockClientInterface) UpdateDeployment(deploy v10.Deployment) (*v10.Deployment, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOneServiceFromSelector", selector) - ret0, _ := ret[0].(*v11.Service) + ret := m.ctrl.Call(m, "UpdateDeployment", deploy) + ret0, _ := ret[0].(*v10.Deployment) ret1, _ := ret[1].(error) return ret0, ret1 } -// GetOneServiceFromSelector indicates an expected call of GetOneServiceFromSelector -func (mr *MockClientInterfaceMockRecorder) GetOneServiceFromSelector(selector interface{}) *gomock.Call { +// UpdateDeployment indicates an expected call of UpdateDeployment. +func (mr *MockClientInterfaceMockRecorder) UpdateDeployment(deploy interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOneServiceFromSelector", reflect.TypeOf((*MockClientInterface)(nil).GetOneServiceFromSelector), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDeployment", reflect.TypeOf((*MockClientInterface)(nil).UpdateDeployment), deploy) } -// RunLogout mocks base method -func (m *MockClientInterface) RunLogout(stdout io.Writer) error { +// UpdateDynamicResource mocks base method. +func (m *MockClientInterface) UpdateDynamicResource(gvr schema.GroupVersionResource, name string, u *unstructured.Unstructured) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RunLogout", stdout) + ret := m.ctrl.Call(m, "UpdateDynamicResource", gvr, name, u) ret0, _ := ret[0].(error) return ret0 } -// RunLogout indicates an expected call of RunLogout -func (mr *MockClientInterfaceMockRecorder) RunLogout(stdout interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunLogout", reflect.TypeOf((*MockClientInterface)(nil).RunLogout), stdout) -} - -// CreatePVC mocks base method -func (m *MockClientInterface) CreatePVC(pvc v11.PersistentVolumeClaim) (*v11.PersistentVolumeClaim, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreatePVC", pvc) - ret0, _ := ret[0].(*v11.PersistentVolumeClaim) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CreatePVC indicates an expected call of CreatePVC -func (mr *MockClientInterfaceMockRecorder) CreatePVC(pvc interface{}) *gomock.Call { +// UpdateDynamicResource indicates an expected call of UpdateDynamicResource. +func (mr *MockClientInterfaceMockRecorder) UpdateDynamicResource(gvr, name, u interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePVC", reflect.TypeOf((*MockClientInterface)(nil).CreatePVC), pvc) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateDynamicResource", reflect.TypeOf((*MockClientInterface)(nil).UpdateDynamicResource), gvr, name, u) } -// DeletePVC mocks base method -func (m *MockClientInterface) DeletePVC(pvcName string) error { +// UpdatePVCLabels mocks base method. +func (m *MockClientInterface) UpdatePVCLabels(pvc *v11.PersistentVolumeClaim, labels map[string]string) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeletePVC", pvcName) + ret := m.ctrl.Call(m, "UpdatePVCLabels", pvc, labels) ret0, _ := ret[0].(error) return ret0 } -// DeletePVC indicates an expected call of DeletePVC -func (mr *MockClientInterfaceMockRecorder) DeletePVC(pvcName interface{}) *gomock.Call { +// UpdatePVCLabels indicates an expected call of UpdatePVCLabels. +func (mr *MockClientInterfaceMockRecorder) UpdatePVCLabels(pvc, labels interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePVC", reflect.TypeOf((*MockClientInterface)(nil).DeletePVC), pvcName) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePVCLabels", reflect.TypeOf((*MockClientInterface)(nil).UpdatePVCLabels), pvc, labels) } -// ListPVCs mocks base method -func (m *MockClientInterface) ListPVCs(selector string) ([]v11.PersistentVolumeClaim, error) { +// UpdateSecret mocks base method. +func (m *MockClientInterface) UpdateSecret(secret *v11.Secret, namespace string) (*v11.Secret, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPVCs", selector) - ret0, _ := ret[0].([]v11.PersistentVolumeClaim) + ret := m.ctrl.Call(m, "UpdateSecret", secret, namespace) + ret0, _ := ret[0].(*v11.Secret) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListPVCs indicates an expected call of ListPVCs -func (mr *MockClientInterfaceMockRecorder) ListPVCs(selector interface{}) *gomock.Call { +// UpdateSecret indicates an expected call of UpdateSecret. +func (mr *MockClientInterfaceMockRecorder) UpdateSecret(secret, namespace interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPVCs", reflect.TypeOf((*MockClientInterface)(nil).ListPVCs), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSecret", reflect.TypeOf((*MockClientInterface)(nil).UpdateSecret), secret, namespace) } -// ListPVCNames mocks base method -func (m *MockClientInterface) ListPVCNames(selector string) ([]string, error) { +// UpdateService mocks base method. +func (m *MockClientInterface) UpdateService(svc v11.Service) (*v11.Service, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListPVCNames", selector) - ret0, _ := ret[0].([]string) + ret := m.ctrl.Call(m, "UpdateService", svc) + ret0, _ := ret[0].(*v11.Service) ret1, _ := ret[1].(error) return ret0, ret1 } -// ListPVCNames indicates an expected call of ListPVCNames -func (mr *MockClientInterfaceMockRecorder) ListPVCNames(selector interface{}) *gomock.Call { +// UpdateService indicates an expected call of UpdateService. +func (mr *MockClientInterfaceMockRecorder) UpdateService(svc interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPVCNames", reflect.TypeOf((*MockClientInterface)(nil).ListPVCNames), selector) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateService", reflect.TypeOf((*MockClientInterface)(nil).UpdateService), svc) } -// GetPVCFromName mocks base method -func (m *MockClientInterface) GetPVCFromName(pvcName string) (*v11.PersistentVolumeClaim, error) { +// UpdateStorageOwnerReference mocks base method. +func (m *MockClientInterface) UpdateStorageOwnerReference(pvc *v11.PersistentVolumeClaim, ownerReference ...v12.OwnerReference) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPVCFromName", pvcName) - ret0, _ := ret[0].(*v11.PersistentVolumeClaim) - ret1, _ := ret[1].(error) - return ret0, ret1 + varargs := []interface{}{pvc} + for _, a := range ownerReference { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UpdateStorageOwnerReference", varargs...) + ret0, _ := ret[0].(error) + return ret0 } -// GetPVCFromName indicates an expected call of GetPVCFromName -func (mr *MockClientInterfaceMockRecorder) GetPVCFromName(pvcName interface{}) *gomock.Call { +// UpdateStorageOwnerReference indicates an expected call of UpdateStorageOwnerReference. +func (mr *MockClientInterfaceMockRecorder) UpdateStorageOwnerReference(pvc interface{}, ownerReference ...interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPVCFromName", reflect.TypeOf((*MockClientInterface)(nil).GetPVCFromName), pvcName) + varargs := append([]interface{}{pvc}, ownerReference...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateStorageOwnerReference", reflect.TypeOf((*MockClientInterface)(nil).UpdateStorageOwnerReference), varargs...) } -// UpdatePVCLabels mocks base method -func (m *MockClientInterface) UpdatePVCLabels(pvc *v11.PersistentVolumeClaim, labels map[string]string) error { +// WaitAndGetSecret mocks base method. +func (m *MockClientInterface) WaitAndGetSecret(name, namespace string) (*v11.Secret, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdatePVCLabels", pvc, labels) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "WaitAndGetSecret", name, namespace) + ret0, _ := ret[0].(*v11.Secret) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UpdatePVCLabels indicates an expected call of UpdatePVCLabels -func (mr *MockClientInterfaceMockRecorder) UpdatePVCLabels(pvc, labels interface{}) *gomock.Call { +// WaitAndGetSecret indicates an expected call of WaitAndGetSecret. +func (mr *MockClientInterfaceMockRecorder) WaitAndGetSecret(name, namespace interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePVCLabels", reflect.TypeOf((*MockClientInterface)(nil).UpdatePVCLabels), pvc, labels) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitAndGetSecret", reflect.TypeOf((*MockClientInterface)(nil).WaitAndGetSecret), name, namespace) } -// UpdateStorageOwnerReference mocks base method -func (m *MockClientInterface) UpdateStorageOwnerReference(pvc *v11.PersistentVolumeClaim, ownerReference ...v12.OwnerReference) error { +// WaitForServiceAccountInNamespace mocks base method. +func (m *MockClientInterface) WaitForServiceAccountInNamespace(namespace, serviceAccountName string) error { m.ctrl.T.Helper() - varargs := []interface{}{pvc} - for _, a := range ownerReference { - varargs = append(varargs, a) - } - ret := m.ctrl.Call(m, "UpdateStorageOwnerReference", varargs...) + ret := m.ctrl.Call(m, "WaitForServiceAccountInNamespace", namespace, serviceAccountName) ret0, _ := ret[0].(error) return ret0 } -// UpdateStorageOwnerReference indicates an expected call of UpdateStorageOwnerReference -func (mr *MockClientInterfaceMockRecorder) UpdateStorageOwnerReference(pvc interface{}, ownerReference ...interface{}) *gomock.Call { +// WaitForServiceAccountInNamespace indicates an expected call of WaitForServiceAccountInNamespace. +func (mr *MockClientInterfaceMockRecorder) WaitForServiceAccountInNamespace(namespace, serviceAccountName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]interface{}{pvc}, ownerReference...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateStorageOwnerReference", reflect.TypeOf((*MockClientInterface)(nil).UpdateStorageOwnerReference), varargs...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitForServiceAccountInNamespace", reflect.TypeOf((*MockClientInterface)(nil).WaitForServiceAccountInNamespace), namespace, serviceAccountName) } diff --git a/pkg/kclient/services.go b/pkg/kclient/services.go index 5e25e60a969..197835723a0 100644 --- a/pkg/kclient/services.go +++ b/pkg/kclient/services.go @@ -4,10 +4,9 @@ import ( "context" "fmt" + odolabels "github.com/redhat-developer/odo/pkg/labels" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - odolabels "github.com/redhat-developer/odo/pkg/labels" ) // CreateService generates and creates the service @@ -53,7 +52,7 @@ func (c *Client) DeleteService(serviceName string) error { // GetOneService retrieves the service with the given component and app name // An error is thrown when exactly one service is not found for the selector. func (c *Client) GetOneService(componentName, appName string) (*corev1.Service, error) { - selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode, false) + selector := odolabels.GetSelector(componentName, appName, odolabels.ComponentDevMode) return c.GetOneServiceFromSelector(selector) } diff --git a/pkg/kclient/services_test.go b/pkg/kclient/services_test.go index 00599f3dc81..e66cffab06a 100644 --- a/pkg/kclient/services_test.go +++ b/pkg/kclient/services_test.go @@ -12,13 +12,12 @@ import ( devfileParser "github.com/devfile/library/pkg/devfile/parser" parsercommon "github.com/devfile/library/pkg/devfile/parser/data/v2/common" "github.com/devfile/library/pkg/testingutil" + odolabels "github.com/redhat-developer/odo/pkg/labels" + odoTestingUtil "github.com/redhat-developer/odo/pkg/testingutil" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - odolabels "github.com/redhat-developer/odo/pkg/labels" - odoTestingUtil "github.com/redhat-developer/odo/pkg/testingutil" - ktesting "k8s.io/client-go/testing" ) @@ -212,7 +211,7 @@ func TestListServices(t *testing.T) { { name: "case 1: returned 3 services", args: args{ - selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode, false), + selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode), }, returnedServices: corev1.ServiceList{ Items: odoTestingUtil.FakeKubeServices("nodejs"), @@ -222,7 +221,7 @@ func TestListServices(t *testing.T) { { name: "case 2: no service returned", args: args{ - selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode, false), + selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode), }, returnedServices: corev1.ServiceList{ Items: nil, @@ -269,7 +268,7 @@ func TestClient_GetOneServiceFromSelector(t *testing.T) { { name: "case 1: returned the correct service", args: args{ - selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode, false), + selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode), }, returnedServices: corev1.ServiceList{ Items: []corev1.Service{ @@ -281,7 +280,7 @@ func TestClient_GetOneServiceFromSelector(t *testing.T) { { name: "case 2: no service returned", args: args{ - selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode, false), + selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode), }, returnedServices: corev1.ServiceList{ Items: nil, @@ -291,7 +290,7 @@ func TestClient_GetOneServiceFromSelector(t *testing.T) { { name: "case 3: more than one service returned", args: args{ - selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode, false), + selector: odolabels.GetSelector("nodejs", "app", odolabels.ComponentDevMode), }, returnedServices: corev1.ServiceList{ Items: odoTestingUtil.FakeKubeServices("nodejs"), diff --git a/pkg/kclient/volumes_test.go b/pkg/kclient/volumes_test.go index 058fa7c35be..6ef8c8bc7ee 100644 --- a/pkg/kclient/volumes_test.go +++ b/pkg/kclient/volumes_test.go @@ -16,7 +16,6 @@ import ( "k8s.io/apimachinery/pkg/runtime" "github.com/devfile/library/pkg/devfile/generator" - "github.com/redhat-developer/odo/pkg/util" ) @@ -141,7 +140,7 @@ func TestDeletePVC(t *testing.T) { err := fakeClient.DeletePVC(tt.pvcName) - // Checks for error in positive cases + //Checks for error in positive cases if !tt.wantErr == (err != nil) { t.Errorf(" client.DeletePVC(name) unexpected error %v, wantErr %v", err, tt.wantErr) } @@ -271,7 +270,7 @@ func TestGetPVCFromName(t *testing.T) { returnPVC, err := fakeClient.GetPVCFromName(tt.pvcName) - // Checks for error in positive cases + //Checks for error in positive cases if !tt.wantErr == (err != nil) { t.Errorf(" client.GetPVCFromName(name) unexpected error %v, wantErr %v", err, tt.wantErr) } diff --git a/pkg/labels/constants.go b/pkg/labels/constants.go index 901a06c0617..bfc12eb9018 100644 --- a/pkg/labels/constants.go +++ b/pkg/labels/constants.go @@ -23,7 +23,7 @@ const ( // odoModeLabel indicates which command were used to create the component, either dev or deploy odoModeLabel = "odo.dev/mode" - // odoProjectTypeAnnotation indicates the project type of the component + // odoProjectTypeAnnotation indicates the project type fohe component odoProjectTypeAnnotation = "odo.dev/project-type" appLabel = "app" @@ -43,7 +43,7 @@ const ( // ComponentDeployMode indicates the resource is deployed using deploy command ComponentDeployMode = "Deploy" - // ComponentAnyMode is used to search resources deployed using either dev or deploy command + // ComponentAnyMode is used to search resources deployed using either dev or deploy comamnd ComponentAnyMode = "" // odoManager is the value of the manager when a component is managed by odo diff --git a/pkg/labels/labels.go b/pkg/labels/labels.go index 9efd4f8987e..e6c929dbe86 100644 --- a/pkg/labels/labels.go +++ b/pkg/labels/labels.go @@ -3,17 +3,14 @@ package labels import ( "errors" - "k8s.io/apimachinery/pkg/labels" - "github.com/redhat-developer/odo/pkg/version" + "k8s.io/apimachinery/pkg/labels" ) // GetLabels return labels that should be applied to every object for given component in active application // if you need labels to filter component then use GetSelector instead -// Note: isPartOfComponent denotes if the label is required for a core resource(deployment, svc, pvc, pv) of a given component deployed with `odo dev`; -// it is the only thing that sets it apart from the resources created via other ways (`odo deploy`, deploying resource with apply command during `odo dev`) -func GetLabels(componentName string, applicationName string, mode string, isPartOfComponent bool) map[string]string { - labels := getLabels(componentName, applicationName, mode, true, isPartOfComponent) +func GetLabels(componentName string, applicationName string, mode string) map[string]string { + labels := getLabels(componentName, applicationName, mode, true) return labels } @@ -76,32 +73,25 @@ func SetProjectType(annotations map[string]string, value string) { } // GetSelector returns a selector string used for selection of resources which are part of the given component in given mode -// Note: isPartOfComponent denotes if the selector is required for a core resource(deployment, svc, pvc, pv) of a given component deployed with `odo dev` -// it is the only thing that sets it apart from the resources created via other ways (`odo deploy`, deploying resource with apply command during `odo dev`) -func GetSelector(componentName string, applicationName string, mode string, isPartOfComponent bool) string { - labels := getLabels(componentName, applicationName, mode, false, isPartOfComponent) +func GetSelector(componentName string, applicationName string, mode string) string { + labels := getLabels(componentName, applicationName, mode, false) return labels.String() } -// getLabels return labels that should be applied to every object for given component in active application +// GetLabels return labels that should be applied to every object for given component in active application // additional labels are used only for creating object // if you are creating something use additional=true // if you need labels to filter component then use additional=false -// isPartOfComponent denotes if the label is required for a core resource(deployment, svc, pvc, pv) of a given component deployed with `odo dev` -// it is the only thing that sets it apart from the resources created via other ways (`odo deploy`, deploying resource with apply command during `odo dev`) -func getLabels(componentName string, applicationName string, mode string, additional bool, isPartOfComponent bool) labels.Set { +func getLabels(componentName string, applicationName string, mode string, additional bool) labels.Set { labels := getApplicationLabels(applicationName, additional) labels[kubernetesInstanceLabel] = componentName if mode != ComponentAnyMode { labels[odoModeLabel] = mode } - if isPartOfComponent { - labels[componentLabel] = componentName - } return labels } -// getApplicationLabels return labels that identifies given application +// GetLabels return labels that identifies given application // additional labels are used only when creating object // if you are creating something use additional=true // if you need labels to filter component then use additional=false diff --git a/pkg/labels/labels_test.go b/pkg/labels/labels_test.go index 911dcade6f4..d5a512f6d2f 100644 --- a/pkg/labels/labels_test.go +++ b/pkg/labels/labels_test.go @@ -4,17 +4,15 @@ import ( "reflect" "testing" - "k8s.io/apimachinery/pkg/labels" - "github.com/redhat-developer/odo/pkg/version" + "k8s.io/apimachinery/pkg/labels" ) func Test_getLabels(t *testing.T) { type args struct { - componentName string - applicationName string - additional bool - isPartOfComponent bool + componentName string + applicationName string + additional bool } tests := []struct { name string @@ -50,25 +48,10 @@ func Test_getLabels(t *testing.T) { "odo.dev/mode": "Dev", }, }, - { - name: "everything with isPartOfComponent", - args: args{ - componentName: "componentname", - applicationName: "applicationname", - isPartOfComponent: true, - }, - want: labels.Set{ - kubernetesManagedByLabel: "odo", - kubernetesPartOfLabel: "applicationname", - kubernetesInstanceLabel: "componentname", - "odo.dev/mode": "Dev", - componentLabel: "componentname", - }, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := getLabels(tt.args.componentName, tt.args.applicationName, ComponentDevMode, tt.args.additional, tt.args.isPartOfComponent); !reflect.DeepEqual(got, tt.want) { + if got := getLabels(tt.args.componentName, tt.args.applicationName, ComponentDevMode, tt.args.additional); !reflect.DeepEqual(got, tt.want) { t.Errorf("GetLabels() = %v, want %v", got, tt.want) } }) diff --git a/pkg/logs/logs.go b/pkg/logs/logs.go index 249fb94502c..18fdb8b9100 100644 --- a/pkg/logs/logs.go +++ b/pkg/logs/logs.go @@ -3,16 +3,14 @@ package logs import ( "fmt" "io" - "k8s.io/apimachinery/pkg/runtime/schema" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - corev1 "k8s.io/api/core/v1" - "github.com/redhat-developer/odo/pkg/kclient" odolabels "github.com/redhat-developer/odo/pkg/labels" + corev1 "k8s.io/api/core/v1" ) type LogsClient struct { @@ -92,14 +90,14 @@ func (o *LogsClient) getLogsForMode( }() if mode == odolabels.ComponentDevMode || mode == odolabels.ComponentAnyMode { - selector = odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode, false) + selector = odolabels.GetSelector(componentName, "app", odolabels.ComponentDevMode) err := o.getPodsForSelector(selector, namespace, podChan) if err != nil { errChan <- err } } if mode == odolabels.ComponentDeployMode || mode == odolabels.ComponentAnyMode { - selector = odolabels.GetSelector(componentName, "app", odolabels.ComponentDeployMode, false) + selector = odolabels.GetSelector(componentName, "app", odolabels.ComponentDeployMode) err := o.getPodsForSelector(selector, namespace, podChan) if err != nil { errChan <- err diff --git a/pkg/odo/cli/dev/dev.go b/pkg/odo/cli/dev/dev.go index bc55de87d8e..a5d7d3a9c20 100644 --- a/pkg/odo/cli/dev/dev.go +++ b/pkg/odo/cli/dev/dev.go @@ -234,7 +234,7 @@ func (o *DevOptions) Run(ctx context.Context) (err error) { o.ignorePaths = ignores log.Section("Deploying to the cluster in developer mode") - componentStatus, err := o.clientset.DevClient.Start(devFileObj, namespace, o.ignorePaths, path, o.debugFlag, o.buildCommandFlag, o.runCommandFlag, o.randomPortsFlag, o.errOut, o.clientset.FS) + componentStatus, err := o.clientset.DevClient.Start(devFileObj, namespace, o.ignorePaths, path, o.debugFlag, o.buildCommandFlag, o.runCommandFlag, o.randomPortsFlag, o.errOut) if err != nil { return err } @@ -302,7 +302,6 @@ func (o *Handler) regenerateComponentAdapterFromWatchParams(parameters watch.Wat Context: parameters.Path, AppName: parameters.ApplicationName, Devfile: devObj, - FS: o.clientset.FS, }, parameters.EnvSpecificInfo.GetNamespace(), ), nil diff --git a/pkg/service/link.go b/pkg/service/link.go index 130709ee3e0..a73ee2bb1c7 100644 --- a/pkg/service/link.go +++ b/pkg/service/link.go @@ -6,13 +6,13 @@ import ( "strings" "github.com/devfile/library/pkg/devfile/parser" - "github.com/redhat-developer/odo/pkg/libdevfile" devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2" "github.com/devfile/library/pkg/devfile/generator" devfilefs "github.com/devfile/library/pkg/testingutil/filesystem" "github.com/ghodss/yaml" + odolabels "github.com/redhat-developer/odo/pkg/labels" v1 "k8s.io/api/apps/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -22,8 +22,6 @@ import ( "k8s.io/klog/v2" ctrl "sigs.k8s.io/controller-runtime" - odolabels "github.com/redhat-developer/odo/pkg/labels" - "github.com/redhat-developer/odo/pkg/kclient" sboApi "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1" @@ -124,7 +122,7 @@ func pushLinksWithoutOperator(client kclient.ClientInterface, devfileObj parser. return err } - secrets, err := client.ListSecrets(odolabels.GetSelector(odolabels.GetComponentName(labels), odolabels.GetAppName(labels), odolabels.ComponentAnyMode, false)) + secrets, err := client.ListSecrets(odolabels.GetSelector(odolabels.GetComponentName(labels), odolabels.GetAppName(labels), odolabels.ComponentAnyMode)) if err != nil { return err } diff --git a/pkg/service/service.go b/pkg/service/service.go index 27a5ea902db..696c2fabd8f 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -391,3 +391,45 @@ func updateOperatorService(client kclient.ClientInterface, u unstructured.Unstru } return updated, err } + +// ValidateResourcesExist validates if the Kubernetes inlined components are installed on the cluster +func ValidateResourcesExist(client kclient.ClientInterface, devfileObj parser.DevfileObj, k8sComponents []devfile.Component, context string) error { + if len(k8sComponents) == 0 { + return nil + } + + var unsupportedResources []string + for _, c := range k8sComponents { + kindErr, err := ValidateResourceExist(client, devfileObj, c, context) + if err != nil { + if kindErr != "" { + unsupportedResources = append(unsupportedResources, kindErr) + } else { + return err + } + } + } + + if len(unsupportedResources) > 0 { + // tell the user about all the unsupported resources in one message + return fmt.Errorf("following resource(s) in the devfile are not supported by your cluster; please install corresponding Operator(s) before doing \"odo dev\": %s", strings.Join(unsupportedResources, ", ")) + } + return nil +} + +func ValidateResourceExist(client kclient.ClientInterface, devfileObj parser.DevfileObj, k8sComponent devfile.Component, context string) (kindErr string, err error) { + // get the string representation of the YAML definition of a CRD + u, err := libdevfile.GetK8sComponentAsUnstructured(devfileObj, k8sComponent.Name, context, devfilefs.DefaultFs{}) + if err != nil { + return "", err + } + + _, err = client.GetRestMappingFromUnstructured(u) + if err != nil && u.GetKind() != "ServiceBinding" { + // getting a RestMapping would fail if there are no matches for the Kind field on the cluster; + // but if it's a "ServiceBinding" resource, we don't add it to unsupported list because odo can create links + // without having SBO installed + return u.GetKind(), errors.New("resource not supported") + } + return "", nil +} diff --git a/pkg/storage/kubernetes.go b/pkg/storage/kubernetes.go index 9468c295f90..79b932768dd 100644 --- a/pkg/storage/kubernetes.go +++ b/pkg/storage/kubernetes.go @@ -41,7 +41,7 @@ func (k kubernetesClient) Create(storage Storage) error { return err } - labels := odolabels.GetLabels(k.componentName, k.appName, odolabels.ComponentDevMode, false) + labels := odolabels.GetLabels(k.componentName, k.appName, odolabels.ComponentDevMode) odolabels.AddStorageInfo(labels, storage.Name, strings.Contains(storage.Name, OdoSourceVolume)) objectMeta := generator.GetObjectMeta(pvcName, k.client.GetCurrentNamespace(), labels, nil) @@ -86,8 +86,7 @@ func (k kubernetesClient) Delete(name string) error { func (k kubernetesClient) List() (StorageList, error) { if k.deployment == nil { var err error - selector := odolabels.GetSelector(k.componentName, k.appName, odolabels.ComponentAnyMode, true) - k.deployment, err = k.client.GetOneDeploymentFromSelector(selector) + k.deployment, err = k.client.GetOneDeployment(k.componentName, k.appName) if err != nil { if _, ok := err.(*kclient.DeploymentNotFoundError); ok { return StorageList{}, nil diff --git a/pkg/storage/kubernetes_test.go b/pkg/storage/kubernetes_test.go index d92b016ec84..cdac4d8b878 100644 --- a/pkg/storage/kubernetes_test.go +++ b/pkg/storage/kubernetes_test.go @@ -42,8 +42,8 @@ func Test_kubernetesClient_List(t *testing.T) { }, returnedDeployments: &appsv1.DeploymentList{ Items: []appsv1.Deployment{ - *testingutil.CreateFakeDeployment("nodejs", true), - *testingutil.CreateFakeDeployment("nodejs", true), + *testingutil.CreateFakeDeployment("nodejs"), + *testingutil.CreateFakeDeployment("nodejs"), }, }, wantErr: true, @@ -72,7 +72,7 @@ func Test_kubernetesClient_List(t *testing.T) { }, returnedDeployments: &appsv1.DeploymentList{ Items: []appsv1.Deployment{ - *testingutil.CreateFakeDeployment("nodejs", true), + *testingutil.CreateFakeDeployment("nodejs"), }, }, want: StorageList{}, @@ -93,7 +93,7 @@ func Test_kubernetesClient_List(t *testing.T) { {Name: "volume-0-vol", MountPath: "/data"}, {Name: "volume-1-vol", MountPath: "/path"}, }), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -128,7 +128,7 @@ func Test_kubernetesClient_List(t *testing.T) { testingutil.CreateFakeContainerWithVolumeMounts("container-1", []corev1.VolumeMount{ {Name: "volume-1-vol", MountPath: "/path"}, }), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -161,7 +161,7 @@ func Test_kubernetesClient_List(t *testing.T) { {Name: "volume-0-vol", MountPath: "/data"}, }), testingutil.CreateFakeContainer("container-1"), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -186,7 +186,7 @@ func Test_kubernetesClient_List(t *testing.T) { testingutil.CreateFakeContainerWithVolumeMounts("container-0", []corev1.VolumeMount{ {Name: "volume-0-nodejs-vol", MountPath: "/data"}, }), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -220,7 +220,7 @@ func Test_kubernetesClient_List(t *testing.T) { {Name: "volume-1-vol", MountPath: "/path"}, {Name: "volume-vol", MountPath: "/path1"}, }), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -251,7 +251,7 @@ func Test_kubernetesClient_List(t *testing.T) { {Name: "volume-1-vol", MountPath: "/path"}, {Name: OdoSourceVolume, MountPath: "/path1"}, }), - }, []corev1.Container{}, true), + }, []corev1.Container{}), }, }, returnedPVCs: &corev1.PersistentVolumeClaimList{ @@ -430,7 +430,7 @@ func Test_kubernetesClient_Create(t *testing.T) { t.Errorf("failed to create quantity by calling resource.ParseQuantity(%v)", tt.args.storage.Spec.Size) } - wantLabels := odolabels.GetLabels(tt.fields.generic.componentName, tt.fields.generic.appName, odolabels.ComponentDevMode, false) + wantLabels := odolabels.GetLabels(tt.fields.generic.componentName, tt.fields.generic.appName, odolabels.ComponentDevMode) odolabels.AddStorageInfo(wantLabels, tt.args.storage.Name, strings.Contains(tt.args.storage.Name, OdoSourceVolume)) // created PVC should be labeled with labels passed to CreatePVC diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index 6a769b7b174..5e9f8faf254 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -12,7 +12,7 @@ import ( ) func getStorageLabels(storageName, componentName, applicationName string) map[string]string { - labels := odolabels.GetLabels(componentName, applicationName, odolabels.ComponentDevMode, false) + labels := odolabels.GetLabels(componentName, applicationName, odolabels.ComponentDevMode) odolabels.AddStorageInfo(labels, storageName, false) return labels } diff --git a/pkg/testingutil/deployments.go b/pkg/testingutil/deployments.go index f430231c060..888999f8ecf 100644 --- a/pkg/testingutil/deployments.go +++ b/pkg/testingutil/deployments.go @@ -1,36 +1,32 @@ package testingutil import ( + odolabels "github.com/redhat-developer/odo/pkg/labels" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - - odolabels "github.com/redhat-developer/odo/pkg/labels" ) // CreateFakeDeployment creates a fake deployment with the given pod name and labels -// isPartOfComponent bool decides if the deployment is supposed to be a part of the core resources deployed by `odo dev` -func CreateFakeDeployment(podName string, isPartOfComponent bool) *appsv1.Deployment { +func CreateFakeDeployment(podName string) *appsv1.Deployment { fakeUID := types.UID("12345") - labels := odolabels.Builder(). - WithApp("app"). - WithAppName("app"). - WithComponentName(podName). - WithManager("odo"). - WithMode(odolabels.ComponentDevMode) - if isPartOfComponent { - labels = labels.WithComponent(podName) - } + deployment := appsv1.Deployment{ TypeMeta: metav1.TypeMeta{ Kind: "Deployment", APIVersion: "apps/v1", }, ObjectMeta: metav1.ObjectMeta{ - Name: podName, - UID: fakeUID, - Labels: labels.Labels(), + Name: podName, + UID: fakeUID, + Labels: odolabels.Builder(). + WithApp("app"). + WithAppName("app"). + WithComponentName(podName). + WithManager("odo"). + WithMode(odolabels.ComponentDevMode). + Labels(), Annotations: odolabels.Builder().WithProjectType(podName).Labels(), }, } @@ -38,9 +34,8 @@ func CreateFakeDeployment(podName string, isPartOfComponent bool) *appsv1.Deploy } // CreateFakeDeploymentsWithContainers creates a fake pod with the given pod name, container name and containers -// isPartOfComponent bool decides if the deployment is supposed to be a part of the core resources deployed by `odo dev` -func CreateFakeDeploymentsWithContainers(podName string, containers []corev1.Container, initContainers []corev1.Container, isPartOfComponent bool) *appsv1.Deployment { - fakeDeployment := CreateFakeDeployment(podName, isPartOfComponent) +func CreateFakeDeploymentsWithContainers(podName string, containers []corev1.Container, initContainers []corev1.Container) *appsv1.Deployment { + fakeDeployment := CreateFakeDeployment(podName) fakeDeployment.Spec.Template.Spec.Containers = containers fakeDeployment.Spec.Template.Spec.InitContainers = initContainers return fakeDeployment diff --git a/pkg/testingutil/pods.go b/pkg/testingutil/pods.go index 2b0938d60cf..6e88a84aae3 100644 --- a/pkg/testingutil/pods.go +++ b/pkg/testingutil/pods.go @@ -1,10 +1,9 @@ package testingutil import ( + odolabels "github.com/redhat-developer/odo/pkg/labels" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - odolabels "github.com/redhat-developer/odo/pkg/labels" ) // CreateFakePod creates a fake pod with the given pod name and component name @@ -12,7 +11,7 @@ func CreateFakePod(componentName, podName string) *corev1.Pod { fakePod := &corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: podName, - Labels: odolabels.GetLabels(componentName, "app", odolabels.ComponentDevMode, false), + Labels: odolabels.GetLabels(componentName, "app", odolabels.ComponentDevMode), }, Status: corev1.PodStatus{ Phase: corev1.PodRunning, diff --git a/pkg/testingutil/services.go b/pkg/testingutil/services.go index 4a669e3dd01..9b1ae98941f 100644 --- a/pkg/testingutil/services.go +++ b/pkg/testingutil/services.go @@ -1,14 +1,13 @@ package testingutil import ( + odolabels "github.com/redhat-developer/odo/pkg/labels" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - odolabels "github.com/redhat-developer/odo/pkg/labels" ) func FakeKubeService(componentName, serviceName string) corev1.Service { - labels := odolabels.GetLabels(componentName, "app", odolabels.ComponentDevMode, false) + labels := odolabels.GetLabels(componentName, "app", odolabels.ComponentDevMode) return corev1.Service{ ObjectMeta: metav1.ObjectMeta{ Name: serviceName, diff --git a/pkg/watch/watch.go b/pkg/watch/watch.go index 43105260a3b..bdf0f69adf0 100644 --- a/pkg/watch/watch.go +++ b/pkg/watch/watch.go @@ -11,7 +11,6 @@ import ( "time" "github.com/devfile/library/pkg/devfile/parser" - _delete "github.com/redhat-developer/odo/pkg/component/delete" "github.com/redhat-developer/odo/pkg/devfile/adapters" "github.com/redhat-developer/odo/pkg/kclient" @@ -233,7 +232,7 @@ func (o *WatchClient) WatchAndPush(out io.Writer, parameters WatchParameters, ct } defer sourcesWatcher.Close() - selector := labels.GetSelector(parameters.ComponentName, parameters.ApplicationName, labels.ComponentDevMode, true) + selector := labels.GetSelector(parameters.ComponentName, parameters.ApplicationName, labels.ComponentDevMode) deploymentWatcher, err := o.kubeClient.DeploymentWatcher(ctx, selector) if err != nil { return fmt.Errorf("error watching deployment: %v", err) @@ -429,7 +428,7 @@ func (o *WatchClient) eventWatcher(ctx context.Context, sourcesWatcher *fsnotify switch kevent := ev.Object.(type) { case *corev1.Event: podName := kevent.InvolvedObject.Name - selector := labels.GetSelector(parameters.ComponentName, parameters.ApplicationName, labels.ComponentDevMode, true) + selector := labels.GetSelector(parameters.ComponentName, parameters.ApplicationName, labels.ComponentDevMode) matching, err := o.kubeClient.IsPodNameMatchingSelector(ctx, podName, selector) if err != nil { return err diff --git a/tests/e2escenarios/e2e_devfile_test.go b/tests/e2escenarios/e2e_devfile_test.go index fb5b41716d9..0668b8cbe2e 100644 --- a/tests/e2escenarios/e2e_devfile_test.go +++ b/tests/e2escenarios/e2e_devfile_test.go @@ -42,7 +42,7 @@ var _ = Describe("odo devfile supported tests", func() { defer helper.Chdir(workingDir) helper.Chdir(projectDirPath) helper.Cmd("odo", "init", "--name", componentName, "--devfile", component, "--starter", starter).ShouldPass() - session, _, _, _, err := helper.StartDevMode(nil) + session, _, _, _, err := helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) session.Stop() session.WaitEnd() diff --git a/tests/e2escenarios/e2e_test.go b/tests/e2escenarios/e2e_test.go index 8096f669006..5a4a565dac4 100644 --- a/tests/e2escenarios/e2e_test.go +++ b/tests/e2escenarios/e2e_test.go @@ -13,7 +13,6 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/redhat-developer/odo/tests/helper" ) @@ -76,7 +75,7 @@ var _ = Describe("E2E Test", func() { var devSession helper.DevSession var ports map[string]string - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "from Node.js", "from updated Node.js") Expect(err).ToNot(HaveOccurred()) _, _, _, err = devSession.WaitSync() @@ -119,7 +118,7 @@ var _ = Describe("E2E Test", func() { helper.MatchAllInOutput(stdout, []string{componentName, "nodejs", "Deploy"}) // start dev mode again - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) // making changes to the project again @@ -193,7 +192,7 @@ var _ = Describe("E2E Test", func() { var devSession helper.DevSession var ports map[string]string - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "from Node.js", "from updated Node.js") Expect(err).ToNot(HaveOccurred()) @@ -239,7 +238,7 @@ var _ = Describe("E2E Test", func() { helper.MatchAllInOutput(stdout, []string{componentName, "nodejs", "Deploy"}) // start dev mode again - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) // making changes to the project again diff --git a/tests/helper/helper_dev.go b/tests/helper/helper_dev.go index 8fadc31d6ce..0cd1536e8cd 100644 --- a/tests/helper/helper_dev.go +++ b/tests/helper/helper_dev.go @@ -24,7 +24,7 @@ import ( var outContents []byte var errContents []byte BeforeEach(func() { - devSession, outContents, errContents = helper.StartDevMode(nil) + devSession, outContents, errContents = helper.StartDevMode() }) AfterEach(func() { devSession.Stop() @@ -48,7 +48,7 @@ import ( var outContents []byte var errContents []byte BeforeEach(func() { - devSession, outContents, errContents = helper.StartDevMode(nil) + devSession, outContents, errContents = helper.StartDevMode() defer devSession.Stop() [...] }) @@ -71,7 +71,7 @@ import ( var outContents []byte var errContents []byte BeforeEach(func() { - devSession, outContents, errContents = helper.StartDevMode(nil) + devSession, outContents, errContents = helper.StartDevMode() defer devSession.Kill() [...] }) @@ -115,10 +115,10 @@ type DevSession struct { // It returns a session structure, the contents of the standard and error outputs // and the redirections endpoints to access ports opened by component // when the dev mode is completely started -func StartDevMode(envvars []string, opts ...string) (DevSession, []byte, []byte, map[string]string, error) { +func StartDevMode(opts ...string) (DevSession, []byte, []byte, map[string]string, error) { args := []string{"dev", "--random-ports"} args = append(args, opts...) - session := Cmd("odo", args...).AddEnv(envvars...).Runner().session + session := CmdRunner("odo", args...) WaitForOutputToContain("Press Ctrl+c to exit `odo dev` and delete resources from the cluster", 360, 10, session) result := DevSession{ session: session, @@ -156,7 +156,7 @@ func (o DevSession) WaitEnd() { o.session.Wait(3 * time.Minute) } -// WaitSync waits for the synchronization of files to be finished +// WaitSync waits for the synchronization of files to be finished // It returns the contents of the standard and error outputs // and the list of forwarded ports // since the end of the dev mode or the last time WaitSync/GetInfo has been called @@ -192,8 +192,8 @@ func (o DevSession) CheckNotSynced(timeout time.Duration) { // RunDevMode runs a dev session and executes the `inside` code when the dev mode is completely started // The inside handler is passed the internal session pointer, the contents of the standard and error outputs, // and a slice of strings - ports - giving the redirections in the form localhost: to access ports opened by component -func RunDevMode(additionalOpts []string, envvars []string, inside func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string)) error { - session, outContents, errContents, urls, err := StartDevMode(envvars, additionalOpts...) +func RunDevMode(additionalOpts []string, inside func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string)) error { + session, outContents, errContents, urls, err := StartDevMode(additionalOpts...) if err != nil { return err } @@ -205,35 +205,6 @@ func RunDevMode(additionalOpts []string, envvars []string, inside func(session * return nil } -// DevModeShouldFail runs `odo dev` with an intention to fail, and checks for a given substring -// `odo dev` runs in an infinite reconciliation loop, and hence running it with Cmd will not work for a lot of failing cases, -// this function is helpful in such cases. -// TODO(pvala): Modify StartDevMode to take substring arg into account, and replace this method with it. -func DevModeShouldFail(envvars []string, substring string, opts ...string) (DevSession, []byte, []byte, error) { - args := []string{"dev", "--random-ports"} - args = append(args, opts...) - session := Cmd("odo", args...).AddEnv(envvars...).Runner().session - WaitForOutputToContain(substring, 360, 10, session) - result := DevSession{ - session: session, - } - defer func() { - result.Stop() - result.WaitEnd() - }() - outContents := session.Out.Contents() - errContents := session.Err.Contents() - err := session.Out.Clear() - if err != nil { - return DevSession{}, nil, nil, err - } - err = session.Err.Clear() - if err != nil { - return DevSession{}, nil, nil, err - } - return result, outContents, errContents, nil -} - // getPorts returns a map of ports redirected depending on the information in s // `- Forwarding from 127.0.0.1:40001 -> 3000` will return { "3000": "127.0.0.1:40001" } func getPorts(s string) map[string]string { diff --git a/tests/integration/cmd_add_binding_test.go b/tests/integration/cmd_add_binding_test.go index 3877ae65614..a312e0a586c 100644 --- a/tests/integration/cmd_add_binding_test.go +++ b/tests/integration/cmd_add_binding_test.go @@ -242,7 +242,7 @@ status: When("odo dev is run", func() { BeforeEach(func() { - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { diff --git a/tests/integration/cmd_delete_test.go b/tests/integration/cmd_delete_test.go index 7c04a75d758..c12aa977c9c 100644 --- a/tests/integration/cmd_delete_test.go +++ b/tests/integration/cmd_delete_test.go @@ -113,7 +113,7 @@ ComponentSettings: var devSession helper.DevSession BeforeEach(func() { var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) defer func() { devSession.Kill() diff --git a/tests/integration/cmd_describe_component_test.go b/tests/integration/cmd_describe_component_test.go index c94839f1c0d..58173b5a118 100644 --- a/tests/integration/cmd_describe_component_test.go +++ b/tests/integration/cmd_describe_component_test.go @@ -171,7 +171,7 @@ var _ = Describe("odo describe component command tests", func() { BeforeEach(func() { var err error - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).NotTo(HaveOccurred()) }) diff --git a/tests/integration/cmd_describe_list_binding_test.go b/tests/integration/cmd_describe_list_binding_test.go index 87c60b4bf88..59fff7c1db5 100644 --- a/tests/integration/cmd_describe_list_binding_test.go +++ b/tests/integration/cmd_describe_list_binding_test.go @@ -523,7 +523,7 @@ var _ = Describe("odo describe/list binding command tests", func() { var session helper.DevSession BeforeEach(func() { var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) diff --git a/tests/integration/cmd_dev_debug_test.go b/tests/integration/cmd_dev_debug_test.go index a808ed9220c..e8c0dc9d485 100644 --- a/tests/integration/cmd_dev_debug_test.go +++ b/tests/integration/cmd_dev_debug_test.go @@ -40,7 +40,7 @@ var _ = Describe("odo dev debug command tests", func() { var ports map[string]string BeforeEach(func() { var err error - devSession, _, _, ports, err = helper.StartDevMode(nil, "--debug") + devSession, _, _, ports, err = helper.StartDevMode("--debug") Expect(err).ToNot(HaveOccurred()) }) @@ -66,7 +66,7 @@ var _ = Describe("odo dev debug command tests", func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileCompositeRunAndDebug.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) var err error - session, stdout, stderr, ports, err = helper.StartDevMode(nil, "--debug") + session, stdout, stderr, ports, err = helper.StartDevMode("--debug") Expect(err).ToNot(HaveOccurred()) }) @@ -122,72 +122,6 @@ var _ = Describe("odo dev debug command tests", func() { }) }) }) - When("a composite apply command is used as debug command", func() { - deploymentName := "my-component" - var session helper.DevSession - var sessionOut []byte - var err error - var ports map[string]string - const ( - DEVFILE_DEBUG_PORT = "5858" - ) - - BeforeEach(func() { - helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) - helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-composite-apply-commands.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) - session, sessionOut, _, ports, err = helper.StartDevMode([]string{"PODMAN_CMD=echo"}, "--debug") - Expect(err).ToNot(HaveOccurred()) - }) - AfterEach(func() { - session.Stop() - session.WaitEnd() - }) - It("should execute the composite apply commands successfully", func() { - checkDeploymentExists := func() { - out := commonVar.CliRunner.Run("get", "deployments", deploymentName).Out.Contents() - Expect(out).To(ContainSubstring(deploymentName)) - } - checkImageBuilt := func() { - Expect(string(sessionOut)).To(ContainSubstring("Building & Pushing Container")) - Expect(string(sessionOut)).To(ContainSubstring("build -t quay.io/unknown-account/myimage -f " + filepath.Join(commonVar.Context, "Dockerfile ") + commonVar.Context)) - Expect(string(sessionOut)).To(ContainSubstring("push quay.io/unknown-account/myimage")) - } - - checkWSConnection := func() { - // 400 response expected because the endpoint expects a websocket request and we are doing a HTTP GET - // We are just using this to validate if nodejs agent is listening on the other side - helper.HttpWaitForWithStatus("http://"+ports[DEVFILE_DEBUG_PORT], "WebSockets request was expected", 12, 5, 400) - } - By("expecting a ws connection when tried to connect on default debug port locally", func() { - checkWSConnection() - }) - - By("checking is the image was successfully built", func() { - checkImageBuilt() - }) - - By("checking the deployment was created successfully", func() { - checkDeploymentExists() - }) - - By("checking odo dev watches correctly", func() { - // making changes to the project again - helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "from Node.js Starter Application", "from the new Node.js Starter Application") - _, _, _, err = session.WaitSync() - Expect(err).ToNot(HaveOccurred()) - checkDeploymentExists() - checkImageBuilt() - checkWSConnection() - }) - - By("cleaning up the resources on ending the session", func() { - session.Stop() - session.WaitEnd() - out := commonVar.CliRunner.Run("get", "deployments").Out.Contents() - Expect(out).ToNot(ContainSubstring(deploymentName)) - }) - }) - }) When("running build and debug commands as composite in different containers and a shared volume", func() { const devfileCmpName = "nodejs" @@ -201,7 +135,7 @@ var _ = Describe("odo dev debug command tests", func() { filepath.Join(commonVar.Context, "devfile.yaml")) helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) var err error - session, stdout, stderr, ports, err = helper.StartDevMode(nil, "--debug") + session, stdout, stderr, ports, err = helper.StartDevMode("--debug") Expect(err).ToNot(HaveOccurred()) }) diff --git a/tests/integration/cmd_dev_test.go b/tests/integration/cmd_dev_test.go index 52b71c1e78d..0f073ece38b 100644 --- a/tests/integration/cmd_dev_test.go +++ b/tests/integration/cmd_dev_test.go @@ -5,10 +5,8 @@ import ( "io" "io/ioutil" "net/http" - "net/http/httptest" "os" "path/filepath" - "regexp" "sort" "strings" "time" @@ -63,7 +61,7 @@ var _ = Describe("odo dev command tests", func() { Expect(helper.VerifyFileExists(".odo/env/env.yaml")).To(BeFalse()) }) It("should show validation errors if the devfile is incorrect", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "kind: run", "kind: build") helper.WaitForOutputToContain("Error occurred on Push", 180, 10, session) }) @@ -73,7 +71,7 @@ var _ = Describe("odo dev command tests", func() { // Create a new file A fileAPath, fileAText := helper.CreateSimpleFile(commonVar.Context, "my-file-", ".txt") // watch that project - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { // Change some other file B helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "App started", "App is super started") @@ -85,7 +83,7 @@ var _ = Describe("odo dev command tests", func() { Expect(err).ToNot(HaveOccurred()) }) It("ensure that index information is updated", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { indexAfterPush, err := util.ReadFileIndex(filepath.Join(commonVar.Context, ".odo", "odo-file-index.json")) Expect(err).ToNot(HaveOccurred()) @@ -190,7 +188,7 @@ var _ = Describe("odo dev command tests", func() { When("recording telemetry data", func() { BeforeEach(func() { helper.EnableTelemetryDebug() - session, _, _, _, _ := helper.StartDevMode(nil) + session, _, _, _, _ := helper.StartDevMode() session.Stop() session.WaitEnd() }) @@ -214,7 +212,7 @@ var _ = Describe("odo dev command tests", func() { BeforeEach(func() { var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) // An ENV file should have been created indicating current namespace Expect(helper.VerifyFileExists(".odo/env/env.yaml")).To(BeTrue()) @@ -239,7 +237,7 @@ var _ = Describe("odo dev command tests", func() { }) It("should run odo dev on initial namespace", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, outContents, errContents []byte, ports map[string]string) { output := commonVar.CliRunner.Run("get", "deployment").Err.Contents() Expect(string(output)).To(ContainSubstring("No resources found in " + otherNS + " namespace.")) @@ -269,7 +267,7 @@ var _ = Describe("odo dev command tests", func() { BeforeEach(func() { helper.Cmd("odo", "preference", "set", "-f", "Ephemeral", "false").ShouldPass() var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) // An ENV file should have been created indicating current namespace Expect(helper.VerifyFileExists(".odo/env/env.yaml")).To(BeTrue()) @@ -365,7 +363,7 @@ var _ = Describe("odo dev command tests", func() { BeforeEach(func() { var err error - devSession, _, _, _, err = helper.StartDevMode(nil, "--no-watch") + devSession, _, _, _, err = helper.StartDevMode("--no-watch") Expect(err).ToNot(HaveOccurred()) // An ENV file should have been created indicating current namespace Expect(helper.VerifyFileExists(".odo/env/env.yaml")).To(BeTrue()) @@ -398,7 +396,7 @@ var _ = Describe("odo dev command tests", func() { helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "npm start", "sleep 20 ; npm start") var err error - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -444,7 +442,7 @@ var _ = Describe("odo dev command tests", func() { var ports map[string]string BeforeEach(func() { var err error - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -509,7 +507,7 @@ var _ = Describe("odo dev command tests", func() { var ports map[string]string BeforeEach(func() { var err error - devSession, _, _, ports, err = helper.StartDevMode(nil) + devSession, _, _, ports, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -616,7 +614,7 @@ var _ = Describe("odo dev command tests", func() { var session helper.DevSession BeforeEach(func() { var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -635,7 +633,7 @@ var _ = Describe("odo dev command tests", func() { var session helper.DevSession BeforeEach(func() { var err error - session, _, _, _, err = helper.StartDevMode(nil, "--var", "VALUE_TEST=baz") + session, _, _, _, err = helper.StartDevMode("--var", "VALUE_TEST=baz") Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -657,7 +655,7 @@ var _ = Describe("odo dev command tests", func() { var err error err = helper.CreateFileWithContent(varfilename, "VALUE_TEST=baz") Expect(err).ToNot(HaveOccurred()) - session, _, _, _, err = helper.StartDevMode(nil, "--var-file", "vars.txt") + session, _, _, _, err = helper.StartDevMode("--var-file", "vars.txt") Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -681,7 +679,7 @@ var _ = Describe("odo dev command tests", func() { _ = os.Setenv("VALUE_TEST", "baz") err = helper.CreateFileWithContent(varfilename, "VALUE_TEST") Expect(err).ToNot(HaveOccurred()) - session, _, _, _, err = helper.StartDevMode(nil, "--var-file", "vars.txt") + session, _, _, _, err = helper.StartDevMode("--var-file", "vars.txt") Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -707,7 +705,7 @@ var _ = Describe("odo dev command tests", func() { }) It("should be able to exec command", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { podName := commonVar.CliRunner.GetRunningPodNameByComponent(devfileCmpName, commonVar.Project) output := commonVar.CliRunner.ExecListDir(podName, commonVar.Project, "/projects") helper.MatchAllInOutput(output, []string{"test_env_variable", "test_build_env_variable"}) @@ -724,7 +722,7 @@ var _ = Describe("odo dev command tests", func() { }) It("should be able to exec command", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { podName := commonVar.CliRunner.GetRunningPodNameByComponent(devfileCmpName, commonVar.Project) output := commonVar.CliRunner.ExecListDir(podName, commonVar.Project, "/projects") helper.MatchAllInOutput(output, []string{"test_build_env_variable1", "test_build_env_variable2", "test_env_variable1", "test_env_variable2"}) @@ -741,7 +739,7 @@ var _ = Describe("odo dev command tests", func() { }) It("should be able to exec command", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, out, err []byte, ports map[string]string) { podName := commonVar.CliRunner.GetRunningPodNameByComponent(devfileCmpName, commonVar.Project) output := commonVar.CliRunner.ExecListDir(podName, commonVar.Project, "/projects") helper.MatchAllInOutput(output, []string{"build env variable with space", "env with space"}) @@ -766,7 +764,7 @@ var _ = Describe("odo dev command tests", func() { // Create a new directory helper.MakeDir(newDirPath) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -833,7 +831,7 @@ var _ = Describe("odo dev command tests", func() { // Create a new directory helper.MakeDir(newDirPath) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -897,7 +895,7 @@ var _ = Describe("odo dev command tests", func() { fmt.Printf("the .gitignore file was not created, reason %v", err.Error()) } var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -959,7 +957,7 @@ var _ = Describe("odo dev command tests", func() { helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileSourceMapping.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -995,7 +993,7 @@ var _ = Describe("odo dev command tests", func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-with-projects.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1027,7 +1025,7 @@ var _ = Describe("odo dev command tests", func() { // reset clonePath and change the workdir accordingly, it should sync to project name helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "clonePath: webapp/", "# clonePath: webapp/") var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1052,7 +1050,7 @@ var _ = Describe("odo dev command tests", func() { helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-with-multiple-projects.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1079,7 +1077,7 @@ var _ = Describe("odo dev command tests", func() { helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1104,7 +1102,7 @@ var _ = Describe("odo dev command tests", func() { BeforeEach(func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-with-volumes.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1172,7 +1170,7 @@ var _ = Describe("odo dev command tests", func() { helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-with-volume-components.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1194,162 +1192,13 @@ var _ = Describe("odo dev command tests", func() { }) }) - Describe("devfile contains composite apply command", func() { - const ( - deploymentName = "my-component" - DEVFILEPORT = "3000" - ) - var session helper.DevSession - var sessionOut, sessionErr []byte - var err error - var ports map[string]string - BeforeEach(func() { - helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-composite-apply-commands.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) - }) - When("odo dev is running", func() { - BeforeEach(func() { - helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) - session, sessionOut, sessionErr, ports, err = helper.StartDevMode([]string{"PODMAN_CMD=echo"}) - Expect(err).ToNot(HaveOccurred()) - }) - AfterEach(func() { - session.Stop() - session.WaitEnd() - }) - It("should execute the composite apply commands successfully", func() { - checkDeploymentExists := func() { - out := commonVar.CliRunner.Run("get", "deployments", deploymentName).Out.Contents() - Expect(out).To(ContainSubstring(deploymentName)) - } - checkImageBuilt := func() { - Expect(string(sessionOut)).To(ContainSubstring("build -t quay.io/unknown-account/myimage -f " + filepath.Join(commonVar.Context, "Dockerfile ") + commonVar.Context)) - Expect(string(sessionOut)).To(ContainSubstring("push quay.io/unknown-account/myimage")) - } - checkEndpointAccessible := func(message []string) { - url := fmt.Sprintf("http://%s", ports[DEVFILEPORT]) - resp, e := http.Get(url) - Expect(e).ToNot(HaveOccurred()) - defer resp.Body.Close() - - body, _ := io.ReadAll(resp.Body) - helper.MatchAllInOutput(string(body), message) - } - By("checking is the image was successfully built", func() { - checkImageBuilt() - }) - - By("checking the endpoint accessibility", func() { - checkEndpointAccessible([]string{"Hello from Node.js Starter Application!"}) - }) - - By("checking the deployment was created successfully", func() { - checkDeploymentExists() - }) - By("ensuring multiple deployments exist for selector error is not occurred", func() { - Expect(string(sessionErr)).ToNot(ContainSubstring("multiple Deployments exist for the selector")) - }) - By("checking odo dev watches correctly", func() { - // making changes to the project again - helper.ReplaceString(filepath.Join(commonVar.Context, "server.js"), "from Node.js Starter Application", "from the new Node.js Starter Application") - _, _, _, err = session.WaitSync() - Expect(err).ToNot(HaveOccurred()) - checkDeploymentExists() - checkImageBuilt() - checkEndpointAccessible([]string{"Hello from the new Node.js Starter Application!"}) - }) - - By("cleaning up the resources on ending the session", func() { - session.Stop() - session.WaitEnd() - out := commonVar.CliRunner.Run("get", "deployments").Out.Contents() - Expect(out).ToNot(ContainSubstring(deploymentName)) - }) - }) - }) - - Context("the devfile contains an image component that uses a remote Dockerfile", func() { - BeforeEach(func() { - helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) - }) - for _, env := range [][]string{ - {"PODMAN_CMD=echo"}, - { - "PODMAN_CMD=a-command-not-found-for-podman-should-make-odo-fallback-to-docker", - "DOCKER_CMD=echo", - }, - } { - env := env - When(fmt.Sprintf("%v remote server returns a valid file when odo dev is run", env), func() { - var buildRegexp string - var server *httptest.Server - var url string - - BeforeEach(func() { - buildRegexp = regexp.QuoteMeta("build -t quay.io/unknown-account/myimage -f ") + - ".*\\.dockerfile " + regexp.QuoteMeta(commonVar.Context) - server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, `# Dockerfile -FROM node:8.11.1-alpine -COPY . /app -WORKDIR /app -RUN npm install -CMD ["npm", "start"] -`) - })) - url = server.URL - - helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "./Dockerfile", url) - session, sessionOut, _, ports, err = helper.StartDevMode(env) - Expect(err).ToNot(HaveOccurred()) - }) - - AfterEach(func() { - session.Stop() - session.WaitEnd() - server.Close() - }) - - It("should build and push image when odo dev is run", func() { - lines, _ := helper.ExtractLines(string(sessionOut)) - _, ok := helper.FindFirstElementIndexMatchingRegExp(lines, buildRegexp) - Expect(ok).To(BeTrue(), "build regexp not found in output: "+buildRegexp) - Expect(string(sessionOut)).To(ContainSubstring("push quay.io/unknown-account/myimage")) - }) - }) - When(fmt.Sprintf("%v remote server returns an error when odo dev is run", env), func() { - var server *httptest.Server - var url string - BeforeEach(func() { - server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotFound) - })) - url = server.URL - - helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "./Dockerfile", url) - }) - - AfterEach(func() { - server.Close() - }) - - It("should not build images when odo dev is run", func() { - _, sessionOut, _, err := helper.DevModeShouldFail(env, "failed to retrieve "+url) - Expect(err).To(BeNil()) - Expect(sessionOut).NotTo(ContainSubstring("build -t quay.io/unknown-account/myimage -f ")) - Expect(sessionOut).NotTo(ContainSubstring("push quay.io/unknown-account/myimage")) - }) - }) - } - }) - }) - When("running odo dev and devfile with composite command", func() { devfileCmpName := "nodejs" var session helper.DevSession BeforeEach(func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileCompositeCommands.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1357,7 +1206,7 @@ CMD ["npm", "start"] session.WaitEnd() }) - It("should execute all commands in composite command", func() { + It("should execute all commands in composite commmand", func() { // Verify the command executed successfully var statErr error podName := commonVar.CliRunner.GetRunningPodNameByComponent(devfileCmpName, commonVar.Project) @@ -1381,7 +1230,7 @@ CMD ["npm", "start"] BeforeEach(func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileCompositeCommandsParallel.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1413,7 +1262,7 @@ CMD ["npm", "start"] BeforeEach(func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileNestedCompCommands.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1448,7 +1297,7 @@ CMD ["npm", "start"] helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfileCompositeRunAndDebug.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) var err error - session, stdout, stderr, _, err = helper.StartDevMode(nil) + session, stdout, stderr, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -1509,7 +1358,7 @@ CMD ["npm", "start"] filepath.Join(commonVar.Context, "devfile.yaml")) helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) var err error - session, stdout, stderr, _, err = helper.StartDevMode(nil) + session, stdout, stderr, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -1584,7 +1433,7 @@ CMD ["npm", "start"] helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile.yaml"), filepath.Join(commonVar.Context, "devfile.yaml")) helper.ReplaceString(filepath.Join(commonVar.Context, "devfile.yaml"), "npm start", "npm starts") var err error - session, _, initErr, _, err = helper.StartDevMode(nil) + session, _, initErr, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1624,7 +1473,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", devfileCmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "springboot", "devfile.yaml")).ShouldPass() helper.CopyExample(filepath.Join("source", "devfiles", "springboot", "project"), commonVar.Context) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1667,7 +1516,7 @@ CMD ["npm", "start"] }) It("should create vcs-uri annotation for the deployment when running odo dev", func() { - err := helper.RunDevMode(nil, nil, func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(nil, func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string) { annotations := commonVar.CliRunner.GetAnnotationsDeployment(devfileCmpName, "app", commonVar.Project) var valueFound bool for key, value := range annotations { @@ -1691,7 +1540,7 @@ CMD ["npm", "start"] checkFunc func(stdout, stderr string) } testForCmd := func(tt testCase) { - err := helper.RunDevMode(tt.devAdditionalOpts, nil, func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string) { + err := helper.RunDevMode(tt.devAdditionalOpts, func(session *gexec.Session, outContents []byte, errContents []byte, ports map[string]string) { stdout := string(outContents) stderr := string(errContents) @@ -1757,7 +1606,7 @@ CMD ["npm", "start"] }) It("should error out if called with a command of another kind", func() { - // devrun is a valid run command, not a build command + //devrun is a valid run command, not a build command output := helper.Cmd("odo", "dev", "--random-ports", "--build-command", "devrun").ShouldFail().Err() Expect(output).To(ContainSubstring("no build command with name \"devrun\" found in Devfile")) }) @@ -1777,7 +1626,7 @@ CMD ["npm", "start"] }) It("should execute the default build command successfully if specified explicitly", func() { - // devbuild is the default build command + //devbuild is the default build command buildCmdTestFunc("devbuild", func(stdout, stderr string) { By("checking that it did not execute the custom build command", func() { helper.DontMatchAllInOutput(stdout, []string{ @@ -1806,7 +1655,7 @@ CMD ["npm", "start"] }) It("should error out if called with a command of another kind", func() { - // devbuild is a valid build command, not a run command + //devbuild is a valid build command, not a run command output := helper.Cmd("odo", "dev", "--random-ports", "--run-command", "devbuild").ShouldFail().Err() Expect(output).To(ContainSubstring("no run command with name \"devbuild\" found in Devfile")) }) @@ -1826,7 +1675,7 @@ CMD ["npm", "start"] }) It("should execute the default run command successfully if specified explicitly", func() { - // devrun is the default run command + //devrun is the default run command runCmdTestFunc("devrun", func(stdout, stderr string) { By("checking that it did not execute the custom run command", func() { helper.DontMatchAllInOutput(stdout, []string{ @@ -1874,7 +1723,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "springboot", "devfile-registry.yaml")).ShouldPass() helper.CopyExample(filepath.Join("source", "devfiles", "springboot", "project"), commonVar.Context) var err error - session, _, _, _, err = helper.StartDevMode(nil, "-v", "4") + session, _, _, _, err = helper.StartDevMode("-v", "4") Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -1981,7 +1830,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "nodejs", "devfile-with-MR-CL-CR.yaml")).ShouldPass() helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -2020,7 +1869,7 @@ CMD ["npm", "start"] helper.ReplaceString("package.json", "node server.js", "node server/server.js") var err error - session, _, _, _, err = helper.StartDevMode(nil) + session, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -2051,7 +1900,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "nodejs", "devfile.yaml")).ShouldPass() helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) - session, _, errContents, _, err := helper.StartDevMode(nil) + session, _, errContents, _, err := helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) defer func() { session.Stop() @@ -2073,7 +1922,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "nodejs", "devfile.yaml")).ShouldPass() helper.CopyExample(filepath.Join("source", "devfiles", "nodejs", "project"), commonVar.Context) - session, _, errContents, err := helper.StartDevMode(nil) + session, _, errContents, err := helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) defer session.Stop() helper.MatchAllInOutput(string(errContents), []string{"odo may not work as expected in the default project"}) @@ -2081,7 +1930,7 @@ CMD ["npm", "start"] }) */ - // Test reused and adapted from the now-removed `cmd_devfile_delete_test.go`. + //Test reused and adapted from the now-removed `cmd_devfile_delete_test.go`. // cf. https://github.com/redhat-developer/odo/blob/24fd02673d25eb4c7bb166ec3369554a8e64b59c/tests/integration/devfile/cmd_devfile_delete_test.go#L172-L238 When("a component with endpoints is bootstrapped and pushed", func() { @@ -2094,7 +1943,7 @@ CMD ["npm", "start"] helper.GetExamplePath("source", "devfiles", "nodejs", "devfile-with-multiple-endpoints.yaml")).ShouldPass() var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ShouldNot(HaveOccurred()) }) @@ -2143,14 +1992,14 @@ CMD ["npm", "start"] }) It("should run odo dev successfully (#5620)", func() { - devSession, stdoutBytes, stderrBytes, _, err := helper.StartDevMode(nil) + devSession, stdoutBytes, stderrBytes, _, err := helper.StartDevMode() Expect(err).ShouldNot(HaveOccurred()) defer devSession.Stop() const errorMessage = "Failed to create the component:" helper.DontMatchAllInOutput(string(stdoutBytes), []string{errorMessage}) helper.DontMatchAllInOutput(string(stderrBytes), []string{errorMessage}) - // the command has been started directly in the background. Check the PID stored in a specific file. + //the command has been started directly in the background. Check the PID stored in a specific file. commonVar.CliRunner.CheckCmdOpInRemoteDevfilePod( commonVar.CliRunner.GetRunningPodNameByComponent(devfileCmpName, commonVar.Project), "runtime", @@ -2177,7 +2026,7 @@ CMD ["npm", "start"] helper.Cmd("odo", "init", "--name", cmpName, "--devfile-path", helper.GetExamplePath("source", "devfiles", "nodejs", "devfile-with-multiple-endpoints.yaml")).ShouldPass() Expect(helper.VerifyFileExists(".odo/devstate.json")).To(BeFalse()) var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) @@ -2223,7 +2072,7 @@ CMD ["npm", "start"] helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-parent.yaml"), filepath.Join(commonVar.Context, "devfile-parent.yaml")) helper.CopyExample(filepath.Join("source", "nodejs"), commonVar.Context) var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) gitignorePath := filepath.Join(commonVar.Context, ".gitignore") diff --git a/tests/integration/cmd_devfile_deploy_test.go b/tests/integration/cmd_devfile_deploy_test.go index a1997713d91..3ce828d05d0 100644 --- a/tests/integration/cmd_devfile_deploy_test.go +++ b/tests/integration/cmd_devfile_deploy_test.go @@ -102,7 +102,7 @@ var _ = Describe("odo devfile deploy command tests", func() { }) It("should run odo dev successfully", func() { - session, _, _, _, err := helper.StartDevMode(nil) + session, _, _, _, err := helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) session.Kill() session.WaitEnd() @@ -138,7 +138,7 @@ var _ = Describe("odo devfile deploy command tests", func() { When("running and stopping odo dev", func() { BeforeEach(func() { - session, _, _, _, err := helper.StartDevMode(nil) + session, _, _, _, err := helper.StartDevMode() Expect(err).ShouldNot(HaveOccurred()) session.Stop() session.WaitEnd() diff --git a/tests/integration/cmd_devfile_list_test.go b/tests/integration/cmd_devfile_list_test.go index 552cd6e62e2..1776871be89 100644 --- a/tests/integration/cmd_devfile_list_test.go +++ b/tests/integration/cmd_devfile_list_test.go @@ -99,7 +99,7 @@ var _ = Describe("odo list with devfile", func() { helper.CopyExampleDevFile(filepath.Join("source", "devfiles", "nodejs", "devfile-deploy.yaml"), path.Join(commonVar.Context, "devfile.yaml")) helper.Chdir(commonVar.Context) var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -210,7 +210,7 @@ var _ = Describe("odo list with devfile", func() { var devSession helper.DevSession BeforeEach(func() { var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { @@ -237,7 +237,7 @@ var _ = Describe("odo list with devfile", func() { var devSession helper.DevSession BeforeEach(func() { var err error - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) }) AfterEach(func() { diff --git a/tests/integration/cmd_logs_test.go b/tests/integration/cmd_logs_test.go index 594032f308d..26e44e9937a 100644 --- a/tests/integration/cmd_logs_test.go +++ b/tests/integration/cmd_logs_test.go @@ -7,7 +7,6 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/redhat-developer/odo/tests/helper" ) @@ -77,7 +76,7 @@ var _ = Describe("odo logs command tests", func() { var err error BeforeEach(func() { - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) // We need to wait for the pod deployed as a Kubernetes component Eventually(func() bool { @@ -175,7 +174,7 @@ var _ = Describe("odo logs command tests", func() { var devSession helper.DevSession var err error BeforeEach(func() { - devSession, _, _, _, err = helper.StartDevMode(nil) + devSession, _, _, _, err = helper.StartDevMode() Expect(err).ToNot(HaveOccurred()) helper.Cmd("odo", "deploy").AddEnv("PODMAN_CMD=echo").ShouldPass() Eventually(func() bool {