fix: null provider_service_id when DNS failed
Change-Id: Idc1cd078961d683406b4f08eb4727169f691e569
This commit is contained in:
parent
29ee86f155
commit
110aff8d78
|
@ -98,6 +98,7 @@ class CreateServiceDNSMappingTask(task.Task):
|
|||
def execute(self, responders, retry_sleep_time, project_id, service_id):
|
||||
service_controller, dns = \
|
||||
memoized_controllers.task_controllers('poppy', 'dns')
|
||||
|
||||
dns_responder = dns.create(responders)
|
||||
for provider_name in dns_responder:
|
||||
if 'error' in dns_responder[provider_name]:
|
||||
|
@ -145,10 +146,29 @@ class CreateServiceDNSMappingTask(task.Task):
|
|||
'to failed'.format(service_id, project_id))
|
||||
provider_details_dict = {}
|
||||
result = kwargs['result']
|
||||
|
||||
service_controller, self.storage_controller = \
|
||||
memoized_controllers.task_controllers('poppy', 'storage')
|
||||
|
||||
try:
|
||||
service_obj = self.storage_controller.get(project_id,
|
||||
service_id)
|
||||
except ValueError:
|
||||
msg = 'Creating service {0} from Poppy failed. ' \
|
||||
'No such service exists'.format(service_id)
|
||||
LOG.info(msg)
|
||||
raise Exception(msg)
|
||||
|
||||
for responder in responders:
|
||||
for provider_name in responder:
|
||||
provider_service_id = (
|
||||
service_controller._driver.
|
||||
providers[provider_name.lower()].obj.
|
||||
service_controller.
|
||||
get_provider_service_id(service_obj))
|
||||
provider_details_dict[provider_name] = (
|
||||
provider_details.ProviderDetail(
|
||||
provider_service_id=provider_service_id,
|
||||
error_info=result.traceback_str,
|
||||
status='failed',
|
||||
error_message='Failed after '
|
||||
|
|
|
@ -113,6 +113,7 @@ class UpdateServiceDNSMappingTask(task.Task):
|
|||
return dns_responder
|
||||
|
||||
def revert(self, responders, retry_sleep_time,
|
||||
service_old, service_obj,
|
||||
project_id, service_id, **kwargs):
|
||||
if self.name in kwargs['flow_failures'].keys():
|
||||
retries = conf[DNS_GROUP].retries
|
||||
|
@ -133,10 +134,22 @@ class UpdateServiceDNSMappingTask(task.Task):
|
|||
'to failed'.format(service_id, project_id))
|
||||
provider_details_dict = {}
|
||||
result = kwargs['result']
|
||||
|
||||
service_controller, self.storage_controller = \
|
||||
memoized_controllers.task_controllers('poppy', 'storage')
|
||||
service_obj_json = json.loads(service_obj)
|
||||
service_obj = service.load_from_json(service_obj_json)
|
||||
|
||||
for responder in responders:
|
||||
for provider_name in responder:
|
||||
provider_service_id = (
|
||||
service_controller._driver.
|
||||
providers[provider_name.lower()].obj.
|
||||
service_controller.
|
||||
get_provider_service_id(service_obj))
|
||||
provider_details_dict[provider_name] = (
|
||||
provider_details.ProviderDetail(
|
||||
provider_service_id=provider_service_id,
|
||||
error_info=result.traceback_str,
|
||||
status='failed',
|
||||
error_message='Failed after '
|
||||
|
|
|
@ -993,3 +993,12 @@ class ServiceController(base.ServiceBase):
|
|||
datetime.datetime.today().weekday() % len(self.san_cert_cnames))
|
||||
|
||||
return self.san_cert_cnames[find_idx]
|
||||
|
||||
def get_provider_service_id(self, service_obj):
|
||||
id_list = []
|
||||
for domain in service_obj.domains:
|
||||
dp_obj = {'policy_name': domain.domain,
|
||||
'protocol': domain.protocol,
|
||||
'certificate': domain.certificate}
|
||||
id_list.append(dp_obj)
|
||||
return json.dumps(id_list)
|
||||
|
|
|
@ -76,6 +76,15 @@ class ServicesControllerBase(controller.ProviderControllerBase):
|
|||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_provider_service_id(self, service_obj):
|
||||
"""Get the provider side service id for the service object.
|
||||
|
||||
:param service_obj
|
||||
:raises NotImplementedError
|
||||
"""
|
||||
raise NotImplementedError
|
||||
|
||||
def _map_service_name(self, service_name):
|
||||
"""Map poppy service name to provider's specific service name.
|
||||
|
||||
|
|
|
@ -96,6 +96,9 @@ class ServiceController(base.ServiceBase):
|
|||
except Exception as e:
|
||||
return self.responder.failed(str(e))
|
||||
|
||||
def get_provider_service_id(self, service_obj):
|
||||
return service_obj.name
|
||||
|
||||
@decorators.lazy_property(write=False)
|
||||
def current_customer(self):
|
||||
# TODO(tonytan4ever/obulpathi): Implement cloudfront's current_customer
|
||||
|
|
|
@ -245,3 +245,6 @@ class ServiceController(base.ServiceBase):
|
|||
@decorators.lazy_property(write=False)
|
||||
def current_customer(self):
|
||||
return self.client.get_current_customer()
|
||||
|
||||
def get_provider_service_id(self, service_obj):
|
||||
return service_obj.service_id
|
||||
|
|
|
@ -134,6 +134,9 @@ class ServiceController(base.ServiceBase):
|
|||
else:
|
||||
return hashlib.sha1(service_name.encode("utf-8")).hexdigest()[:30]
|
||||
|
||||
def get_provider_service_id(self, service_obj):
|
||||
return self._map_service_name(service_obj.name)
|
||||
|
||||
@decorators.lazy_property(write=False)
|
||||
def current_customer(self):
|
||||
# This returns the current customer account info
|
||||
|
|
|
@ -50,6 +50,9 @@ class ServiceController(base.ServiceBase):
|
|||
def get(self, service_name):
|
||||
return self.responder.get([], [], [])
|
||||
|
||||
def get_provider_service_id(self, service_obj):
|
||||
return []
|
||||
|
||||
@decorators.lazy_property(write=False)
|
||||
def current_customer(self):
|
||||
'''return current_customer for Mock. We can return a None.'''
|
||||
|
|
|
@ -412,6 +412,14 @@ class TestServices(base.TestCase):
|
|||
|
||||
self.assertTrue(origin_rule_valid)
|
||||
|
||||
def get_provider_service_id(self):
|
||||
controller = services.ServiceController(self.driver)
|
||||
provider_service_id = controller.get(self.service_obj)
|
||||
self.assertTrue(provider_service_id is not None)
|
||||
self.assertTrue(isinstance(provider_service_id, str))
|
||||
for domain_obj in self.service_obj.domains:
|
||||
self.assertTrue(domain_obj.domain in provider_service_id)
|
||||
|
||||
def test_process_restriction_rules(self):
|
||||
controller = services.ServiceController(self.driver)
|
||||
rule_entry = rule.Rule('index',
|
||||
|
|
Loading…
Reference in New Issue