fix: deserialize details before get cert status
Change-Id: Ia9b897d93b4af05fd131d0d87c36838587f109e9
This commit is contained in:
parent
e6d866d79e
commit
0a67d6f7cc
@ -202,7 +202,7 @@ class ServicesController(base.ServicesBase):
|
||||
yield '{0}{1}.{2}'.format(shard_prefix, shard_id, suffix)
|
||||
|
||||
def generate_shared_ssl_domain_suffix(self):
|
||||
"""Rackespace DNS scheme to generate a shared ssl domain suffix,
|
||||
"""Rackspace DNS scheme to generate a shared ssl domain suffix,
|
||||
|
||||
to be used with manager for shared ssl feature
|
||||
|
||||
|
@ -34,8 +34,6 @@ class ProviderWrapper(object):
|
||||
|
||||
:param ext
|
||||
:param provider_details
|
||||
:param service_old
|
||||
:param service_updates
|
||||
:param service_obj
|
||||
"""
|
||||
|
||||
|
@ -418,7 +418,7 @@ class DefaultServicesController(base.ServicesController):
|
||||
delattr(self, store)
|
||||
|
||||
# check if the service domain names already exist
|
||||
# existing ones does not count!
|
||||
# existing shared domains do not count!
|
||||
for d in service_new.domains:
|
||||
if self.storage_controller.domain_exists_elsewhere(
|
||||
d.domain,
|
||||
|
@ -108,8 +108,8 @@ class SSLCertificate(common.DictSerializableModel):
|
||||
if first_provider_cert_details is None:
|
||||
return "create_in_progress"
|
||||
else:
|
||||
result = first_provider_cert_details.get('status',
|
||||
"create_in_progress")
|
||||
result = first_provider_cert_details.get(
|
||||
'status', "create_in_progress")
|
||||
if result not in VALID_STATUS_IN_CERT_DETAIL:
|
||||
raise ValueError(
|
||||
u'Status in cert_details: {0} not in valid options: {1}'.
|
||||
|
@ -115,10 +115,19 @@ class CertificatesController(base.CertificatesController):
|
||||
CQL_CREATE_CERT,
|
||||
consistency_level=self._driver.consistency_level)
|
||||
self.session.execute(stmt, args)
|
||||
self.insert_cert_status(
|
||||
cert_obj.domain_name,
|
||||
cert_obj.get_cert_status()
|
||||
|
||||
try:
|
||||
provider_status = json.loads(
|
||||
list(cert_obj.cert_details.values())[0]
|
||||
)
|
||||
cert_status = provider_status['extra_info']['status']
|
||||
except (IndexError, IndexError, ValueError) as e:
|
||||
LOG.error("Certificate details in inconsistent "
|
||||
"state: {0}".format(cert_obj.cert_details))
|
||||
LOG.error(e)
|
||||
else:
|
||||
# insert/update for cassandra
|
||||
self.insert_cert_status(cert_obj.domain_name, cert_status)
|
||||
|
||||
def delete_certificate(self, project_id, domain_name, cert_type):
|
||||
args = {
|
||||
@ -170,8 +179,7 @@ class CertificatesController(base.CertificatesController):
|
||||
provider_status = json.loads(list(cert_details.values())[0])
|
||||
cert_status = provider_status['extra_info']['status']
|
||||
except (IndexError, IndexError, ValueError) as e:
|
||||
LOG.error("Certificate details "
|
||||
"in inconsistent "
|
||||
LOG.error("Certificate details in inconsistent "
|
||||
"state: {0}".format(cert_details))
|
||||
LOG.error(e)
|
||||
else:
|
||||
|
@ -75,8 +75,77 @@ class TestSSLCertificate(base.TestCase):
|
||||
}
|
||||
ssl_cert.cert_details = cert_details
|
||||
self.assertEqual(ssl_cert.get_cert_status(), 'deployed')
|
||||
# check san edge on cert_type custom
|
||||
self.assertEqual(ssl_cert.get_san_edge_name(), None)
|
||||
cert_details['mock']['extra_info'] = {
|
||||
'status': 'whatever'
|
||||
}
|
||||
|
||||
self.assertRaises(ValueError, ssl_cert.get_cert_status)
|
||||
|
||||
def test_get_cert_status_extra_info_none(self):
|
||||
project_id = '12345'
|
||||
cert_details = {
|
||||
'mock': {
|
||||
'extra_info': None
|
||||
}
|
||||
}
|
||||
flavor_id = 'myflavor'
|
||||
domain_name = 'www.mydomain.com'
|
||||
cert_type = 'san'
|
||||
|
||||
ssl_cert = ssl_certificate.SSLCertificate(project_id=project_id,
|
||||
flavor_id=flavor_id,
|
||||
domain_name=domain_name,
|
||||
cert_type=cert_type,
|
||||
cert_details=cert_details)
|
||||
|
||||
self.assertEqual(ssl_cert.get_cert_status(), 'create_in_progress')
|
||||
self.assertEqual(ssl_cert.get_san_edge_name(), None)
|
||||
|
||||
def test_cert_details_is_none(self):
|
||||
project_id = '12345'
|
||||
cert_details = None
|
||||
flavor_id = 'myflavor'
|
||||
domain_name = 'www.mydomain.com'
|
||||
cert_type = 'san'
|
||||
|
||||
ssl_cert = ssl_certificate.SSLCertificate(project_id=project_id,
|
||||
flavor_id=flavor_id,
|
||||
domain_name=domain_name,
|
||||
cert_type=cert_type,
|
||||
cert_details=cert_details)
|
||||
|
||||
self.assertEqual(ssl_cert.get_cert_status(), 'create_in_progress')
|
||||
self.assertEqual(ssl_cert.get_san_edge_name(), None)
|
||||
|
||||
def test_get_san_edge_positive(self):
|
||||
project_id = '12345'
|
||||
cert_details = {
|
||||
'mock': {
|
||||
'extra_info': {
|
||||
'san cert': 'secureX.sanX.content.com'
|
||||
}
|
||||
}
|
||||
}
|
||||
flavor_id = 'flavor'
|
||||
domain_name = 'www.domain.com'
|
||||
cert_type = 'san'
|
||||
|
||||
ssl_cert = ssl_certificate.SSLCertificate(project_id=project_id,
|
||||
flavor_id=flavor_id,
|
||||
domain_name=domain_name,
|
||||
cert_type=cert_type,
|
||||
cert_details=cert_details)
|
||||
self.assertEqual(
|
||||
ssl_cert.get_san_edge_name(), 'secureX.sanX.content.com')
|
||||
|
||||
def test_init_from_dict_positive(self):
|
||||
ssl_cert = ssl_certificate.SSLCertificate.init_from_dict(
|
||||
{'cert_type': 'san'})
|
||||
|
||||
self.assertIsNone(ssl_cert.flavor_id)
|
||||
self.assertIsNone(ssl_cert.domain_name)
|
||||
self.assertEqual('san', ssl_cert.cert_type)
|
||||
self.assertEqual({}, ssl_cert.cert_details)
|
||||
self.assertIsNone(ssl_cert.project_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user