@@ -10,17 +10,18 @@ package vcdsdk
10
10
import (
11
11
"context"
12
12
"fmt"
13
+ "net/http"
14
+ "net/url"
15
+ "strconv"
16
+ "strings"
17
+
13
18
"github.com/antihax/optional"
14
19
"github.com/peterhellberg/link"
15
20
"github.com/vmware/cloud-provider-for-cloud-director/pkg/util"
16
21
swaggerClient "github.com/vmware/cloud-provider-for-cloud-director/pkg/vcdswaggerclient_36_0"
17
22
"github.com/vmware/go-vcloud-director/v2/govcd"
18
23
"github.com/vmware/go-vcloud-director/v2/types/v56"
19
24
"k8s.io/klog"
20
- "net/http"
21
- "net/url"
22
- "strconv"
23
- "strings"
24
25
)
25
26
26
27
type OneArm struct {
@@ -1104,7 +1105,7 @@ func (gatewayManager *GatewayManager) checkIfGatewayIsReady(ctx context.Context)
1104
1105
}
1105
1106
1106
1107
func (gatewayManager * GatewayManager ) UpdateVirtualService (ctx context.Context , virtualServiceName string ,
1107
- virtualServiceIP string , externalPort int32 , oneArmEnabled bool ) (* swaggerClient.EntityReference , error ) {
1108
+ virtualServiceIP string , externalPort int32 , oneArmEnabled bool , applicationProfile string ) (* swaggerClient.EntityReference , error ) {
1108
1109
client := gatewayManager .Client
1109
1110
vsSummary , err := gatewayManager .GetVirtualService (ctx , virtualServiceName )
1110
1111
if err != nil {
@@ -1147,6 +1148,11 @@ func (gatewayManager *GatewayManager) UpdateVirtualService(ctx context.Context,
1147
1148
// update the virtual IP address of the virtual service when one arm is nil
1148
1149
vs .VirtualIpAddress = virtualServiceIP
1149
1150
}
1151
+
1152
+ if applicationProfile != "" && vs .ApplicationProfile .Name != applicationProfile {
1153
+ vs .ApplicationProfile .Name = applicationProfile
1154
+ }
1155
+
1150
1156
resp , err := client .APIClient .EdgeGatewayLoadBalancerVirtualServiceApi .UpdateVirtualService (ctx , vs , vsSummary .Id , org .Org .ID )
1151
1157
if resp != nil && resp .StatusCode != http .StatusAccepted {
1152
1158
var responseMessageBytes []byte
@@ -1187,7 +1193,7 @@ func (gatewayManager *GatewayManager) UpdateVirtualService(ctx context.Context,
1187
1193
func (gatewayManager * GatewayManager ) CreateVirtualService (ctx context.Context , virtualServiceName string ,
1188
1194
lbPoolRef * swaggerClient.EntityReference , segRef * swaggerClient.EntityReference ,
1189
1195
freeIP string , vsType string , externalPort int32 ,
1190
- useSSL bool , certificateAlias string ) (* swaggerClient.EntityReference , error ) {
1196
+ useSSL bool , certificateAlias , applicationProfile string ) (* swaggerClient.EntityReference , error ) {
1191
1197
1192
1198
client := gatewayManager .Client
1193
1199
if gatewayManager .GatewayRef == nil {
@@ -1231,9 +1237,7 @@ func (gatewayManager *GatewayManager) CreateVirtualService(ctx context.Context,
1231
1237
SslEnabled : useSSL ,
1232
1238
},
1233
1239
},
1234
- ApplicationProfile : & swaggerClient.EdgeLoadBalancerApplicationProfile {
1235
- SystemDefined : true ,
1236
- },
1240
+ ApplicationProfile : & swaggerClient.EdgeLoadBalancerApplicationProfile {},
1237
1241
}
1238
1242
switch vsType {
1239
1243
case "TCP" :
@@ -1259,6 +1263,10 @@ func (gatewayManager *GatewayManager) CreateVirtualService(ctx context.Context,
1259
1263
return nil , fmt .Errorf ("unhandled virtual service type [%s]" , vsType )
1260
1264
}
1261
1265
1266
+ if applicationProfile != "" {
1267
+ virtualServiceConfig .ApplicationProfile .Name = applicationProfile
1268
+ }
1269
+
1262
1270
clusterOrg , err := client .VCDClient .GetOrgByName (client .ClusterOrgName )
1263
1271
if err != nil {
1264
1272
return nil , fmt .Errorf ("unable to get org for org [%s]: [%v]" , client .ClusterOrgName , err )
@@ -1502,7 +1510,7 @@ func (gatewayManager *GatewayManager) GetLoadBalancerPoolMemberIPs(ctx context.C
1502
1510
1503
1511
func (gm * GatewayManager ) CreateLoadBalancer (ctx context.Context , virtualServiceNamePrefix string , lbPoolNamePrefix string ,
1504
1512
ips []string , portDetailsList []PortDetails , oneArm * OneArm , enableVirtualServiceSharedIP bool ,
1505
- portNameToIP map [string ]string , providedIP string , resourcesAllocated * util.AllocatedResourcesMap ) (string , error ) {
1513
+ portNameToIP map [string ]string , providedIP string , resourcesAllocated * util.AllocatedResourcesMap , applicationProfile string ) (string , error ) {
1506
1514
if len (portDetailsList ) == 0 {
1507
1515
// nothing to do here
1508
1516
klog .Infof ("There is no port specified. Hence nothing to do." )
@@ -1707,7 +1715,7 @@ func (gm *GatewayManager) CreateLoadBalancer(ctx context.Context, virtualService
1707
1715
1708
1716
virtualServiceRef , err := gm .CreateVirtualService (ctx , virtualServiceName , lbPoolRef , segRef ,
1709
1717
virtualServiceIP , portDetails .Protocol , portDetails .ExternalPort ,
1710
- portDetails .UseSSL , portDetails .CertAlias )
1718
+ portDetails .UseSSL , portDetails .CertAlias , applicationProfile )
1711
1719
if err != nil {
1712
1720
// return plain error if vcdsdk.VirtualServicePendingError is returned. Helps the caller recognize that the
1713
1721
// error is because VirtualService is still in Pending state.
@@ -1833,7 +1841,7 @@ func (gm *GatewayManager) DeleteLoadBalancer(ctx context.Context, virtualService
1833
1841
1834
1842
func (gm * GatewayManager ) UpdateLoadBalancer (ctx context.Context , lbPoolName string , virtualServiceName string ,
1835
1843
ips []string , externalIP string , internalPort int32 , externalPort int32 , oneArm * OneArm , enableVirtualServiceSharedIP bool , protocol string ,
1836
- resourcesAllocated * util.AllocatedResourcesMap ) (string , error ) {
1844
+ resourcesAllocated * util.AllocatedResourcesMap , applicationProfile string ) (string , error ) {
1837
1845
1838
1846
if gm == nil {
1839
1847
return "" , fmt .Errorf ("GatewayManager cannot be nil" )
@@ -1852,7 +1860,7 @@ func (gm *GatewayManager) UpdateLoadBalancer(ctx context.Context, lbPoolName str
1852
1860
return "" , fmt .Errorf ("unable to update load balancer pool [%s]: [%v]" , lbPoolName , err )
1853
1861
}
1854
1862
resourcesAllocated .Insert (VcdResourceLoadBalancerPool , lbPoolRef )
1855
- vsRef , err := gm .UpdateVirtualService (ctx , virtualServiceName , externalIP , externalPort , oneArm != nil )
1863
+ vsRef , err := gm .UpdateVirtualService (ctx , virtualServiceName , externalIP , externalPort , oneArm != nil , applicationProfile )
1856
1864
if vsRef != nil {
1857
1865
resourcesAllocated .Insert (VcdResourceVirtualService , vsRef )
1858
1866
}
0 commit comments