Merge ~xavpaice/charm-openstack-service-checks/+git/charm-openstack-service-checks:keystonev3 into ~canonical-bootstack/charm-openstack-service-checks:master

Proposed by Xav Paice
Status: Merged
Approved by: James Hebden
Approved revision: e079a5391d526f296da5224a958b5de316de1a59
Merge reported by: Xav Paice
Merged at revision: e079a5391d526f296da5224a958b5de316de1a59
Proposed branch: ~xavpaice/charm-openstack-service-checks/+git/charm-openstack-service-checks:keystonev3
Merge into: ~canonical-bootstack/charm-openstack-service-checks:master
Diff against target: 107 lines (+47/-21)
2 files modified
reactive/service_checks.py (+40/-20)
templates/nagios.novarc (+7/-1)
Reviewer Review Type Date Requested Status
James Hebden (community) Approve
Review via email: mp+331394@code.launchpad.net
To post a comment you must log in.
Revision history for this message
James Hebden (ec0) wrote :

As discussed my only concern was the scoping the token to a domain and/or project may produce different results to the existing v2 code, which may have required additional logic to have the checks operate across multiple projects and domains.

Given this can be configured (and has been tested as such) to use the admin domain/project and this behaviour is not seen, LGTM.

Revision history for this message
James Hebden (ec0) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/reactive/service_checks.py b/reactive/service_checks.py
index 4fbf5bf..50d745e 100644
--- a/reactive/service_checks.py
+++ b/reactive/service_checks.py
@@ -57,25 +57,34 @@ def save_creds(keystone):
5757
58def get_creds(keystone):58def get_creds(keystone):
5959
60 if keystone.api_version() == 2:60 if keystone.api_version() == '3':
61 api_url = "v2.0"
62 elif keystone.api_version() == 3:
63 api_url = "v3"61 api_url = "v3"
62 try:
63 domain = keystone.domain()
64 except AttributeError:
65 domain = 'service_domain'
66 creds = {
67 'credentials_username': keystone.credentials_username(),
68 'credentials_password': keystone.credentials_password(),
69 'credentials_project': keystone.credentials_project(),
70 'auth_version': '3',
71 'region': keystone.region(),
72 'credentials_user_domain': domain,
73 'credentials_project_domain': domain
74 }
64 else:75 else:
65 api_url = "v2.0"76 api_url = "v2.0"
77 creds = {
78 'credentials_username': keystone.credentials_username(),
79 'credentials_password': keystone.credentials_password(),
80 'credentials_project': keystone.credentials_project(),
81 'region': keystone.region(),
82 }
6683
67 auth_url = "%s://%s:%s/%s" % (keystone.auth_protocol(),84 auth_url = "%s://%s:%s/%s" % (keystone.auth_protocol(),
68 keystone.auth_host(), keystone.auth_port(),85 keystone.auth_host(), keystone.auth_port(),
69 api_url)86 api_url)
7087 creds['auth_url'] = auth_url
71 creds = {
72 'credentials_username': keystone.credentials_username(),
73 'credentials_password': keystone.credentials_password(),
74 'credentials_project': keystone.credentials_project(),
75 'region': keystone.region(),
76 'auth_url': auth_url,
77 }
78
79 return creds88 return creds
8089
8190
@@ -84,14 +93,25 @@ def get_creds(keystone):
84def get_credentials():93def get_credentials():
85 keystone_creds = config_flags_parser(config.get('os-credentials'))94 keystone_creds = config_flags_parser(config.get('os-credentials'))
86 if keystone_creds:95 if keystone_creds:
87 creds = {96 if '/v3' in keystone_creds['auth_url']:
88 'credentials_username': keystone_creds['username'],97 creds = {
89 'credentials_password': keystone_creds['password'],98 'credentials_username': keystone_creds['username'],
90 'credentials_project': keystone_creds['credentials_project'],99 'credentials_password': keystone_creds['password'],
91 'region': keystone_creds['region_name'],100 'credentials_project': keystone_creds['credentials_project'],
92 'auth_url': keystone_creds['auth_url'],101 'region': keystone_creds['region_name'],
93 }102 'auth_url': keystone_creds['auth_url'],
94103 'auth_version': '3',
104 'credentials_user_domain': keystone_creds['domain'],
105 'credentials_project_domain': keystone_creds['domain'],
106 }
107 else:
108 creds = {
109 'credentials_username': keystone_creds['username'],
110 'credentials_password': keystone_creds['password'],
111 'credentials_project': keystone_creds['credentials_project'],
112 'region': keystone_creds['region_name'],
113 'auth_url': keystone_creds['auth_url'],
114 }
95 else:115 else:
96 kv = unitdata.kv()116 kv = unitdata.kv()
97 creds = kv.get('keystone-relation-creds')117 creds = kv.get('keystone-relation-creds')
diff --git a/templates/nagios.novarc b/templates/nagios.novarc
index 982f914..e4c7e68 100644
--- a/templates/nagios.novarc
+++ b/templates/nagios.novarc
@@ -1,5 +1,6 @@
1export OS_USERNAME={{ credentials_username }}1export OS_USERNAME={{ credentials_username }}
2export OS_TENANT_NAME={{ credentials_project }}2export OS_TENANT_NAME={{ credentials_project }}
3export OS_PROJECT_NAME={{ credentials_project }}
3export OS_PASSWORD={{ credentials_password }}4export OS_PASSWORD={{ credentials_password }}
4export OS_REGION_NAME={{ region }}5export OS_REGION_NAME={{ region }}
5export OS_AUTH_URL={{ auth_url }}6export OS_AUTH_URL={{ auth_url }}
@@ -9,4 +10,9 @@ export REQUESTS_CA_BUNDLE=$OS_CACERT
9{%- endif %}10{%- endif %}
10# Allow novaclient libs to save to ~/.novaclient11# Allow novaclient libs to save to ~/.novaclient
11export HOME=${SNAP_COMMON}12export HOME=${SNAP_COMMON}
1213{%- if auth_version %}
14export OS_IDENTITY_API_VERSION={{ auth_version }}
15export OS_AUTH_VERSION={{ auth_version }}
16export OS_USER_DOMAIN_NAME={{ credentials_user_domain }}
17export OS_PROJECT_DOMAIN_NAME={{ credentials_project_domain }}
18{%- endif %}

Subscribers

People subscribed via source and target branches