Skip to content

Commit

Permalink
fix(provider/gce): Fix broken deploys with namedPorts.
Browse files Browse the repository at this point in the history
  • Loading branch information
jtk54 committed Oct 20, 2017
1 parent 6dac3d9 commit 437b39b
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1072,6 +1072,15 @@ class GCEUtil {
)
}

static void updateMetadatWithLoadBalancingPolicy(GoogleHttpLoadBalancingPolicy policy, Map instanceMetadata, ObjectMapper objectMapper) {
if (policy.listeningPort) {
log.warn("Translated old load balancer instance metadata entry to new format")
policy.setNamedPorts([new NamedPort(name: GoogleHttpLoadBalancingPolicy.HTTP_DEFAULT_PORT_NAME, port: policy.listeningPort)])
policy.listeningPort = null // Deprecated.
}
instanceMetadata[(GoogleServerGroup.View.LOAD_BALANCING_POLICY)] = objectMapper.writeValueAsString(policy)
}

// Note: namedPorts are not set in this method.
static GoogleHttpLoadBalancingPolicy loadBalancingPolicyFromBackend(Backend backend) {
def backendBalancingMode = GoogleLoadBalancingPolicy.BalancingMode.valueOf(backend.balancingMode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,32 +234,22 @@ class BasicGoogleDeployHandler implements DeployHandler<BasicGoogleDeployDescrip
TAG_SCOPE, SCOPE_GLOBAL)

Backend backendToAdd
GoogleHttpLoadBalancingPolicy policy
if (loadBalancingPolicy?.balancingMode) {
instanceMetadata[(GoogleServerGroup.View.LOAD_BALANCING_POLICY)] = objectMapper.writeValueAsString(loadBalancingPolicy)
backendToAdd = GCEUtil.backendFromLoadBalancingPolicy(loadBalancingPolicy)
policy = loadBalancingPolicy
} else if (sourcePolicyJson) {
GoogleHttpLoadBalancingPolicy newPolicy = objectMapper.readValue(sourcePolicyJson, GoogleHttpLoadBalancingPolicy)
if (newPolicy.listeningPort) {
log.warn("Translated old load balancer instance metadata entry to new format")
newPolicy.setNamedPorts([new NamedPort(name: GoogleHttpLoadBalancingPolicy.HTTP_DEFAULT_PORT_NAME, port: newPolicy.listeningPort)])
newPolicy.listeningPort = null // Deprecated.
// Note: For backwards compatibility with old metadata formats, we need to re-set the instance metadata field.
instanceMetadata[(GoogleServerGroup.View.LOAD_BALANCING_POLICY)] = objectMapper.writeValueAsString(newPolicy)
}
backendToAdd = GCEUtil.backendFromLoadBalancingPolicy(newPolicy)
policy = objectMapper.readValue(sourcePolicyJson, GoogleHttpLoadBalancingPolicy)
} else {
log.warn("No load balancing policy found in the operation description or the source server group, adding defaults")
instanceMetadata[(GoogleServerGroup.View.LOAD_BALANCING_POLICY)] = objectMapper.writeValueAsString(
// Sane defaults in case of a create with no LoadBalancingPolicy specified.
new GoogleHttpLoadBalancingPolicy(
policy = new GoogleHttpLoadBalancingPolicy(
balancingMode: GoogleLoadBalancingPolicy.BalancingMode.UTILIZATION,
maxUtilization: 0.80,
capacityScaler: 1.0,
namedPorts: [new NamedPort(name: GoogleHttpLoadBalancingPolicy.HTTP_DEFAULT_PORT_NAME, port: GoogleHttpLoadBalancingPolicy.HTTP_DEFAULT_PORT)]
)
)
backendToAdd = new Backend()
}
GCEUtil.updateMetadatWithLoadBalancingPolicy(policy, instanceMetadata, objectMapper)
backendToAdd = GCEUtil.backendFromLoadBalancingPolicy(policy)

if (isRegional) {
backendToAdd.setGroup(GCEUtil.buildRegionalServerGroupUrl(project, region, serverGroupName))
Expand Down Expand Up @@ -425,7 +415,13 @@ class BasicGoogleDeployHandler implements DeployHandler<BasicGoogleDeployDescrip
}
namedPorts = sourceServerGroup?.namedPorts?.collect { name, port -> new NamedPort(name: name, port: port) }
} else {
namedPorts = description?.loadBalancingPolicy?.namedPorts
def loadBalancingPolicy = description?.loadBalancingPolicy
if (loadBalancingPolicy?.namedPorts) {
namedPorts = description?.loadBalancingPolicy?.namedPorts
} else if (loadBalancingPolicy?.listeningPort) {
log.warn("Deriving named ports from deprecated 'listeningPort' attribute. Please update your deploy description to use 'namedPorts'.")
namedPorts = [new NamedPort(name: GoogleHttpLoadBalancingPolicy.HTTP_DEFAULT_PORT_NAME, port: loadBalancingPolicy?.listeningPort)]
}
}

if (!namedPorts) {
Expand Down

0 comments on commit 437b39b

Please sign in to comment.