Skip to content

Commit 819c509

Browse files
committed
Add option to apply default services
Signed-off-by: Dainius Serplis <dserplis@vmware.com>
1 parent 8b03813 commit 819c509

File tree

3 files changed

+45
-13
lines changed

3 files changed

+45
-13
lines changed

govcd/nsxt_edgegateway.go

+30
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,36 @@ func (egw *NsxtEdgeGateway) UpdateSlaacProfile(slaacProfileConfig *types.NsxtEdg
890890
return updatedSlaacProfile, nil
891891
}
892892

893+
func (egw *NsxtEdgeGateway) ApplyIpSpaceDefaultServices() error {
894+
if egw.EdgeGateway == nil || egw.client == nil || egw.EdgeGateway.ID == "" {
895+
return fmt.Errorf("cannot Apply default IP Space Services for NSX-T Edge Gateway without ID")
896+
}
897+
898+
client := egw.client
899+
endpoint := types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayIpSpaceDefaultServices
900+
apiVersion, err := client.getOpenApiHighestElevatedVersion(endpoint)
901+
if err != nil {
902+
return err
903+
}
904+
905+
urlRef, err := client.OpenApiBuildEndpoint(fmt.Sprintf(endpoint, egw.EdgeGateway.ID))
906+
if err != nil {
907+
return err
908+
}
909+
910+
task, err := client.OpenApiPostItemAsync(apiVersion, urlRef, nil, nil)
911+
if err != nil {
912+
return err
913+
}
914+
915+
err = task.WaitTaskCompletion()
916+
if err != nil {
917+
return fmt.Errorf("error in task when applying default IP Space Services for Edge Gateway '%s': %s", egw.EdgeGateway.ID, err)
918+
}
919+
920+
return nil
921+
}
922+
893923
func getAllUnusedExternalIPAddresses(uplinks []types.EdgeGatewayUplinks, usedIpAddresses []*types.GatewayUsedIpAddress, optionalSubnet netip.Prefix) ([]netip.Addr, error) {
894924
// 1. Flatten all IP ranges in Edge Gateway using Go's native 'netip.Addr' IP container instead
895925
// of plain strings because it is more robust (supports IPv4 and IPv6 and also comparison

govcd/openapi_endpoints.go

+14-13
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,20 @@ var endpointMinApiVersions = map[string]string{
3030
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointTestConnection: "34.0",
3131
// OpenApiEndpointExternalNetworks endpoint support was introduced with version 32.0 however it was still not stable
3232
// enough to be used. (i.e. it did not support update "PUT")
33-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointExternalNetworks: "33.0",
34-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies: "32.0",
35-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcAssignedComputePolicies: "33.0",
36-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointSessionCurrent: "34.0",
37-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeClusters: "34.0", // VCD 10.1+
38-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointQosProfiles: "36.2", // VCD 10.3.2+ (NSX-T only)
39-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayQos: "36.2", // VCD 10.3.2+ (NSX-T only)
40-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayDhcpForwarder: "36.1", // VCD 10.3.1+ (NSX-T only)
41-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayL2VpnTunnel: "35.0", // VCD 10.2.0+ (NSX-T only)
42-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewaySlaacProfile: "35.0",
43-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayStaticRoutes: "37.0", // VCD 10.4.0+ (NSX-T only)
44-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGateways: "34.0",
45-
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayUsedIpAddresses: "34.0",
33+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointExternalNetworks: "33.0",
34+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcComputePolicies: "32.0",
35+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointVdcAssignedComputePolicies: "33.0",
36+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointSessionCurrent: "34.0",
37+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeClusters: "34.0", // VCD 10.1+
38+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointQosProfiles: "36.2", // VCD 10.3.2+ (NSX-T only)
39+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayQos: "36.2", // VCD 10.3.2+ (NSX-T only)
40+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayDhcpForwarder: "36.1", // VCD 10.3.1+ (NSX-T only)
41+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayL2VpnTunnel: "35.0", // VCD 10.2.0+ (NSX-T only)
42+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewaySlaacProfile: "35.0",
43+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayIpSpaceDefaultServices: "38.0", // VCD 10.5.0+
44+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayStaticRoutes: "37.0", // VCD 10.4.0+ (NSX-T only)
45+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGateways: "34.0",
46+
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointEdgeGatewayUsedIpAddresses: "34.0",
4647

4748
// Static security groups and IP sets in VCD 10.2, Dynamic security groups in VCD 10.3+
4849
types.OpenApiPathVersion1_0_0 + types.OpenApiEndpointFirewallGroups: "34.0",

types/v56/constants.go

+1
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ const (
383383
OpenApiEndpointEdgeGatewayQos = "edgeGateways/%s/qos"
384384
OpenApiEndpointEdgeGatewayDhcpForwarder = "edgeGateways/%s/dhcpForwarder"
385385
OpenApiEndpointEdgeGatewaySlaacProfile = "edgeGateways/%s/slaacProfile"
386+
OpenApiEndpointEdgeGatewayIpSpaceDefaultServices = "edgeGateways/%s/applyIpSpaceDefaultServices"
386387
OpenApiEndpointEdgeGatewayStaticRoutes = "edgeGateways/%s/routing/staticRoutes/"
387388
OpenApiEndpointEdgeGatewayUsedIpAddresses = "edgeGateways/%s/usedIpAddresses"
388389
OpenApiEndpointNsxtFirewallRules = "edgeGateways/%s/firewall/rules"

0 commit comments

Comments
 (0)