diff --git a/docs/config_examples/crd/Install/clusterrole.yml b/docs/config_examples/crd/Install/clusterrole.yml index 2140d3d6d..4a02ce199 100644 --- a/docs/config_examples/crd/Install/clusterrole.yml +++ b/docs/config_examples/crd/Install/clusterrole.yml @@ -15,7 +15,7 @@ rules: resources: ["virtualservers","virtualservers/status", "tlsprofiles", "transportservers", "ingresslinks", "externaldnss"] verbs: ["get", "list", "watch", "update", "patch"] - apiGroups: ["fic.f5.com"] - resources: ["f5ipams", "f5ipams/status"] + resources: ["ipams", "ipams/status"] verbs: ["get", "list", "watch", "update", "create", "patch", "delete"] - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] diff --git a/go.mod b/go.mod index 4944d7d3a..b95dedfb1 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/F5Networks/k8s-bigip-ctlr go 1.16 require ( - github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210720135810-3c6cbe8409ee + github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210813064837-de4b96f0e82c github.com/f5devcentral/go-bigip/f5teem v0.0.0-20210621162944-38d486e26398 github.com/f5devcentral/mockhttpclient v0.0.0-20210630101009-cc12e8b81051 github.com/google/uuid v1.1.2 diff --git a/go.sum b/go.sum index f5d8aa332..3078b79d8 100644 --- a/go.sum +++ b/go.sum @@ -37,6 +37,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210720135810-3c6cbe8409ee h1:947cypdheqtEGN6Wt4M59Laj57xZiEk0k1b3dPHfi8o= github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210720135810-3c6cbe8409ee/go.mod h1:T6GmYytrreXO0ShD3skIJIx05pe8rdxSIlAnk0clnWQ= +github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210813064837-de4b96f0e82c h1:lt8hUudhw5TPz7Pi0DTmoF7cVx3AMb/2uRt0NfxO6eo= +github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210813064837-de4b96f0e82c/go.mod h1:JZILK1dcnuPgk+WAuCctXSUqvY5+vFRXlaYDb/ehMQw= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= diff --git a/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml b/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml index da3f1a37a..4b1b7763c 100644 --- a/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml +++ b/helm-charts/f5-bigip-ctlr/templates/f5-bigip-ctlr-clusterrole.yaml @@ -78,8 +78,8 @@ rules: apiGroups: - fic.f5.com resources: - - f5ipams - - f5ipams/status + - ipams + - ipams/status - verbs: - get - list diff --git a/pkg/crmanager/crManager.go b/pkg/crmanager/crManager.go index 8dce5871a..2eeb7eaa2 100644 --- a/pkg/crmanager/crManager.go +++ b/pkg/crmanager/crManager.go @@ -215,15 +215,15 @@ func (crMgr *CRManager) createIPAMResource() error { } crName := frameIPAMResourceName(crMgr.Agent.BIGIPURL) - f5ipam := &ficV1.F5IPAM{ + f5ipam := &ficV1.IPAM{ ObjectMeta: metaV1.ObjectMeta{ Name: crName, Namespace: IPAMNamespace, }, - Spec: ficV1.F5IPAMSpec{ + Spec: ficV1.IPAMSpec{ HostSpecs: make([]*ficV1.HostSpec, 0), }, - Status: ficV1.F5IPAMStatus{ + Status: ficV1.IPAMStatus{ IPStatus: make([]*ficV1.IPSpec, 0), }, } diff --git a/pkg/crmanager/informers.go b/pkg/crmanager/informers.go index 5365f6d7f..081598d61 100644 --- a/pkg/crmanager/informers.go +++ b/pkg/crmanager/informers.go @@ -273,7 +273,7 @@ func (crMgr *CRManager) getEventHandlerForIPAM() *cache.ResourceEventHandlerFunc } func (crMgr *CRManager) enqueueIPAM(obj interface{}) { - ipamObj := obj.(*ficV1.F5IPAM) + ipamObj := obj.(*ficV1.IPAM) if ipamObj.Namespace+"/"+ipamObj.Name != crMgr.ipamCR { return @@ -291,8 +291,8 @@ func (crMgr *CRManager) enqueueIPAM(obj interface{}) { } func (crMgr *CRManager) enqueueUpdatedIPAM(oldObj, newObj interface{}) { - oldIpam := oldObj.(*ficV1.F5IPAM) - curIpam := newObj.(*ficV1.F5IPAM) + oldIpam := oldObj.(*ficV1.IPAM) + curIpam := newObj.(*ficV1.IPAM) if curIpam.Namespace+"/"+curIpam.Name != crMgr.ipamCR { return @@ -314,7 +314,7 @@ func (crMgr *CRManager) enqueueUpdatedIPAM(oldObj, newObj interface{}) { } func (crMgr *CRManager) enqueueDeletedIPAM(obj interface{}) { - ipamObj := obj.(*ficV1.F5IPAM) + ipamObj := obj.(*ficV1.IPAM) if ipamObj.Namespace+"/"+ipamObj.Name != crMgr.ipamCR { return diff --git a/pkg/crmanager/informers_test.go b/pkg/crmanager/informers_test.go index df961a14f..719b9375f 100644 --- a/pkg/crmanager/informers_test.go +++ b/pkg/crmanager/informers_test.go @@ -309,10 +309,10 @@ var _ = Describe("Informers Tests", func() { ipam := test.NewIPAM( "SampleIPAM", namespace, - ficV1.F5IPAMSpec{ + ficV1.IPAMSpec{ HostSpecs: []*ficV1.HostSpec{hostSpec}, }, - ficV1.F5IPAMStatus{}, + ficV1.IPAMStatus{}, ) mockCRM.enqueueIPAM(ipam) key, quit := mockCRM.rscQueue.Get() @@ -327,10 +327,10 @@ var _ = Describe("Informers Tests", func() { newIPAM := test.NewIPAM( "SampleIPAM", namespace, - ficV1.F5IPAMSpec{ + ficV1.IPAMSpec{ HostSpecs: []*ficV1.HostSpec{hostSpec}, }, - ficV1.F5IPAMStatus{ + ficV1.IPAMStatus{ IPStatus: []*ficV1.IPSpec{ipSpec}, }, ) diff --git a/pkg/crmanager/worker.go b/pkg/crmanager/worker.go index 88b8b81f2..97a6231df 100644 --- a/pkg/crmanager/worker.go +++ b/pkg/crmanager/worker.go @@ -109,7 +109,7 @@ func (crMgr *CRManager) processResource() bool { edns := rKey.rsc.(*cisapiv1.ExternalDNS) crMgr.processExternalDNS(edns, rKey.rscDelete) case IPAM: - ipam := rKey.rsc.(*ficV1.F5IPAM) + ipam := rKey.rsc.(*ficV1.IPAM) virtuals := crMgr.getVirtualServersForIPAM(ipam) for _, vs := range virtuals { err := crMgr.processVirtualServers(vs, false) @@ -830,7 +830,7 @@ func getIPAMLabel(virtuals []*cisapiv1.VirtualServer) string { return "" } -func (crMgr *CRManager) getIPAMCR() *ficV1.F5IPAM { +func (crMgr *CRManager) getIPAMCR() *ficV1.IPAM { cr := strings.Split(crMgr.ipamCR, "/") if len(cr) != 2 { log.Errorf("[ipam] error while retrieving IPAM namespace and name.") @@ -1404,7 +1404,7 @@ func (crMgr *CRManager) getAllServicesFromMonitoredNamespaces() []*v1.Service { } // Get List of VirtualServers associated with the IPAM resource -func (crMgr *CRManager) getVirtualServersForIPAM(ipam *ficV1.F5IPAM) []*cisapiv1.VirtualServer { +func (crMgr *CRManager) getVirtualServersForIPAM(ipam *ficV1.IPAM) []*cisapiv1.VirtualServer { log.Debug("[ipam] sync ipam starting...") var allVS, vss []*cisapiv1.VirtualServer allVS = crMgr.getAllVSFromMonitoredNamespaces() @@ -1420,7 +1420,7 @@ func (crMgr *CRManager) getVirtualServersForIPAM(ipam *ficV1.F5IPAM) []*cisapiv1 } // Get List of TransportServers associated with the IPAM resource -func (crMgr *CRManager) getTransportServersForIPAM(ipam *ficV1.F5IPAM) []*cisapiv1.TransportServer { +func (crMgr *CRManager) getTransportServersForIPAM(ipam *ficV1.IPAM) []*cisapiv1.TransportServer { var allTS, tss []*cisapiv1.TransportServer allTS = crMgr.getAllTSFromMonitoredNamespaces() for _, status := range ipam.Status.IPStatus { @@ -1435,7 +1435,7 @@ func (crMgr *CRManager) getTransportServersForIPAM(ipam *ficV1.F5IPAM) []*cisapi return tss } -func (crMgr *CRManager) syncAndGetServicesForIPAM(ipam *ficV1.F5IPAM) []*v1.Service { +func (crMgr *CRManager) syncAndGetServicesForIPAM(ipam *ficV1.IPAM) []*v1.Service { allServices := crMgr.getAllServicesFromMonitoredNamespaces() if allServices == nil { diff --git a/pkg/test/crd_utils.go b/pkg/test/crd_utils.go index dc464828c..ca2b56121 100644 --- a/pkg/test/crd_utils.go +++ b/pkg/test/crd_utils.go @@ -92,8 +92,8 @@ func NewExternalDNS(name, namespace string, spec cisapiv1.ExternalDNSSpec) *cisa } } -func NewIPAM(name, namespace string, spec ficV1.F5IPAMSpec, status ficV1.F5IPAMStatus) *ficV1.F5IPAM { - return &ficV1.F5IPAM{ +func NewIPAM(name, namespace string, spec ficV1.IPAMSpec, status ficV1.IPAMStatus) *ficV1.IPAM { + return &ficV1.IPAM{ TypeMeta: metav1.TypeMeta{ Kind: "IPAM", APIVersion: "v1", diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/register.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/register.go index d5dc9a0c3..213d6d524 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/register.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/register.go @@ -52,8 +52,8 @@ func Resource(resource string) schema.GroupResource { func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes( SchemeGroupVersion, - &F5IPAM{}, - &F5IPAMList{}, + &IPAM{}, + &IPAMList{}, ) scheme.AddKnownTypes( diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/types.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/types.go index 33d2b7001..3884dc54c 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/types.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/types.go @@ -25,15 +25,15 @@ import ( // +kubebuilder:validation:Optional // ExternalDNS defines the DNS resource. -type F5IPAM struct { +type IPAM struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` - Spec F5IPAMSpec `json:"spec,omitempty"` - Status F5IPAMStatus `json:"status,omitempty"` + Spec IPAMSpec `json:"spec,omitempty"` + Status IPAMStatus `json:"status,omitempty"` } -type F5IPAMSpec struct { +type IPAMSpec struct { HostSpecs []*HostSpec `json:"hostSpecs,omitempty"` } @@ -46,7 +46,7 @@ type HostSpec struct { CIDR string `json:"cidr,omitempty"` } -type F5IPAMStatus struct { +type IPAMStatus struct { IPStatus []*IPSpec `json:"IPStatus,omitempty"` } @@ -62,10 +62,10 @@ type IPSpec struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// F5IPAMList is list of ExternalDNS -type F5IPAMList struct { +// IPAMList is list of ExternalDNS +type IPAMList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata"` - Items []F5IPAM `json:"items"` + Items []IPAM `json:"items"` } diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/zz_generated.deepcopy.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/zz_generated.deepcopy.go index da91a4a43..96e118ff9 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1/zz_generated.deepcopy.go @@ -25,7 +25,23 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *F5IPAM) DeepCopyInto(out *F5IPAM) { +func (in *HostSpec) DeepCopyInto(out *HostSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostSpec. +func (in *HostSpec) DeepCopy() *HostSpec { + if in == nil { + return nil + } + out := new(HostSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPAM) DeepCopyInto(out *IPAM) { *out = *in out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) @@ -34,18 +50,18 @@ func (in *F5IPAM) DeepCopyInto(out *F5IPAM) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new F5IPAM. -func (in *F5IPAM) DeepCopy() *F5IPAM { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAM. +func (in *IPAM) DeepCopy() *IPAM { if in == nil { return nil } - out := new(F5IPAM) + out := new(IPAM) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *F5IPAM) DeepCopyObject() runtime.Object { +func (in *IPAM) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -53,13 +69,13 @@ func (in *F5IPAM) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *F5IPAMList) DeepCopyInto(out *F5IPAMList) { +func (in *IPAMList) DeepCopyInto(out *IPAMList) { *out = *in out.TypeMeta = in.TypeMeta in.ListMeta.DeepCopyInto(&out.ListMeta) if in.Items != nil { in, out := &in.Items, &out.Items - *out = make([]F5IPAM, len(*in)) + *out = make([]IPAM, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -67,18 +83,18 @@ func (in *F5IPAMList) DeepCopyInto(out *F5IPAMList) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new F5IPAMList. -func (in *F5IPAMList) DeepCopy() *F5IPAMList { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMList. +func (in *IPAMList) DeepCopy() *IPAMList { if in == nil { return nil } - out := new(F5IPAMList) + out := new(IPAMList) in.DeepCopyInto(out) return out } // DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *F5IPAMList) DeepCopyObject() runtime.Object { +func (in *IPAMList) DeepCopyObject() runtime.Object { if c := in.DeepCopy(); c != nil { return c } @@ -86,7 +102,7 @@ func (in *F5IPAMList) DeepCopyObject() runtime.Object { } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *F5IPAMSpec) DeepCopyInto(out *F5IPAMSpec) { +func (in *IPAMSpec) DeepCopyInto(out *IPAMSpec) { *out = *in if in.HostSpecs != nil { in, out := &in.HostSpecs, &out.HostSpecs @@ -102,18 +118,18 @@ func (in *F5IPAMSpec) DeepCopyInto(out *F5IPAMSpec) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new F5IPAMSpec. -func (in *F5IPAMSpec) DeepCopy() *F5IPAMSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMSpec. +func (in *IPAMSpec) DeepCopy() *IPAMSpec { if in == nil { return nil } - out := new(F5IPAMSpec) + out := new(IPAMSpec) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *F5IPAMStatus) DeepCopyInto(out *F5IPAMStatus) { +func (in *IPAMStatus) DeepCopyInto(out *IPAMStatus) { *out = *in if in.IPStatus != nil { in, out := &in.IPStatus, &out.IPStatus @@ -129,28 +145,12 @@ func (in *F5IPAMStatus) DeepCopyInto(out *F5IPAMStatus) { return } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new F5IPAMStatus. -func (in *F5IPAMStatus) DeepCopy() *F5IPAMStatus { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAMStatus. +func (in *IPAMStatus) DeepCopy() *IPAMStatus { if in == nil { return nil } - out := new(F5IPAMStatus) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *HostSpec) DeepCopyInto(out *HostSpec) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostSpec. -func (in *HostSpec) DeepCopy() *HostSpec { - if in == nil { - return nil - } - out := new(HostSpec) + out := new(IPAMStatus) in.DeepCopyInto(out) return out } diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_f5ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_f5ipam.go deleted file mode 100644 index fbb69c1ea..000000000 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_f5ipam.go +++ /dev/null @@ -1,142 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - "context" - - ficv1 "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeF5IPAMs implements F5IPAMInterface -type FakeF5IPAMs struct { - Fake *FakeK8sV1 - ns string -} - -var f5ipamsResource = schema.GroupVersionResource{Group: "k8s.nginx.org", Version: "v1", Resource: "f5ipams"} - -var f5ipamsKind = schema.GroupVersionKind{Group: "k8s.nginx.org", Version: "v1", Kind: "F5IPAM"} - -// Get takes name of the f5IPAM, and returns the corresponding f5IPAM object, and an error if there is any. -func (c *FakeF5IPAMs) Get(ctx context.Context, name string, options v1.GetOptions) (result *ficv1.F5IPAM, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(f5ipamsResource, c.ns, name), &ficv1.F5IPAM{}) - - if obj == nil { - return nil, err - } - return obj.(*ficv1.F5IPAM), err -} - -// List takes label and field selectors, and returns the list of F5IPAMs that match those selectors. -func (c *FakeF5IPAMs) List(ctx context.Context, opts v1.ListOptions) (result *ficv1.F5IPAMList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(f5ipamsResource, f5ipamsKind, c.ns, opts), &ficv1.F5IPAMList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &ficv1.F5IPAMList{ListMeta: obj.(*ficv1.F5IPAMList).ListMeta} - for _, item := range obj.(*ficv1.F5IPAMList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested f5IPAMs. -func (c *FakeF5IPAMs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(f5ipamsResource, c.ns, opts)) - -} - -// Create takes the representation of a f5IPAM and creates it. Returns the server's representation of the f5IPAM, and an error, if there is any. -func (c *FakeF5IPAMs) Create(ctx context.Context, f5IPAM *ficv1.F5IPAM, opts v1.CreateOptions) (result *ficv1.F5IPAM, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(f5ipamsResource, c.ns, f5IPAM), &ficv1.F5IPAM{}) - - if obj == nil { - return nil, err - } - return obj.(*ficv1.F5IPAM), err -} - -// Update takes the representation of a f5IPAM and updates it. Returns the server's representation of the f5IPAM, and an error, if there is any. -func (c *FakeF5IPAMs) Update(ctx context.Context, f5IPAM *ficv1.F5IPAM, opts v1.UpdateOptions) (result *ficv1.F5IPAM, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(f5ipamsResource, c.ns, f5IPAM), &ficv1.F5IPAM{}) - - if obj == nil { - return nil, err - } - return obj.(*ficv1.F5IPAM), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeF5IPAMs) UpdateStatus(ctx context.Context, f5IPAM *ficv1.F5IPAM, opts v1.UpdateOptions) (*ficv1.F5IPAM, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(f5ipamsResource, "status", c.ns, f5IPAM), &ficv1.F5IPAM{}) - - if obj == nil { - return nil, err - } - return obj.(*ficv1.F5IPAM), err -} - -// Delete takes name of the f5IPAM and deletes it. Returns an error if one occurs. -func (c *FakeF5IPAMs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(f5ipamsResource, c.ns, name), &ficv1.F5IPAM{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeF5IPAMs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(f5ipamsResource, c.ns, listOpts) - - _, err := c.Fake.Invokes(action, &ficv1.F5IPAMList{}) - return err -} - -// Patch applies the patch and returns the patched f5IPAM. -func (c *FakeF5IPAMs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *ficv1.F5IPAM, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(f5ipamsResource, c.ns, name, pt, data, subresources...), &ficv1.F5IPAM{}) - - if obj == nil { - return nil, err - } - return obj.(*ficv1.F5IPAM), err -} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_fic_client.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_fic_client.go index 8946cc337..733297745 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_fic_client.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_fic_client.go @@ -28,8 +28,8 @@ type FakeK8sV1 struct { *testing.Fake } -func (c *FakeK8sV1) F5IPAMs(namespace string) v1.F5IPAMInterface { - return &FakeF5IPAMs{c, namespace} +func (c *FakeK8sV1) IPAMs(namespace string) v1.IPAMInterface { + return &FakeIPAMs{c, namespace} } // RESTClient returns a RESTClient that is used to communicate diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_ipam.go new file mode 100644 index 000000000..b608c6ff2 --- /dev/null +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fake/fake_ipam.go @@ -0,0 +1,142 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + "context" + + ficv1 "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + testing "k8s.io/client-go/testing" +) + +// FakeIPAMs implements IPAMInterface +type FakeIPAMs struct { + Fake *FakeK8sV1 + ns string +} + +var ipamsResource = schema.GroupVersionResource{Group: "k8s.nginx.org", Version: "v1", Resource: "ipams"} + +var ipamsKind = schema.GroupVersionKind{Group: "k8s.nginx.org", Version: "v1", Kind: "IPAM"} + +// Get takes name of the iPAM, and returns the corresponding iPAM object, and an error if there is any. +func (c *FakeIPAMs) Get(ctx context.Context, name string, options v1.GetOptions) (result *ficv1.IPAM, err error) { + obj, err := c.Fake. + Invokes(testing.NewGetAction(ipamsResource, c.ns, name), &ficv1.IPAM{}) + + if obj == nil { + return nil, err + } + return obj.(*ficv1.IPAM), err +} + +// List takes label and field selectors, and returns the list of IPAMs that match those selectors. +func (c *FakeIPAMs) List(ctx context.Context, opts v1.ListOptions) (result *ficv1.IPAMList, err error) { + obj, err := c.Fake. + Invokes(testing.NewListAction(ipamsResource, ipamsKind, c.ns, opts), &ficv1.IPAMList{}) + + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &ficv1.IPAMList{ListMeta: obj.(*ficv1.IPAMList).ListMeta} + for _, item := range obj.(*ficv1.IPAMList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested iPAMs. +func (c *FakeIPAMs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewWatchAction(ipamsResource, c.ns, opts)) + +} + +// Create takes the representation of a iPAM and creates it. Returns the server's representation of the iPAM, and an error, if there is any. +func (c *FakeIPAMs) Create(ctx context.Context, iPAM *ficv1.IPAM, opts v1.CreateOptions) (result *ficv1.IPAM, err error) { + obj, err := c.Fake. + Invokes(testing.NewCreateAction(ipamsResource, c.ns, iPAM), &ficv1.IPAM{}) + + if obj == nil { + return nil, err + } + return obj.(*ficv1.IPAM), err +} + +// Update takes the representation of a iPAM and updates it. Returns the server's representation of the iPAM, and an error, if there is any. +func (c *FakeIPAMs) Update(ctx context.Context, iPAM *ficv1.IPAM, opts v1.UpdateOptions) (result *ficv1.IPAM, err error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateAction(ipamsResource, c.ns, iPAM), &ficv1.IPAM{}) + + if obj == nil { + return nil, err + } + return obj.(*ficv1.IPAM), err +} + +// UpdateStatus was generated because the type contains a Status member. +// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). +func (c *FakeIPAMs) UpdateStatus(ctx context.Context, iPAM *ficv1.IPAM, opts v1.UpdateOptions) (*ficv1.IPAM, error) { + obj, err := c.Fake. + Invokes(testing.NewUpdateSubresourceAction(ipamsResource, "status", c.ns, iPAM), &ficv1.IPAM{}) + + if obj == nil { + return nil, err + } + return obj.(*ficv1.IPAM), err +} + +// Delete takes name of the iPAM and deletes it. Returns an error if one occurs. +func (c *FakeIPAMs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewDeleteAction(ipamsResource, c.ns, name), &ficv1.IPAM{}) + + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeIPAMs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewDeleteCollectionAction(ipamsResource, c.ns, listOpts) + + _, err := c.Fake.Invokes(action, &ficv1.IPAMList{}) + return err +} + +// Patch applies the patch and returns the patched iPAM. +func (c *FakeIPAMs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *ficv1.IPAM, err error) { + obj, err := c.Fake. + Invokes(testing.NewPatchSubresourceAction(ipamsResource, c.ns, name, pt, data, subresources...), &ficv1.IPAM{}) + + if obj == nil { + return nil, err + } + return obj.(*ficv1.IPAM), err +} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fic_client.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fic_client.go index 8cdac50b4..51e48b42f 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fic_client.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/fic_client.go @@ -26,7 +26,7 @@ import ( type K8sV1Interface interface { RESTClient() rest.Interface - F5IPAMsGetter + IPAMsGetter } // K8sV1Client is used to interact with features provided by the k8s.nginx.org group. @@ -34,8 +34,8 @@ type K8sV1Client struct { restClient rest.Interface } -func (c *K8sV1Client) F5IPAMs(namespace string) F5IPAMInterface { - return newF5IPAMs(c, namespace) +func (c *K8sV1Client) IPAMs(namespace string) IPAMInterface { + return newIPAMs(c, namespace) } // NewForConfig creates a new K8sV1Client for the given config. diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/generated_expansion.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/generated_expansion.go index ab4e01c27..25f9135ef 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/generated_expansion.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/generated_expansion.go @@ -18,4 +18,4 @@ limitations under the License. package v1 -type F5IPAMExpansion interface{} +type IPAMExpansion interface{} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/f5ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/ipam.go similarity index 54% rename from vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/f5ipam.go rename to vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/ipam.go index ecb0147b6..da058f702 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/f5ipam.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned/typed/fic/v1/ipam.go @@ -30,46 +30,46 @@ import ( rest "k8s.io/client-go/rest" ) -// F5IPAMsGetter has a method to return a F5IPAMInterface. +// IPAMsGetter has a method to return a IPAMInterface. // A group's client should implement this interface. -type F5IPAMsGetter interface { - F5IPAMs(namespace string) F5IPAMInterface +type IPAMsGetter interface { + IPAMs(namespace string) IPAMInterface } -// F5IPAMInterface has methods to work with F5IPAM resources. -type F5IPAMInterface interface { - Create(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.CreateOptions) (*v1.F5IPAM, error) - Update(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.UpdateOptions) (*v1.F5IPAM, error) - UpdateStatus(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.UpdateOptions) (*v1.F5IPAM, error) +// IPAMInterface has methods to work with IPAM resources. +type IPAMInterface interface { + Create(ctx context.Context, iPAM *v1.IPAM, opts metav1.CreateOptions) (*v1.IPAM, error) + Update(ctx context.Context, iPAM *v1.IPAM, opts metav1.UpdateOptions) (*v1.IPAM, error) + UpdateStatus(ctx context.Context, iPAM *v1.IPAM, opts metav1.UpdateOptions) (*v1.IPAM, error) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error - Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.F5IPAM, error) - List(ctx context.Context, opts metav1.ListOptions) (*v1.F5IPAMList, error) + Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1.IPAM, error) + List(ctx context.Context, opts metav1.ListOptions) (*v1.IPAMList, error) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) - Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.F5IPAM, err error) - F5IPAMExpansion + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IPAM, err error) + IPAMExpansion } -// f5IPAMs implements F5IPAMInterface -type f5IPAMs struct { +// iPAMs implements IPAMInterface +type iPAMs struct { client rest.Interface ns string } -// newF5IPAMs returns a F5IPAMs -func newF5IPAMs(c *K8sV1Client, namespace string) *f5IPAMs { - return &f5IPAMs{ +// newIPAMs returns a IPAMs +func newIPAMs(c *K8sV1Client, namespace string) *iPAMs { + return &iPAMs{ client: c.RESTClient(), ns: namespace, } } -// Get takes name of the f5IPAM, and returns the corresponding f5IPAM object, and an error if there is any. -func (c *f5IPAMs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.F5IPAM, err error) { - result = &v1.F5IPAM{} +// Get takes name of the iPAM, and returns the corresponding iPAM object, and an error if there is any. +func (c *iPAMs) Get(ctx context.Context, name string, options metav1.GetOptions) (result *v1.IPAM, err error) { + result = &v1.IPAM{} err = c.client.Get(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). Name(name). VersionedParams(&options, scheme.ParameterCodec). Do(ctx). @@ -77,16 +77,16 @@ func (c *f5IPAMs) Get(ctx context.Context, name string, options metav1.GetOption return } -// List takes label and field selectors, and returns the list of F5IPAMs that match those selectors. -func (c *f5IPAMs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.F5IPAMList, err error) { +// List takes label and field selectors, and returns the list of IPAMs that match those selectors. +func (c *iPAMs) List(ctx context.Context, opts metav1.ListOptions) (result *v1.IPAMList, err error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second } - result = &v1.F5IPAMList{} + result = &v1.IPAMList{} err = c.client.Get(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). Do(ctx). @@ -94,8 +94,8 @@ func (c *f5IPAMs) List(ctx context.Context, opts metav1.ListOptions) (result *v1 return } -// Watch returns a watch.Interface that watches the requested f5IPAMs. -func (c *f5IPAMs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { +// Watch returns a watch.Interface that watches the requested iPAMs. +func (c *iPAMs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { var timeout time.Duration if opts.TimeoutSeconds != nil { timeout = time.Duration(*opts.TimeoutSeconds) * time.Second @@ -103,34 +103,34 @@ func (c *f5IPAMs) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Int opts.Watch = true return c.client.Get(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). VersionedParams(&opts, scheme.ParameterCodec). Timeout(timeout). Watch(ctx) } -// Create takes the representation of a f5IPAM and creates it. Returns the server's representation of the f5IPAM, and an error, if there is any. -func (c *f5IPAMs) Create(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.CreateOptions) (result *v1.F5IPAM, err error) { - result = &v1.F5IPAM{} +// Create takes the representation of a iPAM and creates it. Returns the server's representation of the iPAM, and an error, if there is any. +func (c *iPAMs) Create(ctx context.Context, iPAM *v1.IPAM, opts metav1.CreateOptions) (result *v1.IPAM, err error) { + result = &v1.IPAM{} err = c.client.Post(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). VersionedParams(&opts, scheme.ParameterCodec). - Body(f5IPAM). + Body(iPAM). Do(ctx). Into(result) return } -// Update takes the representation of a f5IPAM and updates it. Returns the server's representation of the f5IPAM, and an error, if there is any. -func (c *f5IPAMs) Update(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.UpdateOptions) (result *v1.F5IPAM, err error) { - result = &v1.F5IPAM{} +// Update takes the representation of a iPAM and updates it. Returns the server's representation of the iPAM, and an error, if there is any. +func (c *iPAMs) Update(ctx context.Context, iPAM *v1.IPAM, opts metav1.UpdateOptions) (result *v1.IPAM, err error) { + result = &v1.IPAM{} err = c.client.Put(). Namespace(c.ns). - Resource("f5ipams"). - Name(f5IPAM.Name). + Resource("ipams"). + Name(iPAM.Name). VersionedParams(&opts, scheme.ParameterCodec). - Body(f5IPAM). + Body(iPAM). Do(ctx). Into(result) return @@ -138,25 +138,25 @@ func (c *f5IPAMs) Update(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.Upd // UpdateStatus was generated because the type contains a Status member. // Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *f5IPAMs) UpdateStatus(ctx context.Context, f5IPAM *v1.F5IPAM, opts metav1.UpdateOptions) (result *v1.F5IPAM, err error) { - result = &v1.F5IPAM{} +func (c *iPAMs) UpdateStatus(ctx context.Context, iPAM *v1.IPAM, opts metav1.UpdateOptions) (result *v1.IPAM, err error) { + result = &v1.IPAM{} err = c.client.Put(). Namespace(c.ns). - Resource("f5ipams"). - Name(f5IPAM.Name). + Resource("ipams"). + Name(iPAM.Name). SubResource("status"). VersionedParams(&opts, scheme.ParameterCodec). - Body(f5IPAM). + Body(iPAM). Do(ctx). Into(result) return } -// Delete takes name of the f5IPAM and deletes it. Returns an error if one occurs. -func (c *f5IPAMs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { +// Delete takes name of the iPAM and deletes it. Returns an error if one occurs. +func (c *iPAMs) Delete(ctx context.Context, name string, opts metav1.DeleteOptions) error { return c.client.Delete(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). Name(name). Body(&opts). Do(ctx). @@ -164,14 +164,14 @@ func (c *f5IPAMs) Delete(ctx context.Context, name string, opts metav1.DeleteOpt } // DeleteCollection deletes a collection of objects. -func (c *f5IPAMs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { +func (c *iPAMs) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOpts metav1.ListOptions) error { var timeout time.Duration if listOpts.TimeoutSeconds != nil { timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second } return c.client.Delete(). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). VersionedParams(&listOpts, scheme.ParameterCodec). Timeout(timeout). Body(&opts). @@ -179,12 +179,12 @@ func (c *f5IPAMs) DeleteCollection(ctx context.Context, opts metav1.DeleteOption Error() } -// Patch applies the patch and returns the patched f5IPAM. -func (c *f5IPAMs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.F5IPAM, err error) { - result = &v1.F5IPAM{} +// Patch applies the patch and returns the patched iPAM. +func (c *iPAMs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (result *v1.IPAM, err error) { + result = &v1.IPAM{} err = c.client.Patch(pt). Namespace(c.ns). - Resource("f5ipams"). + Resource("ipams"). Name(name). SubResource(subresources...). VersionedParams(&opts, scheme.ParameterCodec). diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/interface.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/interface.go index 99ab510fc..59adb3a35 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/interface.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/interface.go @@ -24,8 +24,8 @@ import ( // Interface provides access to all the informers in this group version. type Interface interface { - // F5IPAMs returns a F5IPAMInformer. - F5IPAMs() F5IPAMInformer + // IPAMs returns a IPAMInformer. + IPAMs() IPAMInformer } type version struct { @@ -39,7 +39,7 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} } -// F5IPAMs returns a F5IPAMInformer. -func (v *version) F5IPAMs() F5IPAMInformer { - return &f5IPAMInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} +// IPAMs returns a IPAMInformer. +func (v *version) IPAMs() IPAMInformer { + return &iPAMInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} } diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/f5ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/ipam.go similarity index 60% rename from vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/f5ipam.go rename to vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/ipam.go index 4881fec63..cf09de7e5 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/f5ipam.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/informers/externalversions/fic/v1/ipam.go @@ -32,59 +32,59 @@ import ( cache "k8s.io/client-go/tools/cache" ) -// F5IPAMInformer provides access to a shared informer and lister for -// F5IPAMs. -type F5IPAMInformer interface { +// IPAMInformer provides access to a shared informer and lister for +// IPAMs. +type IPAMInformer interface { Informer() cache.SharedIndexInformer - Lister() v1.F5IPAMLister + Lister() v1.IPAMLister } -type f5IPAMInformer struct { +type iPAMInformer struct { factory internalinterfaces.SharedInformerFactory tweakListOptions internalinterfaces.TweakListOptionsFunc namespace string } -// NewF5IPAMInformer constructs a new informer for F5IPAM type. +// NewIPAMInformer constructs a new informer for IPAM type. // Always prefer using an informer factory to get a shared informer instead of getting an independent // one. This reduces memory footprint and number of connections to the server. -func NewF5IPAMInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return NewFilteredF5IPAMInformer(client, namespace, resyncPeriod, indexers, nil) +func NewIPAMInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredIPAMInformer(client, namespace, resyncPeriod, indexers, nil) } -// NewFilteredF5IPAMInformer constructs a new informer for F5IPAM type. +// NewFilteredIPAMInformer constructs a new informer for IPAM type. // Always prefer using an informer factory to get a shared informer instead of getting an independent // one. This reduces memory footprint and number of connections to the server. -func NewFilteredF5IPAMInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { +func NewFilteredIPAMInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { return cache.NewSharedIndexInformer( &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { if tweakListOptions != nil { tweakListOptions(&options) } - return client.K8sV1().F5IPAMs(namespace).List(context.TODO(), options) + return client.K8sV1().IPAMs(namespace).List(context.TODO(), options) }, WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { if tweakListOptions != nil { tweakListOptions(&options) } - return client.K8sV1().F5IPAMs(namespace).Watch(context.TODO(), options) + return client.K8sV1().IPAMs(namespace).Watch(context.TODO(), options) }, }, - &ficv1.F5IPAM{}, + &ficv1.IPAM{}, resyncPeriod, indexers, ) } -func (f *f5IPAMInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewFilteredF5IPAMInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +func (f *iPAMInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredIPAMInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) } -func (f *f5IPAMInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&ficv1.F5IPAM{}, f.defaultInformer) +func (f *iPAMInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&ficv1.IPAM{}, f.defaultInformer) } -func (f *f5IPAMInformer) Lister() v1.F5IPAMLister { - return v1.NewF5IPAMLister(f.Informer().GetIndexer()) +func (f *iPAMInformer) Lister() v1.IPAMLister { + return v1.NewIPAMLister(f.Informer().GetIndexer()) } diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/expansion_generated.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/expansion_generated.go index 36c67146b..50c90d3e7 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/expansion_generated.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/expansion_generated.go @@ -18,10 +18,10 @@ limitations under the License. package v1 -// F5IPAMListerExpansion allows custom methods to be added to -// F5IPAMLister. -type F5IPAMListerExpansion interface{} +// IPAMListerExpansion allows custom methods to be added to +// IPAMLister. +type IPAMListerExpansion interface{} -// F5IPAMNamespaceListerExpansion allows custom methods to be added to -// F5IPAMNamespaceLister. -type F5IPAMNamespaceListerExpansion interface{} +// IPAMNamespaceListerExpansion allows custom methods to be added to +// IPAMNamespaceLister. +type IPAMNamespaceListerExpansion interface{} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/f5ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/f5ipam.go deleted file mode 100644 index 39579111a..000000000 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/f5ipam.go +++ /dev/null @@ -1,99 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by lister-gen. DO NOT EDIT. - -package v1 - -import ( - v1 "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1" - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// F5IPAMLister helps list F5IPAMs. -// All objects returned here must be treated as read-only. -type F5IPAMLister interface { - // List lists all F5IPAMs in the indexer. - // Objects returned here must be treated as read-only. - List(selector labels.Selector) (ret []*v1.F5IPAM, err error) - // F5IPAMs returns an object that can list and get F5IPAMs. - F5IPAMs(namespace string) F5IPAMNamespaceLister - F5IPAMListerExpansion -} - -// f5IPAMLister implements the F5IPAMLister interface. -type f5IPAMLister struct { - indexer cache.Indexer -} - -// NewF5IPAMLister returns a new F5IPAMLister. -func NewF5IPAMLister(indexer cache.Indexer) F5IPAMLister { - return &f5IPAMLister{indexer: indexer} -} - -// List lists all F5IPAMs in the indexer. -func (s *f5IPAMLister) List(selector labels.Selector) (ret []*v1.F5IPAM, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1.F5IPAM)) - }) - return ret, err -} - -// F5IPAMs returns an object that can list and get F5IPAMs. -func (s *f5IPAMLister) F5IPAMs(namespace string) F5IPAMNamespaceLister { - return f5IPAMNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// F5IPAMNamespaceLister helps list and get F5IPAMs. -// All objects returned here must be treated as read-only. -type F5IPAMNamespaceLister interface { - // List lists all F5IPAMs in the indexer for a given namespace. - // Objects returned here must be treated as read-only. - List(selector labels.Selector) (ret []*v1.F5IPAM, err error) - // Get retrieves the F5IPAM from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. - Get(name string) (*v1.F5IPAM, error) - F5IPAMNamespaceListerExpansion -} - -// f5IPAMNamespaceLister implements the F5IPAMNamespaceLister -// interface. -type f5IPAMNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all F5IPAMs in the indexer for a given namespace. -func (s f5IPAMNamespaceLister) List(selector labels.Selector) (ret []*v1.F5IPAM, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1.F5IPAM)) - }) - return ret, err -} - -// Get retrieves the F5IPAM from the indexer for a given namespace and name. -func (s f5IPAMNamespaceLister) Get(name string) (*v1.F5IPAM, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1.Resource("f5ipam"), name) - } - return obj.(*v1.F5IPAM), nil -} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/ipam.go new file mode 100644 index 000000000..a80c399e2 --- /dev/null +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/listers/fic/v1/ipam.go @@ -0,0 +1,99 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// IPAMLister helps list IPAMs. +// All objects returned here must be treated as read-only. +type IPAMLister interface { + // List lists all IPAMs in the indexer. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*v1.IPAM, err error) + // IPAMs returns an object that can list and get IPAMs. + IPAMs(namespace string) IPAMNamespaceLister + IPAMListerExpansion +} + +// iPAMLister implements the IPAMLister interface. +type iPAMLister struct { + indexer cache.Indexer +} + +// NewIPAMLister returns a new IPAMLister. +func NewIPAMLister(indexer cache.Indexer) IPAMLister { + return &iPAMLister{indexer: indexer} +} + +// List lists all IPAMs in the indexer. +func (s *iPAMLister) List(selector labels.Selector) (ret []*v1.IPAM, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1.IPAM)) + }) + return ret, err +} + +// IPAMs returns an object that can list and get IPAMs. +func (s *iPAMLister) IPAMs(namespace string) IPAMNamespaceLister { + return iPAMNamespaceLister{indexer: s.indexer, namespace: namespace} +} + +// IPAMNamespaceLister helps list and get IPAMs. +// All objects returned here must be treated as read-only. +type IPAMNamespaceLister interface { + // List lists all IPAMs in the indexer for a given namespace. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*v1.IPAM, err error) + // Get retrieves the IPAM from the indexer for a given namespace and name. + // Objects returned here must be treated as read-only. + Get(name string) (*v1.IPAM, error) + IPAMNamespaceListerExpansion +} + +// iPAMNamespaceLister implements the IPAMNamespaceLister +// interface. +type iPAMNamespaceLister struct { + indexer cache.Indexer + namespace string +} + +// List lists all IPAMs in the indexer for a given namespace. +func (s iPAMNamespaceLister) List(selector labels.Selector) (ret []*v1.IPAM, err error) { + err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { + ret = append(ret, m.(*v1.IPAM)) + }) + return ret, err +} + +// Get retrieves the IPAM from the indexer for a given namespace and name. +func (s iPAMNamespaceLister) Get(name string) (*v1.IPAM, error) { + obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1.Resource("ipam"), name) + } + return obj.(*v1.IPAM), nil +} diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/client.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/client.go index 8f690501a..192aec70b 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/client.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/client.go @@ -20,6 +20,8 @@ import ( "bytes" "context" "encoding/json" + "strings" + v1 "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1" log "github.com/F5Networks/f5-ipam-controller/pkg/vlogger" metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -28,22 +30,21 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer" typesV1 "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/rest" - "strings" ) const MAX_RETRIES = 10 -func (ipamCli *IPAMClient) Create(obj *v1.F5IPAM) (*v1.F5IPAM, error) { - return ipamCli.kubeCRClient.K8sV1().F5IPAMs(obj.Namespace).Create(context.TODO(), obj, metaV1.CreateOptions{}) +func (ipamCli *IPAMClient) Create(obj *v1.IPAM) (*v1.IPAM, error) { + return ipamCli.kubeCRClient.K8sV1().IPAMs(obj.Namespace).Create(context.TODO(), obj, metaV1.CreateOptions{}) } -func (ipamCli *IPAMClient) Update(obj *v1.F5IPAM) (res *v1.F5IPAM, err error) { +func (ipamCli *IPAMClient) Update(obj *v1.IPAM) (res *v1.IPAM, err error) { name := obj.Name namespace := obj.Namespace spec := obj.Spec for i := 0; i < MAX_RETRIES; i++ { - res, err = ipamCli.kubeCRClient.K8sV1().F5IPAMs(namespace).Update(context.TODO(), obj, metaV1.UpdateOptions{}) + res, err = ipamCli.kubeCRClient.K8sV1().IPAMs(namespace).Update(context.TODO(), obj, metaV1.UpdateOptions{}) if err == nil { return } @@ -54,7 +55,7 @@ func (ipamCli *IPAMClient) Update(obj *v1.F5IPAM) (res *v1.F5IPAM, err error) { } obj, err = ipamCli.Get(namespace, name) if err != nil { - log.Errorf("Unable to find F5IPAM: %v/%v to update. Error: %v", + log.Errorf("Unable to find IPAM: %v/%v to update. Error: %v", namespace, name, err) return } @@ -63,13 +64,13 @@ func (ipamCli *IPAMClient) Update(obj *v1.F5IPAM) (res *v1.F5IPAM, err error) { return } -func (ipamCli *IPAMClient) UpdateStatus(obj *v1.F5IPAM) (res *v1.F5IPAM, err error) { +func (ipamCli *IPAMClient) UpdateStatus(obj *v1.IPAM) (res *v1.IPAM, err error) { name := obj.Name namespace := obj.Namespace status := obj.Status for i := 0; i < MAX_RETRIES; i++ { - res, err = ipamCli.kubeCRClient.K8sV1().F5IPAMs(namespace).UpdateStatus(context.TODO(), obj, metaV1.UpdateOptions{}) + res, err = ipamCli.kubeCRClient.K8sV1().IPAMs(namespace).UpdateStatus(context.TODO(), obj, metaV1.UpdateOptions{}) if err == nil { return } @@ -80,7 +81,7 @@ func (ipamCli *IPAMClient) UpdateStatus(obj *v1.F5IPAM) (res *v1.F5IPAM, err err } obj, err = ipamCli.Get(namespace, name) if err != nil { - log.Errorf("Unable to find F5IPAM: %v/%v to update status. Error: %v", + log.Errorf("Unable to find IPAM: %v/%v to update status. Error: %v", namespace, name, err) return } @@ -89,11 +90,11 @@ func (ipamCli *IPAMClient) UpdateStatus(obj *v1.F5IPAM) (res *v1.F5IPAM, err err return } -func (ipamCli *IPAMClient) Patch(obj *v1.F5IPAM) (*v1.F5IPAM, error) { +func (ipamCli *IPAMClient) Patch(obj *v1.IPAM) (*v1.IPAM, error) { var buf bytes.Buffer _ = json.NewEncoder(&buf).Encode(obj) - return ipamCli.kubeCRClient.K8sV1().F5IPAMs(obj.Namespace).Patch( + return ipamCli.kubeCRClient.K8sV1().IPAMs(obj.Namespace).Patch( context.TODO(), obj.Name, typesV1.StrategicMergePatchType, @@ -105,15 +106,15 @@ func (ipamCli *IPAMClient) Patch(obj *v1.F5IPAM) (*v1.F5IPAM, error) { } func (ipamCli *IPAMClient) Delete(namespace, name string, options metaV1.DeleteOptions) error { - return ipamCli.kubeCRClient.K8sV1().F5IPAMs(namespace).Delete(context.TODO(), name, options) + return ipamCli.kubeCRClient.K8sV1().IPAMs(namespace).Delete(context.TODO(), name, options) } -func (ipamCli *IPAMClient) Get(namespace, name string) (*v1.F5IPAM, error) { - return ipamCli.kubeCRClient.K8sV1().F5IPAMs(namespace).Get(context.TODO(), name, metaV1.GetOptions{}) +func (ipamCli *IPAMClient) Get(namespace, name string) (*v1.IPAM, error) { + return ipamCli.kubeCRClient.K8sV1().IPAMs(namespace).Get(context.TODO(), name, metaV1.GetOptions{}) } -func (ipamCli *IPAMClient) List(namespace string) ([]v1.F5IPAM, error) { - ipamList, err := ipamCli.kubeCRClient.K8sV1().F5IPAMs(namespace).List(context.TODO(), metaV1.ListOptions{}) +func (ipamCli *IPAMClient) List(namespace string) ([]v1.IPAM, error) { + ipamList, err := ipamCli.kubeCRClient.K8sV1().IPAMs(namespace).List(context.TODO(), metaV1.ListOptions{}) if err != nil { return nil, err @@ -124,8 +125,8 @@ func (ipamCli *IPAMClient) List(namespace string) ([]v1.F5IPAM, error) { func addKnownTypes(scheme *runtime.Scheme) error { SchemeGroupVersion := schema.GroupVersion{Group: CRDGroup, Version: CRDVersion} scheme.AddKnownTypes(SchemeGroupVersion, - &v1.F5IPAM{}, - &v1.F5IPAMList{}, + &v1.IPAM{}, + &v1.IPAMList{}, ) metaV1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/informers.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/informers.go index 2aac14d86..fc37e8eda 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/informers.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/informers.go @@ -95,7 +95,7 @@ func (ipamCli *IPAMClient) newNamespacedInformer( stopCh: make(chan struct{}), } - ipamInf.ipamInformer = ficInfV1.NewFilteredF5IPAMInformer( + ipamInf.ipamInformer = ficInfV1.NewFilteredIPAMInformer( ipamCli.kubeCRClient, namespace, resyncPeriod, diff --git a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/ipam.go b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/ipam.go index 39f7ecc17..2523415a1 100644 --- a/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/ipam.go +++ b/vendor/github.com/F5Networks/f5-ipam-controller/pkg/ipammachinery/ipam.go @@ -19,6 +19,7 @@ package ipammachinery import ( "context" "fmt" + "github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned" log "github.com/F5Networks/f5-ipam-controller/pkg/vlogger" apiextensionv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" @@ -32,11 +33,11 @@ import ( const ( - // F5IPAM is a F5 Custom Resource Kind. - F5ipam = "F5IPAM" + // IPAM is a F5 Custom Resource Kind. + F5ipam = "IPAM" F5IPAMCtlr = "F5 IPAM Controller" - CRDPlural string = "f5ipams" + CRDPlural string = "ipams" CRDGroup string = "fic.f5.com" CRDVersion string = "v1" FullCRDName string = CRDPlural + "." + CRDGroup @@ -119,7 +120,7 @@ func (ipamCli *IPAMClient) Stop() { } } -// RegisterCRD creates schema of F5IPAM and registers it with Kubernetes/Openshift +// RegisterCRD creates schema of IPAM and registers it with Kubernetes/Openshift func RegisterCRD(clientset extClient.Interface) error { crd := &apiextensionv1beta1.CustomResourceDefinition{ ObjectMeta: meta_v1.ObjectMeta{ diff --git a/vendor/modules.txt b/vendor/modules.txt index 787786b7e..010b0f5bd 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210720135810-3c6cbe8409ee +# github.com/F5Networks/f5-ipam-controller v0.1.5-0.20210813064837-de4b96f0e82c ## explicit github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/apis/fic/v1 github.com/F5Networks/f5-ipam-controller/pkg/ipamapis/client/clientset/versioned