Skip to content

Commit e4a1698

Browse files
authored
Merge pull request #233 from yevgeny-shnaidman/yevgeny/adding-getters
Adding Getters to the Deployment and Daemonset interfaces
2 parents 2e6d570 + 6d788b9 commit e4a1698

File tree

6 files changed

+126
-0
lines changed

6 files changed

+126
-0
lines changed

internal/daemonset/daemonset.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type DaemonsetAPI interface {
3737
SetTopologyDaemonsetAsDesired(ctx context.Context, nfdInstance *nfdv1.NodeFeatureDiscovery, topologyDS *appsv1.DaemonSet) error
3838
SetWorkerDaemonsetAsDesired(ctx context.Context, nfdInstance *nfdv1.NodeFeatureDiscovery, workerDS *appsv1.DaemonSet) error
3939
DeleteDaemonSet(ctx context.Context, namespace, name string) error
40+
GetDaemonSet(ctx context.Context, namespace, name string) (*appsv1.DaemonSet, error)
4041
}
4142

4243
type daemonset struct {
@@ -101,6 +102,12 @@ func (d *daemonset) DeleteDaemonSet(ctx context.Context, namespace, name string)
101102
return nil
102103
}
103104

105+
func (d *daemonset) GetDaemonSet(ctx context.Context, namespace, name string) (*appsv1.DaemonSet, error) {
106+
ds := &appsv1.DaemonSet{}
107+
err := d.client.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, ds)
108+
return ds, err
109+
}
110+
104111
func getImagePullPolicy(nfdInstance *nfdv1.NodeFeatureDiscovery) corev1.PullPolicy {
105112
if nfdInstance.Spec.Operand.ImagePullPolicy != "" {
106113
return corev1.PullPolicy(nfdInstance.Spec.Operand.ImagePullPolicy)

internal/daemonset/daemonset_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
apierrors "k8s.io/apimachinery/pkg/api/errors"
2929
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3030
"k8s.io/apimachinery/pkg/runtime/schema"
31+
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
3132
nfdv1 "sigs.k8s.io/node-feature-discovery-operator/api/v1"
3233
"sigs.k8s.io/node-feature-discovery-operator/internal/client"
3334
"sigs.k8s.io/yaml"
@@ -166,3 +167,43 @@ var _ = Describe("DeleteDaemonSet", func() {
166167
Expect(err).To(BeNil())
167168
})
168169
})
170+
171+
var _ = Describe("GetDaemonSet", func() {
172+
var (
173+
ctrl *gomock.Controller
174+
clnt *client.MockClient
175+
daemonsetAPI DaemonsetAPI
176+
)
177+
178+
BeforeEach(func() {
179+
ctrl = gomock.NewController(GinkgoT())
180+
clnt = client.NewMockClient(ctrl)
181+
daemonsetAPI = NewDaemonsetAPI(clnt, scheme)
182+
})
183+
184+
ctx := context.Background()
185+
testName := "test-name"
186+
testNamespace := "test-namespace"
187+
188+
It("good flow", func() {
189+
expectedDS := &appsv1.DaemonSet{
190+
ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace, Name: testName},
191+
}
192+
clnt.EXPECT().Get(ctx, ctrlclient.ObjectKey{Namespace: testNamespace, Name: testName}, gomock.Any()).DoAndReturn(
193+
func(_ interface{}, _ interface{}, ds *appsv1.DaemonSet, _ ...ctrlclient.GetOption) error {
194+
ds.SetName(testName)
195+
ds.SetNamespace(testNamespace)
196+
return nil
197+
},
198+
)
199+
res, err := daemonsetAPI.GetDaemonSet(ctx, testNamespace, testName)
200+
Expect(err).To(BeNil())
201+
Expect(res).To(Equal(expectedDS))
202+
})
203+
204+
It("error flow", func() {
205+
clnt.EXPECT().Get(ctx, ctrlclient.ObjectKey{Namespace: testNamespace, Name: testName}, gomock.Any()).Return(fmt.Errorf("some error"))
206+
_, err := daemonsetAPI.GetDaemonSet(ctx, testNamespace, testName)
207+
Expect(err).To(HaveOccurred())
208+
})
209+
})

internal/daemonset/mock_daemonset.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/deployment/deployment.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ type DeploymentAPI interface {
4242
SetMasterDeploymentAsDesired(nfdInstance *nfdv1.NodeFeatureDiscovery, masterDep *v1.Deployment) error
4343
SetGCDeploymentAsDesired(nfdInstance *nfdv1.NodeFeatureDiscovery, gcDep *v1.Deployment) error
4444
DeleteDeployment(ctx context.Context, namespace, name string) error
45+
GetDeployment(ctx context.Context, namespace, name string) (*v1.Deployment, error)
4546
}
4647

4748
type deployment struct {
@@ -144,6 +145,12 @@ func (d *deployment) DeleteDeployment(ctx context.Context, namespace, name strin
144145
return nil
145146
}
146147

148+
func (d *deployment) GetDeployment(ctx context.Context, namespace, name string) (*v1.Deployment, error) {
149+
dep := &v1.Deployment{}
150+
err := d.client.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, dep)
151+
return dep, err
152+
}
153+
147154
func getPodsTolerations() []corev1.Toleration {
148155
return []corev1.Toleration{
149156
{

internal/deployment/deployment_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
apierrors "k8s.io/apimachinery/pkg/api/errors"
2929
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3030
"k8s.io/apimachinery/pkg/runtime/schema"
31+
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
3132
nfdv1 "sigs.k8s.io/node-feature-discovery-operator/api/v1"
3233
"sigs.k8s.io/node-feature-discovery-operator/internal/client"
3334
"sigs.k8s.io/yaml"
@@ -161,3 +162,43 @@ var _ = Describe("DeleteDeployment", func() {
161162
Expect(err).To(BeNil())
162163
})
163164
})
165+
166+
var _ = Describe("GetDeployment", func() {
167+
var (
168+
ctrl *gomock.Controller
169+
clnt *client.MockClient
170+
deploymentAPI DeploymentAPI
171+
)
172+
173+
BeforeEach(func() {
174+
ctrl = gomock.NewController(GinkgoT())
175+
clnt = client.NewMockClient(ctrl)
176+
deploymentAPI = NewDeploymentAPI(clnt, scheme)
177+
})
178+
179+
ctx := context.Background()
180+
testName := "test-name"
181+
testNamespace := "test-namespace"
182+
183+
It("good flow", func() {
184+
expectedDep := &appsv1.Deployment{
185+
ObjectMeta: metav1.ObjectMeta{Namespace: testNamespace, Name: testName},
186+
}
187+
clnt.EXPECT().Get(ctx, ctrlclient.ObjectKey{Namespace: testNamespace, Name: testName}, gomock.Any()).DoAndReturn(
188+
func(_ interface{}, _ interface{}, dep *appsv1.Deployment, _ ...ctrlclient.GetOption) error {
189+
dep.SetName(testName)
190+
dep.SetNamespace(testNamespace)
191+
return nil
192+
},
193+
)
194+
res, err := deploymentAPI.GetDeployment(ctx, testNamespace, testName)
195+
Expect(err).To(BeNil())
196+
Expect(res).To(Equal(expectedDep))
197+
})
198+
199+
It("error flow", func() {
200+
clnt.EXPECT().Get(ctx, ctrlclient.ObjectKey{Namespace: testNamespace, Name: testName}, gomock.Any()).Return(fmt.Errorf("some error"))
201+
_, err := deploymentAPI.GetDeployment(ctx, testNamespace, testName)
202+
Expect(err).To(HaveOccurred())
203+
})
204+
})

internal/deployment/mock_deployment.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)