Skip to content

Commit

Permalink
Add IPAddressUsage resoruce type
Browse files Browse the repository at this point in the history
Adding a new IPAddressUsage resource type which is used
for an aggregated API server to get IPAddressUsage from the VPC
that is associated with the VPC.
  • Loading branch information
timdengyun committed Jun 21, 2024
1 parent 00b052d commit 31bbfd2
Show file tree
Hide file tree
Showing 8 changed files with 244 additions and 4 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ replace (
github.com/vmware-tanzu/nsx-operator/pkg/apis => ./pkg/apis
github.com/vmware-tanzu/nsx-operator/pkg/apis/v1alpha1 => ./pkg/apis/v1alpha1
github.com/vmware-tanzu/nsx-operator/pkg/apis/v1alpha2 => ./pkg/apis/v1alpha2
github.com/vmware-tanzu/nsx-operator/pkg/client => ./pkg/client
github.com/vmware-tanzu/nsx-operator/pkg/client => ./pkg/client
)

require (
github.com/agiledragon/gomonkey/v2 v2.9.0
github.com/apparentlymart/go-cidr v1.1.0
github.com/deckarep/golang-set v1.8.0
github.com/go-logr/logr v1.3.0
github.com/go-logr/zapr v1.2.4
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/golang/mock v1.6.0
github.com/google/uuid v1.3.0
Expand Down Expand Up @@ -53,7 +54,6 @@ require (
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gibson042/canonicaljson-go v1.0.3 // indirect
github.com/go-logr/zapr v1.2.4 // indirect
github.com/go-openapi/jsonpointer v0.19.6 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/swag v0.22.3 // indirect
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,6 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/vmware-tanzu/nsx-operator/pkg/client v0.0.0-20240102061654-537b080e159f h1:EV4eiUQr3QpUGfTtqdVph0+bmE+3cj0aNJpd9n2qTdo=
github.com/vmware-tanzu/nsx-operator/pkg/client v0.0.0-20240102061654-537b080e159f/go.mod h1:dzob8tUzpAREQPtbbjQs4b1UyQDR37B2TiIdg8WJSRM=
github.com/vmware-tanzu/vm-operator/api v1.8.2 h1:7cZHVusqAmAMFWvsiU7X5xontxdjasknI/sVfe0p0Z4=
github.com/vmware-tanzu/vm-operator/api v1.8.2/go.mod h1:vauVboD3sQxP+pb28TnI9wfrj+0nH2zSEc9Q7AzWJ54=
github.com/vmware/govmomi v0.27.4 h1:5kY8TAkhB20lsjzrjE073eRb8+HixBI29PVMG5lxq6I=
Expand Down
7 changes: 7 additions & 0 deletions pkg/apiserver/apis/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* Copyright © 2024 Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */

//
// +domain=vpc.nsx.vmware.com

package apis
8 changes: 8 additions & 0 deletions pkg/apiserver/apis/v1alpha1/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* Copyright © 2024 Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */

// +k8s:openapi-gen=true
// +k8s:deepcopy-gen=package,register
// +k8s:defaulter-gen=TypeMeta
// +groupName=vpc.nsx.vmware.com
package v1alpha1
62 changes: 62 additions & 0 deletions pkg/apiserver/apis/v1alpha1/ipaddressusage_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/* Copyright © 2024 Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
External Visibility = "EXTERNAL"
Project Visibility = "PROJECT"
Private Visibility = "PRIVATE"
)

type Visibility string

type IPAddress struct {
Address string `json:"address,omitempty" protobuf:"bytes,1,opt,name=address"`
Subnet string `json:"subnet,omitempty" protobuf:"bytes,2,opt,name=subnet"`
}

type AllocatedByVPC struct {
Count int `json:"count,omitempty" protobuf:"bytes,1,opt,name=count"`
IPAddresses []IPAddress `json:"ipAddresses,omitempty" protobuf:"bytes,2,opt,name=ipAddresses"`
CIDR string `json:"cidr,omitempty" protobuf:"bytes,3,opt,name=cidr"`
Visibility Visibility `json:"visibility,omitempty" protobuf:"bytes,4,opt,name=visibility"`
}

// IPBlock contains the used IPAddresses and CIDR.
type IPBlock struct {
Path string `json:"path,omitempty" protobuf:"bytes,1,rep,name=path"`
Available int `json:"available,omitempty" protobuf:"bytes,2,rep,name=available"`
// AllocatedByVPC contains the cidr and used IP Range.
Allocated AllocatedByVPC `json:"allocatedByVpc,omitempty" protobuf:"bytes,3,rep,name=allocatedByVpc"`
}

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// IPAddressUsage
// +k8s:openapi-gen=true
// +genclient:Namespaced
// +genclient:onlyVerbs=get
type IPAddressUsage struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

IPBlocks []IPBlock `json:"ipBlocks" protobuf:"bytes,2,rep,name=ipBlocks"`
}

// IPAddressUsageList
// +k8s:openapi-gen=true
// +genclient:Namespaced
// +genclient:onlyVerbs=get
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type IPAddressUsageList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`

Items []IPAddressUsage `json:"items"`
}
30 changes: 30 additions & 0 deletions pkg/apiserver/apis/v1alpha1/register.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/* Copyright © 2024 Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)

const (
GroupName = "vpc.nsx.vmware.com"
Version = "v1alpha1"
ResourceName = "ipaddressusages"
)

var AddToScheme = func(scheme *runtime.Scheme) error {
metav1.AddToGroupVersion(scheme, schema.GroupVersion{
Group: GroupName,
Version: Version,
})
// +kubebuilder:scaffold:install

scheme.AddKnownTypes(schema.GroupVersion{
Group: GroupName,
Version: Version,
}, &IPAddressUsage{}, &IPAddressUsageList{})
return nil
}
128 changes: 128 additions & 0 deletions pkg/apiserver/apis/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions pkg/apiserver/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* Copyright © 2024 Broadcom, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */

//
// +domain=vpc.nsx.vmware.com

package apiserver

0 comments on commit 31bbfd2

Please sign in to comment.