Skip to content

Commit

Permalink
IPPool controller added
Browse files Browse the repository at this point in the history
  • Loading branch information
zhengxiexie committed Aug 10, 2023
1 parent 4156402 commit 10fc299
Show file tree
Hide file tree
Showing 35 changed files with 2,294 additions and 81 deletions.
7 changes: 7 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,11 @@ resources:
kind: NSXServiceAccount
path: github.com/vmware-tanzu/nsx-operator/pkg/api/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
domain: nsx.vmware.com
kind: IPPool
path: github.com/vmware-tanzu/nsx-operator/pkg/api/v1alpha2
version: v1alpha2
version: "3"
69 changes: 29 additions & 40 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,21 @@ import (
logf "sigs.k8s.io/controller-runtime/pkg/log"

"github.com/vmware-tanzu/nsx-operator/pkg/apis/v1alpha1"
"github.com/vmware-tanzu/nsx-operator/pkg/apis/v1alpha2"
"github.com/vmware-tanzu/nsx-operator/pkg/config"
commonctl "github.com/vmware-tanzu/nsx-operator/pkg/controllers/common"
namespacecontroller "github.com/vmware-tanzu/nsx-operator/pkg/controllers/namespace"
ippool2 "github.com/vmware-tanzu/nsx-operator/pkg/controllers/ippool"
nsxserviceaccountcontroller "github.com/vmware-tanzu/nsx-operator/pkg/controllers/nsxserviceaccount"
securitypolicycontroller "github.com/vmware-tanzu/nsx-operator/pkg/controllers/securitypolicy"
staticroutecontroller "github.com/vmware-tanzu/nsx-operator/pkg/controllers/staticroute"
"github.com/vmware-tanzu/nsx-operator/pkg/controllers/subnet"
"github.com/vmware-tanzu/nsx-operator/pkg/controllers/subnetport"
"github.com/vmware-tanzu/nsx-operator/pkg/controllers/subnetset"
vpccontroller "github.com/vmware-tanzu/nsx-operator/pkg/controllers/vpc"
"github.com/vmware-tanzu/nsx-operator/pkg/logger"
"github.com/vmware-tanzu/nsx-operator/pkg/metrics"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/common"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/ippool"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/nsxserviceaccount"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/securitypolicy"
"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/vpc"
Expand All @@ -45,6 +46,7 @@ func init() {
var err error
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
utilruntime.Must(v1alpha1.AddToScheme(scheme))
utilruntime.Must(v1alpha2.AddToScheme(scheme))
config.AddFlags()

logf.SetLogger(logger.ZapLogger())
Expand Down Expand Up @@ -105,33 +107,27 @@ func StartNSXServiceAccountController(mgr ctrl.Manager, commonService common.Ser
}
}

func StartVPCController(mgr ctrl.Manager, commonService common.Service) {
vpcReconciler := &vpccontroller.VPCReconciler{
func StartIPPoolController(mgr ctrl.Manager, commonService common.Service) {
ippoolReconcile := &ippool2.IPPoolReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}
if vpcService, err := vpc.InitializeVPC(commonService); err != nil {
log.Error(err, "failed to initialize vpc commonService", "controller", "VPC")
if ipPoolService, err := ippool.InitializeIPPool(commonService); err != nil {
log.Error(err, "failed to initialize ippool commonService", "controller", "IPPool")
os.Exit(1)
} else {
vpcReconciler.Service = vpcService
commonctl.ServiceMediator.VPCService = vpcService
}
if err := vpcReconciler.Start(mgr); err != nil {
log.Error(err, "failed to create vpc controller", "controller", "VPC")
os.Exit(1)
ippoolReconcile.Service = ipPoolService
}
}

func StartNamespaceController(mgr ctrl.Manager, commonService common.Service) {
nsReconciler := &namespacecontroller.NamespaceReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
NSXConfig: commonService.NSXConfig,
// TODO: remove this after vpc is ready
if vpcService, err := vpc.InitializeVPC(commonService); err != nil {
log.Error(err, "failed to initialize vpc commonService", "controller", "vpc")
os.Exit(1)
} else {
commonctl.ServiceMediator.VPCService = vpcService
}

if err := nsReconciler.Start(mgr); err != nil {
log.Error(err, "failed to create namespace controller", "controller", "Namespace")
if err := ippoolReconcile.Start(mgr); err != nil {
log.Error(err, "failed to create controller", "controller", "IPPool")
os.Exit(1)
}
}
Expand Down Expand Up @@ -166,30 +162,23 @@ func main() {
NSXConfig: cf,
}

if cf.CoeConfig.EnableVPCNetwork && commonService.NSXClient.NSXCheckVersion(nsx.VPC) {
log.V(1).Info("VPC mode enabled")
// Start controllers which only supports VPC
// Start subnet/subnetset controller.
if err := subnet.StartSubnetController(mgr, commonService); err != nil {
os.Exit(1)
}
if err := subnetset.StartSubnetSetController(mgr, commonService); err != nil {
os.Exit(1)
}

staticroutecontroller.StartStaticRouteController(mgr, commonService)
subnetport.StartSubnetPortController(mgr, commonService)

StartNamespaceController(mgr, commonService)
StartVPCController(mgr, commonService)
}
// Start the security policy controller, it supports VPC and non VPC mode
// Start the security policy controller.
StartSecurityPolicyController(mgr, commonService)

staticroutecontroller.StartStaticRouteController(mgr, commonService)
// Start the NSXServiceAccount controller.
if cf.EnableAntreaNSXInterworking {
StartNSXServiceAccountController(mgr, commonService)
}
// Start subnet/subnetset controller.
if err := subnet.StartSubnetController(mgr, commonService); err != nil {
os.Exit(1)
}
if err := subnetset.StartSubnetSetController(mgr, commonService); err != nil {
os.Exit(1)
}

StartIPPoolController(mgr, commonService)
subnetport.StartSubnetPortController(mgr, commonService)

if metrics.AreMetricsExposed(cf) {
go updateHealthMetricsPeriodically(nsxClient)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ require (
github.com/stretchr/objx v0.4.0 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
golang.org/x/mod v0.11.0 // indirect
golang.org/x/mod v0.6.0 // indirect
golang.org/x/net v0.5.0 // indirect
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect
golang.org/x/sys v0.4.0 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I=
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down
2 changes: 1 addition & 1 deletion hack/boilerplate.go.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/* Copyright © 2022 VMware, Inc. All Rights Reserved.
/* Copyright © 2023 VMware, Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0 */
2 changes: 1 addition & 1 deletion pkg/apis/nsx.vmware.com/v1alpha1/zz_generated.deepcopy.go

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

2 changes: 1 addition & 1 deletion pkg/apis/v1alpha1/zz_generated.deepcopy.go

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

2 changes: 1 addition & 1 deletion pkg/apis/v1alpha2/zz_generated.deepcopy.go

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

1 change: 1 addition & 0 deletions pkg/controllers/common/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

const (
MetricResTypeSecurityPolicy = "securitypolicy"
MetricResTypeIPPool = "ippool"
MetricResTypeNSXServiceAccount = "nsxserviceaccount"
MetricResTypeSubnetPort = "subnetport"
MetricResTypeStaticRoute = "staticroute"
Expand Down
Loading

0 comments on commit 10fc299

Please sign in to comment.