|
@@ -914,18 +914,18 @@ class GCEInstance(BaseInstance):
|
|
|
|
|
|
|
|
@property
|
|
@property
|
|
|
def _existing_target_instance(self):
|
|
def _existing_target_instance(self):
|
|
|
- parsed_url = self._provider.parse_url(self._gce_instance['selfLink'])
|
|
|
|
|
|
|
+ self_url = self._provider.parse_url(self._gce_instance['selfLink'])
|
|
|
try:
|
|
try:
|
|
|
response = (self._provider.gce_compute
|
|
response = (self._provider.gce_compute
|
|
|
.targetInstances()
|
|
.targetInstances()
|
|
|
.list(project=self._provider.project_name,
|
|
.list(project=self._provider.project_name,
|
|
|
- zone=parsed_url.parameters['zone'])
|
|
|
|
|
|
|
+ zone=self_url.parameters['zone'])
|
|
|
.execute())
|
|
.execute())
|
|
|
if 'items' not in response:
|
|
if 'items' not in response:
|
|
|
return None
|
|
return None
|
|
|
for target_instance in response['items']:
|
|
for target_instance in response['items']:
|
|
|
- instance = self._provider.parse_url(target_instance['instance'])
|
|
|
|
|
- if instance.parameters['instance'] == self.name:
|
|
|
|
|
|
|
+ url = self._provider.parse_url(target_instance['instance'])
|
|
|
|
|
+ if url.parameters['instance'] == self.name:
|
|
|
return target_instance
|
|
return target_instance
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
cb.log.warning('Exception while listing target instances: %s', e)
|
|
cb.log.warning('Exception while listing target instances: %s', e)
|
|
@@ -938,20 +938,19 @@ class GCEInstance(BaseInstance):
|
|
|
return existing_target_instance
|
|
return existing_target_instance
|
|
|
|
|
|
|
|
# No targetInstance exists for this instance. Create one.
|
|
# No targetInstance exists for this instance. Create one.
|
|
|
- url = self._gce_instance['selfLink']
|
|
|
|
|
- parsed_url = self._provider.parse_url(url)
|
|
|
|
|
|
|
+ self_url = self._provider.parse_url(self._gce_instance['selfLink'])
|
|
|
body = {'name': 'target-instance-{0}'.format(uuid.uuid4()),
|
|
body = {'name': 'target-instance-{0}'.format(uuid.uuid4()),
|
|
|
- 'instance': url}
|
|
|
|
|
|
|
+ 'instance': self._gce_instance['selfLink']}
|
|
|
try:
|
|
try:
|
|
|
response = (self._provider.gce_compute
|
|
response = (self._provider.gce_compute
|
|
|
.targetInstances()
|
|
.targetInstances()
|
|
|
.insert(
|
|
.insert(
|
|
|
project=self._provider.project_name,
|
|
project=self._provider.project_name,
|
|
|
- zone=parsed_url.parameters['zone'],
|
|
|
|
|
|
|
+ zone=self_url.parameters['zone'],
|
|
|
body=body)
|
|
body=body)
|
|
|
.execute())
|
|
.execute())
|
|
|
self._provider.wait_for_operation(
|
|
self._provider.wait_for_operation(
|
|
|
- response, zone=parsed_url.parameters['zone'])
|
|
|
|
|
|
|
+ response, zone=self_url.parameters['zone'])
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
cb.log.warning('Exception while inserting a target instance: %s', e)
|
|
cb.log.warning('Exception while inserting a target instance: %s', e)
|
|
|
return None
|
|
return None
|
|
@@ -998,10 +997,9 @@ class GCEInstance(BaseInstance):
|
|
|
def _forward(self, ip, target_instance):
|
|
def _forward(self, ip, target_instance):
|
|
|
if self._redirect_existing_rule(ip, target_instance):
|
|
if self._redirect_existing_rule(ip, target_instance):
|
|
|
return True
|
|
return True
|
|
|
- target_url = target_instance['selfLink']
|
|
|
|
|
body = {'name': 'forwarding-rule-{0}'.format(uuid.uuid4()),
|
|
body = {'name': 'forwarding-rule-{0}'.format(uuid.uuid4()),
|
|
|
'IPAddress': ip.public_ip,
|
|
'IPAddress': ip.public_ip,
|
|
|
- 'target': target_url}
|
|
|
|
|
|
|
+ 'target': target_instance['selfLink']}
|
|
|
try:
|
|
try:
|
|
|
response = (self._provider.gce_compute
|
|
response = (self._provider.gce_compute
|
|
|
.forwardingRules()
|
|
.forwardingRules()
|
|
@@ -1018,7 +1016,7 @@ class GCEInstance(BaseInstance):
|
|
|
|
|
|
|
|
def _delete_existing_rule(self, ip, target_instance):
|
|
def _delete_existing_rule(self, ip, target_instance):
|
|
|
zone = (self._provider.parse_url(target_instance['zone'])
|
|
zone = (self._provider.parse_url(target_instance['zone'])
|
|
|
- .parameters['zone'])
|
|
|
|
|
|
|
+ .parameters['zone'])
|
|
|
name = target_instance['name']
|
|
name = target_instance['name']
|
|
|
try:
|
|
try:
|
|
|
response = (self._provider.gce_compute
|
|
response = (self._provider.gce_compute
|
|
@@ -1033,7 +1031,7 @@ class GCEInstance(BaseInstance):
|
|
|
parsed_target_url = self._provider.parse_url(rule['target'])
|
|
parsed_target_url = self._provider.parse_url(rule['target'])
|
|
|
temp_zone = parsed_target_url.parameters['zone']
|
|
temp_zone = parsed_target_url.parameters['zone']
|
|
|
temp_name = parsed_target_url.parameters['targetInstance']
|
|
temp_name = parsed_target_url.parameters['targetInstance']
|
|
|
- if temp_zone != zone and temp_name != name:
|
|
|
|
|
|
|
+ if temp_zone != zone or temp_name != name:
|
|
|
cb.log.warning('"%s" is forwarded to "%s" in zone "%s"',
|
|
cb.log.warning('"%s" is forwarded to "%s" in zone "%s"',
|
|
|
ip.public_ip, temp_name, temp_zone)
|
|
ip.public_ip, temp_name, temp_zone)
|
|
|
return False
|
|
return False
|