Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #132 from ecordell/unit-test-install-strategy
Unit test install strategy ALM-227
- Loading branch information
Showing
19 changed files
with
788 additions
and
504 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
package client | ||
|
||
import ( | ||
opClient "github.com/coreos-inc/operator-client/pkg/client" | ||
"github.com/pkg/errors" | ||
"k8s.io/api/core/v1" | ||
v1beta1extensions "k8s.io/api/extensions/v1beta1" | ||
v1beta1rbac "k8s.io/api/rbac/v1beta1" | ||
apierrors "k8s.io/apimachinery/pkg/api/errors" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
) | ||
|
||
type InstallStrategyDeploymentInterface interface { | ||
CreateRole(role *v1beta1rbac.Role) (*v1beta1rbac.Role, error) | ||
CreateRoleBinding(roleBinding *v1beta1rbac.RoleBinding) (*v1beta1rbac.RoleBinding, error) | ||
EnsureServiceAccount(serviceAccount *v1.ServiceAccount) (*v1.ServiceAccount, error) | ||
CreateDeployment(deployment *v1beta1extensions.Deployment) (*v1beta1extensions.Deployment, error) | ||
GetServiceAccountByName(serviceAccountName string) (*v1.ServiceAccount, error) | ||
GetOwnedDeployments(owner metav1.ObjectMeta) (*v1beta1extensions.DeploymentList, error) | ||
} | ||
|
||
type InstallStrategyDeploymentClientForNamespace struct { | ||
opClient opClient.Interface | ||
Namespace string | ||
} | ||
|
||
var _ InstallStrategyDeploymentInterface = &InstallStrategyDeploymentClientForNamespace{} | ||
|
||
func NewInstallStrategyDeploymentClient(opClient opClient.Interface, namespace string) InstallStrategyDeploymentInterface { | ||
return &InstallStrategyDeploymentClientForNamespace{ | ||
opClient: opClient, | ||
Namespace: namespace, | ||
} | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) CreateRole(role *v1beta1rbac.Role) (*v1beta1rbac.Role, error) { | ||
return c.opClient.KubernetesInterface().RbacV1beta1().Roles(c.Namespace).Create(role) | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) CreateRoleBinding(roleBinding *v1beta1rbac.RoleBinding) (*v1beta1rbac.RoleBinding, error) { | ||
return c.opClient.KubernetesInterface().RbacV1beta1().RoleBindings(c.Namespace).Create(roleBinding) | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) EnsureServiceAccount(serviceAccount *v1.ServiceAccount) (*v1.ServiceAccount, error) { | ||
foundAccount, err := c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Get(serviceAccount.Name, metav1.GetOptions{}) | ||
if err == nil { | ||
return foundAccount, nil | ||
} | ||
if !apierrors.IsNotFound(err) { | ||
return nil, errors.Wrap(err, "checking for existing serviceacccount failed") | ||
} | ||
|
||
createdAccount, err := c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Create(serviceAccount) | ||
if err != nil && !apierrors.IsAlreadyExists(err) { | ||
return nil, errors.Wrap(err, "creating serviceacccount failed") | ||
} | ||
if apierrors.IsAlreadyExists(err) { | ||
return serviceAccount, nil | ||
} | ||
return createdAccount, nil | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) CreateDeployment(deployment *v1beta1extensions.Deployment) (*v1beta1extensions.Deployment, error) { | ||
return c.opClient.CreateDeployment(deployment) | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) GetServiceAccountByName(serviceAccountName string) (*v1.ServiceAccount, error) { | ||
return c.opClient.KubernetesInterface().CoreV1().ServiceAccounts(c.Namespace).Get(serviceAccountName, metav1.GetOptions{}) | ||
} | ||
|
||
func (c *InstallStrategyDeploymentClientForNamespace) GetOwnedDeployments(owner metav1.ObjectMeta) (*v1beta1extensions.DeploymentList, error) { | ||
return c.opClient.ListDeploymentsWithLabels(c.Namespace, map[string]string{ | ||
"alm-owner-name": owner.Name, | ||
"alm-owner-namespace": owner.Namespace, | ||
}) | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,59 +1,51 @@ | ||
// Code generated by MockGen. DO NOT EDIT. | ||
// Automatically generated by MockGen. DO NOT EDIT! | ||
// Source: client/clusterserviceversion_client.go | ||
|
||
// Package client is a generated GoMock package. | ||
package client | ||
|
||
import ( | ||
v1alpha1 "github.com/coreos-inc/alm/apis/clusterserviceversion/v1alpha1" | ||
gomock "github.com/golang/mock/gomock" | ||
reflect "reflect" | ||
) | ||
|
||
// MockClusterServiceVersionInterface is a mock of ClusterServiceVersionInterface interface | ||
// Mock of ClusterServiceVersionInterface interface | ||
type MockClusterServiceVersionInterface struct { | ||
ctrl *gomock.Controller | ||
recorder *MockClusterServiceVersionInterfaceMockRecorder | ||
recorder *_MockClusterServiceVersionInterfaceRecorder | ||
} | ||
|
||
// MockClusterServiceVersionInterfaceMockRecorder is the mock recorder for MockClusterServiceVersionInterface | ||
type MockClusterServiceVersionInterfaceMockRecorder struct { | ||
// Recorder for MockClusterServiceVersionInterface (not exported) | ||
type _MockClusterServiceVersionInterfaceRecorder struct { | ||
mock *MockClusterServiceVersionInterface | ||
} | ||
|
||
// NewMockClusterServiceVersionInterface creates a new mock instance | ||
func NewMockClusterServiceVersionInterface(ctrl *gomock.Controller) *MockClusterServiceVersionInterface { | ||
mock := &MockClusterServiceVersionInterface{ctrl: ctrl} | ||
mock.recorder = &MockClusterServiceVersionInterfaceMockRecorder{mock} | ||
mock.recorder = &_MockClusterServiceVersionInterfaceRecorder{mock} | ||
return mock | ||
} | ||
|
||
// EXPECT returns an object that allows the caller to indicate expected use | ||
func (m *MockClusterServiceVersionInterface) EXPECT() *MockClusterServiceVersionInterfaceMockRecorder { | ||
return m.recorder | ||
func (_m *MockClusterServiceVersionInterface) EXPECT() *_MockClusterServiceVersionInterfaceRecorder { | ||
return _m.recorder | ||
} | ||
|
||
// UpdateCSV mocks base method | ||
func (m *MockClusterServiceVersionInterface) UpdateCSV(csv *v1alpha1.ClusterServiceVersion) (*v1alpha1.ClusterServiceVersion, error) { | ||
ret := m.ctrl.Call(m, "UpdateCSV", csv) | ||
func (_m *MockClusterServiceVersionInterface) UpdateCSV(csv *v1alpha1.ClusterServiceVersion) (*v1alpha1.ClusterServiceVersion, error) { | ||
ret := _m.ctrl.Call(_m, "UpdateCSV", csv) | ||
ret0, _ := ret[0].(*v1alpha1.ClusterServiceVersion) | ||
ret1, _ := ret[1].(error) | ||
return ret0, ret1 | ||
} | ||
|
||
// UpdateCSV indicates an expected call of UpdateCSV | ||
func (mr *MockClusterServiceVersionInterfaceMockRecorder) UpdateCSV(csv interface{}) *gomock.Call { | ||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCSV", reflect.TypeOf((*MockClusterServiceVersionInterface)(nil).UpdateCSV), csv) | ||
func (_mr *_MockClusterServiceVersionInterfaceRecorder) UpdateCSV(arg0 interface{}) *gomock.Call { | ||
return _mr.mock.ctrl.RecordCall(_mr.mock, "UpdateCSV", arg0) | ||
} | ||
|
||
// CreateCSV mocks base method | ||
func (m *MockClusterServiceVersionInterface) CreateCSV(csv *v1alpha1.ClusterServiceVersion) error { | ||
ret := m.ctrl.Call(m, "CreateCSV", csv) | ||
func (_m *MockClusterServiceVersionInterface) CreateCSV(csv *v1alpha1.ClusterServiceVersion) error { | ||
ret := _m.ctrl.Call(_m, "CreateCSV", csv) | ||
ret0, _ := ret[0].(error) | ||
return ret0 | ||
} | ||
|
||
// CreateCSV indicates an expected call of CreateCSV | ||
func (mr *MockClusterServiceVersionInterfaceMockRecorder) CreateCSV(csv interface{}) *gomock.Call { | ||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCSV", reflect.TypeOf((*MockClusterServiceVersionInterface)(nil).CreateCSV), csv) | ||
func (_mr *_MockClusterServiceVersionInterfaceRecorder) CreateCSV(arg0 interface{}) *gomock.Call { | ||
return _mr.mock.ctrl.RecordCall(_mr.mock, "CreateCSV", arg0) | ||
} |
Oops, something went wrong.