/
policylist.go
76 lines (56 loc) · 2.08 KB
/
policylist.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package nmstate
import (
"context"
"fmt"
"github.com/golang/glog"
nmstateV1 "github.com/nmstate/kubernetes-nmstate/api/v1"
"github.com/openshift-kni/eco-goinfra/pkg/clients"
goclient "sigs.k8s.io/controller-runtime/pkg/client"
)
// ListPolicy returns a list of NodeNetworkConfigurationPolicy.
func ListPolicy(apiClient *clients.Settings, options ...goclient.ListOptions) ([]*PolicyBuilder, error) {
passedOptions := goclient.ListOptions{}
logMessage := "Listing NodeNetworkConfigurationPolicy"
if len(options) > 1 {
glog.V(100).Infof("'options' parameter must be empty or single-valued")
return nil, fmt.Errorf("error: more than one ListOptions was passed")
}
if len(options) == 1 {
passedOptions = options[0]
logMessage += fmt.Sprintf(" with the options %v", passedOptions)
}
glog.V(100).Infof(logMessage)
policyList := &nmstateV1.NodeNetworkConfigurationPolicyList{}
err := apiClient.Client.List(context.TODO(), policyList, &passedOptions)
if err != nil {
glog.V(100).Infof("Failed to list NodeNetworkConfigurationPolicy due to %s", err.Error())
return nil, err
}
var networkConfigurationPolicyObjects []*PolicyBuilder
for _, policy := range policyList.Items {
copiedPolicy := policy
policyBuilder := &PolicyBuilder{
apiClient: apiClient,
Definition: &copiedPolicy,
Object: &copiedPolicy}
networkConfigurationPolicyObjects = append(networkConfigurationPolicyObjects, policyBuilder)
}
return networkConfigurationPolicyObjects, nil
}
// CleanAllNMStatePolicies removes all NodeNetworkConfigurationPolicies.
func CleanAllNMStatePolicies(apiClient *clients.Settings, options ...goclient.ListOptions) error {
glog.V(100).Infof("Cleaning up NodeNetworkConfigurationPolicies")
nncpList, err := ListPolicy(apiClient, options...)
if err != nil {
glog.V(100).Infof("Failed to list NodeNetworkConfigurationPolicies")
return err
}
for _, nncpPolicy := range nncpList {
_, err = nncpPolicy.Delete()
if err != nil {
glog.V(100).Infof("Failed to delete NodeNetworkConfigurationPolicy: %s", nncpPolicy.Object.Name)
return err
}
}
return nil
}