Skip to content

Commit 531d499

Browse files
committed
ocm: added unit tests and increased policy set coverage
This PR adds unit tests for list and validate for the policy set resource in the OCM package. It also removes policiesv1beta1 from the clients package.
1 parent 8ff5cbe commit 531d499

File tree

5 files changed

+261
-47
lines changed

5 files changed

+261
-47
lines changed

pkg/clients/clients.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ import (
116116
veleroFakeClient "github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned/fake"
117117
veleroV1Client "github.com/vmware-tanzu/velero/pkg/generated/clientset/versioned/typed/velero/v1"
118118
dynamicFake "k8s.io/client-go/dynamic/fake"
119-
policiesv1beta1 "open-cluster-management.io/governance-policy-propagator/api/v1beta1"
120119
)
121120

122121
// Settings provides the struct to talk with relevant API.
@@ -355,10 +354,6 @@ func SetScheme(crScheme *runtime.Scheme) error {
355354
return err
356355
}
357356

358-
if err := policiesv1beta1.AddToScheme(crScheme); err != nil {
359-
return err
360-
}
361-
362357
if err := routev1.AddToScheme(crScheme); err != nil {
363358
return err
364359
}
@@ -523,8 +518,6 @@ func GetTestClients(tcp TestClientParams) *Settings {
523518
genericClientObjects = append(genericClientObjects, v)
524519
case *routev1.Route:
525520
genericClientObjects = append(genericClientObjects, v)
526-
case *policiesv1beta1.PolicySet:
527-
genericClientObjects = append(genericClientObjects, v)
528521
case *configV1.Node:
529522
genericClientObjects = append(genericClientObjects, v)
530523
case *operatorv1.IngressController:

pkg/ocm/policyset.go

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type PolicySetBuilder struct {
2121
// created policySet object.
2222
Object *policiesv1beta1.PolicySet
2323
// api client to interact with the cluster.
24-
apiClient *clients.Settings
24+
apiClient runtimeclient.Client
2525
// used to store latest error message upon defining or mutating policySet definition.
2626
errorMsg string
2727
}
@@ -33,8 +33,21 @@ func NewPolicySetBuilder(
3333
"Initializing new policy set structure with the following params: name: %s, nsname: %s, policy: %v",
3434
name, nsname, policy)
3535

36+
if apiClient == nil {
37+
glog.V(100).Infof("The apiClient is nil")
38+
39+
return nil
40+
}
41+
42+
err := apiClient.AttachScheme(policiesv1beta1.AddToScheme)
43+
if err != nil {
44+
glog.V(100).Info("Failed to add PolicySet scheme to client schemes")
45+
46+
return nil
47+
}
48+
3649
builder := PolicySetBuilder{
37-
apiClient: apiClient,
50+
apiClient: apiClient.Client,
3851
Definition: &policiesv1beta1.PolicySet{
3952
ObjectMeta: metav1.ObjectMeta{
4053
Name: name,
@@ -72,13 +85,20 @@ func PullPolicySet(apiClient *clients.Settings, name, nsname string) (*PolicySet
7285
glog.V(100).Infof("Pulling existing policySet name %s under namespace %s from cluster", name, nsname)
7386

7487
if apiClient == nil {
75-
glog.V(100).Infof("The apiClient is empty")
88+
glog.V(100).Infof("The apiClient is nil")
89+
90+
return nil, fmt.Errorf("policyset's 'apiClient' cannot be nil")
91+
}
92+
93+
err := apiClient.AttachScheme(policiesv1beta1.AddToScheme)
94+
if err != nil {
95+
glog.V(100).Info("Failed to add PolicySet scheme to client schemes")
7696

77-
return nil, fmt.Errorf("policyset's 'apiClient' cannot be empty")
97+
return nil, err
7898
}
7999

80100
builder := PolicySetBuilder{
81-
apiClient: apiClient,
101+
apiClient: apiClient.Client,
82102
Definition: &policiesv1beta1.PolicySet{
83103
ObjectMeta: metav1.ObjectMeta{
84104
Name: name,
@@ -196,21 +216,30 @@ func (builder *PolicySetBuilder) Update(force bool) (*PolicySetBuilder, error) {
196216
return builder, err
197217
}
198218

219+
if !builder.Exists() {
220+
glog.V(100).Infof(
221+
"PolicySet %s does not exist in namespace %s", builder.Definition.Name, builder.Definition.Namespace)
222+
223+
return nil, fmt.Errorf("cannot update non-existent policySet")
224+
}
225+
199226
glog.V(100).Infof("Updating the policySet object: %s in namespace: %s",
200227
builder.Definition.Name, builder.Definition.Namespace)
201228

229+
builder.Definition.ResourceVersion = builder.Object.ResourceVersion
202230
err := builder.apiClient.Update(context.TODO(), builder.Definition)
203231

204232
if err != nil {
205233
if force {
206234
glog.V(100).Infof(
207-
msg.FailToUpdateNotification("policySet", builder.Definition.Name))
235+
msg.FailToUpdateNotification("policySet", builder.Definition.Name, builder.Definition.Namespace))
208236

209237
builder, err := builder.Delete()
238+
builder.Definition.ResourceVersion = ""
210239

211240
if err != nil {
212241
glog.V(100).Infof(
213-
msg.FailToUpdateError("policySet", builder.Definition.Name))
242+
msg.FailToUpdateError("policySet", builder.Definition.Name, builder.Definition.Namespace))
214243

215244
return nil, err
216245
}
@@ -219,9 +248,7 @@ func (builder *PolicySetBuilder) Update(force bool) (*PolicySetBuilder, error) {
219248
}
220249
}
221250

222-
if err == nil {
223-
builder.Object = builder.Definition
224-
}
251+
builder.Object = builder.Definition
225252

226253
return builder, err
227254
}

0 commit comments

Comments
 (0)