Collapse available and available.auth
Most reactive charms react on identity-service.available but the current interface distinguishes between available and available.auth. It is somewhat assumed by most charms that identity-service.available is equivalent to identity-service.available.auth, as what charms are concerned with is the ability to authenticate against the cloud. Collapse the difference between identity-service.available and identity-service.available.auth. Continue to set identity-service.available.auth for any charms that may rely on it. Change-Id: I494feea5f3ef8706140ce712b1e025e52b0dfbd1 Closes-Bug: #1818113
This commit is contained in:
parent
7902a74aac
commit
a48a1e826a
12
requires.py
12
requires.py
|
@ -44,6 +44,7 @@ class KeystoneRequires(RelationBase):
|
|||
def update_state(self):
|
||||
if self.base_data_complete():
|
||||
self.set_state('{relation_name}.available')
|
||||
self.set_state('{relation_name}.available.auth')
|
||||
if self.ssl_data_complete():
|
||||
self.set_state('{relation_name}.available.ssl')
|
||||
else:
|
||||
|
@ -52,10 +53,6 @@ class KeystoneRequires(RelationBase):
|
|||
self.set_state('{relation_name}.available.ssl_legacy')
|
||||
else:
|
||||
self.remove_state('{relation_name}.available.ssl_legacy')
|
||||
if self.auth_data_complete():
|
||||
self.set_state('{relation_name}.available.auth')
|
||||
else:
|
||||
self.remove_state('{relation_name}.available.auth')
|
||||
else:
|
||||
self.remove_state('{relation_name}.available')
|
||||
self.remove_state('{relation_name}.available.ssl')
|
||||
|
@ -79,13 +76,6 @@ class KeystoneRequires(RelationBase):
|
|||
'auth_host': self.auth_host(),
|
||||
'auth_protocol': self.auth_protocol(),
|
||||
'auth_port': self.auth_port(),
|
||||
}
|
||||
if all(data.values()):
|
||||
return True
|
||||
return False
|
||||
|
||||
def auth_data_complete(self):
|
||||
data = {
|
||||
'service_tenant': self.service_tenant(),
|
||||
'service_username': self.service_username(),
|
||||
'service_password': self.service_password(),
|
||||
|
|
5
tox.ini
5
tox.ini
|
@ -33,6 +33,11 @@ basepython = python3.8
|
|||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands = stestr run {posargs}
|
||||
|
||||
[testenv:py3]
|
||||
basepython = python3
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands = stestr run {posargs}
|
||||
|
||||
[testenv:pep8]
|
||||
basepython = python3
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
|
|
|
@ -115,18 +115,13 @@ class TestKeystoneRequires(unittest.TestCase):
|
|||
self.patch_kr('auth_host', '5')
|
||||
self.patch_kr('auth_protocol', '6')
|
||||
self.patch_kr('auth_port', '7')
|
||||
assert self.kr.base_data_complete() is True
|
||||
self.auth_port.return_value = None
|
||||
assert self.kr.base_data_complete() is False
|
||||
|
||||
def test_auth_data_complete(self):
|
||||
self.patch_kr('service_tenant', '1')
|
||||
self.patch_kr('service_username', '2')
|
||||
self.patch_kr('service_password', '3')
|
||||
self.patch_kr('service_tenant_id', '4')
|
||||
assert self.kr.auth_data_complete() is True
|
||||
assert self.kr.base_data_complete() is True
|
||||
self.service_tenant.return_value = None
|
||||
assert self.kr.auth_data_complete() is False
|
||||
assert self.kr.base_data_complete() is False
|
||||
|
||||
def test_ssl_data_complete(self):
|
||||
self.patch_kr('ssl_cert_admin', '1')
|
||||
|
@ -158,7 +153,6 @@ class TestKeystoneRequires(unittest.TestCase):
|
|||
self.patch_kr('base_data_complete', False)
|
||||
self.patch_kr('ssl_data_complete', False)
|
||||
self.patch_kr('ssl_data_complete_legacy', False)
|
||||
self.patch_kr('auth_data_complete', False)
|
||||
self.patch_kr('set_state')
|
||||
self.patch_kr('remove_state')
|
||||
# test when not all base data is available.
|
||||
|
@ -173,11 +167,11 @@ class TestKeystoneRequires(unittest.TestCase):
|
|||
# test when just the base data is available.
|
||||
self.base_data_complete.return_value = True
|
||||
self.kr.update_state()
|
||||
self.set_state.assert_called_once_with('{relation_name}.available')
|
||||
self.set_state.assert_any_call('{relation_name}.available')
|
||||
self.set_state.assert_any_call('{relation_name}.available.auth')
|
||||
self.remove_state.assert_any_call('{relation_name}.available.ssl')
|
||||
self.remove_state.assert_any_call(
|
||||
'{relation_name}.available.ssl_legacy')
|
||||
self.remove_state.assert_any_call('{relation_name}.available.auth')
|
||||
self.set_state.reset_mock()
|
||||
self.remove_state.reset_mock()
|
||||
# test ssl_data_complete
|
||||
|
@ -187,7 +181,6 @@ class TestKeystoneRequires(unittest.TestCase):
|
|||
self.set_state.assert_any_call('{relation_name}.available.ssl')
|
||||
self.remove_state.assert_any_call(
|
||||
'{relation_name}.available.ssl_legacy')
|
||||
self.remove_state.assert_any_call('{relation_name}.available.auth')
|
||||
self.set_state.reset_mock()
|
||||
self.remove_state.reset_mock()
|
||||
# test ssl_data_complete_legacy
|
||||
|
@ -197,11 +190,8 @@ class TestKeystoneRequires(unittest.TestCase):
|
|||
self.set_state.assert_any_call('{relation_name}.available.ssl')
|
||||
self.set_state.assert_any_call(
|
||||
'{relation_name}.available.ssl_legacy')
|
||||
self.remove_state.assert_any_call('{relation_name}.available.auth')
|
||||
self.set_state.reset_mock()
|
||||
self.remove_state.reset_mock()
|
||||
# test auth_data_complete()
|
||||
self.auth_data_complete.return_value = True
|
||||
self.kr.update_state()
|
||||
self.set_state.assert_any_call('{relation_name}.available')
|
||||
self.set_state.assert_any_call('{relation_name}.available.ssl')
|
||||
|
|
Loading…
Reference in New Issue