@@ -37,9 +37,6 @@ import (
3737// Type for conveying the results of the EnsureAmphoraManagementNetwork call.
3838type NetworkProvisioningSummary struct {
3939 TenantNetworkID string
40- TenantSubnetID string
41- ProviderNetworkID string
42- RouterID string
4340 SecurityGroupID string
4441 ManagementSubnetCIDR string
4542 ManagementSubnetGateway string
@@ -208,6 +205,25 @@ func getNetworkExt(client *gophercloud.ServiceClient, networkName string, servic
208205 return nil , nil
209206}
210207
208+ func getSubnet (client * gophercloud.ServiceClient , subnetName string , serviceTenantID string ) (* subnets.Subnet , error ) {
209+ listOpts := subnets.ListOpts {
210+ Name : subnetName ,
211+ TenantID : serviceTenantID ,
212+ }
213+ allPages , err := subnets .List (client , listOpts ).AllPages ()
214+ if err != nil {
215+ return nil , err
216+ }
217+ allSubnets , err := subnets .ExtractSubnets (allPages )
218+ if err != nil {
219+ return nil , err
220+ }
221+ if len (allSubnets ) > 0 {
222+ return & allSubnets [0 ], nil
223+ }
224+ return nil , nil
225+ }
226+
211227func ensureNetwork (client * gophercloud.ServiceClient , createOpts networks.CreateOpts , log * logr.Logger ,
212228 serviceTenantID string ) (* networks.Network , error ) {
213229 foundNetwork , err := getNetwork (client , createOpts .Name , serviceTenantID )
@@ -805,6 +821,72 @@ func ensureSecurityGroup(
805821 return secGroup .ID , nil
806822}
807823
824+ func HandleUnmanagedAmphoraManagementNetwork (
825+ ctx context.Context ,
826+ ns string ,
827+ tenantName string ,
828+ netDetails * octaviav1.OctaviaLbMgmtNetworks ,
829+ log * logr.Logger ,
830+ helper * helper.Helper ,
831+ ) (NetworkProvisioningSummary , error ) {
832+ o , err := GetOpenstackClient (ctx , ns , helper )
833+ if err != nil {
834+ return NetworkProvisioningSummary {}, err
835+ }
836+ client , err := GetNetworkClient (o )
837+ if err != nil {
838+ return NetworkProvisioningSummary {}, err
839+ }
840+ serviceTenant , err := GetProject (o , tenantName )
841+ if err != nil {
842+ return NetworkProvisioningSummary {}, err
843+ }
844+
845+ tenantNetworkID := ""
846+ network , err := getNetwork (client , LbMgmtNetName , serviceTenant .ID )
847+ if err == nil && network != nil {
848+ tenantNetworkID = network .ID
849+ }
850+
851+ managementSubnetGateway := ""
852+ router , err := findRouter (client , log )
853+ if err == nil && router != nil {
854+ if len (router .GatewayInfo .ExternalFixedIPs ) > 0 {
855+ managementSubnetGateway = router .GatewayInfo .ExternalFixedIPs [0 ].IPAddress
856+ } else {
857+ log .Info ("No external fixedIP on router %s, skipping" , router .Name )
858+ }
859+ }
860+
861+ managementSubnetCIDR := ""
862+ subnet , err := getSubnet (client , LbMgmtSubnetName , serviceTenant .ID )
863+ if err == nil && subnet != nil {
864+ managementSubnetCIDR = subnet .CIDR
865+ }
866+
867+ managementSubnetExtraCIDRs := []string {}
868+ for _ , az := range netDetails .AvailabilityZones {
869+ subnet , err := getSubnet (client , fmt .Sprintf (LbMgmtSubnetNameAZ , az ), serviceTenant .ID )
870+ if err == nil && subnet != nil {
871+ managementSubnetExtraCIDRs = append (managementSubnetExtraCIDRs , subnet .CIDR )
872+ }
873+ }
874+
875+ securityGroupID := ""
876+ securityGroup , err := findSecurityGroup (client , serviceTenant .ID , LbMgmtNetworkSecurityGroupName , log )
877+ if err == nil && securityGroup != nil {
878+ securityGroupID = securityGroup .ID
879+ }
880+
881+ return NetworkProvisioningSummary {
882+ TenantNetworkID : tenantNetworkID ,
883+ SecurityGroupID : securityGroupID ,
884+ ManagementSubnetCIDR : managementSubnetCIDR ,
885+ ManagementSubnetGateway : managementSubnetGateway ,
886+ ManagementSubnetExtraCIDRs : managementSubnetExtraCIDRs ,
887+ }, nil
888+ }
889+
808890// EnsureAmphoraManagementNetwork - retrieve, create and reconcile the Octavia management network for the in cluster link to the
809891// management tenant network.
810892func EnsureAmphoraManagementNetwork (
@@ -844,7 +926,6 @@ func EnsureAmphoraManagementNetwork(
844926 var tenantSubnet * subnets.Subnet
845927 var tenantRouterPort * ports.Port
846928 tenantNetworkID := ""
847- tenantSubnetID := ""
848929
849930 if netDetails .CreateDefaultLbMgmtNetwork {
850931 tenantNetwork , err = ensureLbMgmtNetwork (client , nil , netDetails , serviceTenant .ID , log )
@@ -857,7 +938,6 @@ func EnsureAmphoraManagementNetwork(
857938 if err != nil {
858939 return NetworkProvisioningSummary {}, err
859940 }
860- tenantSubnetID = tenantSubnet .ID
861941
862942 tenantRouterPort , _ , err = ensurePort (client , nil , tenantNetwork , & securityGroups , log )
863943 if err != nil {
@@ -997,9 +1077,6 @@ func EnsureAmphoraManagementNetwork(
9971077
9981078 return NetworkProvisioningSummary {
9991079 TenantNetworkID : tenantNetworkID ,
1000- TenantSubnetID : tenantSubnetID ,
1001- ProviderNetworkID : providerNetwork .ID ,
1002- RouterID : router .ID ,
10031080 SecurityGroupID : lbMgmtSecurityGroupID ,
10041081 ManagementSubnetCIDR : managementSubnetCIDR ,
10051082 ManagementSubnetGateway : networkParameters .ProviderGateway .String (),
0 commit comments