Support secondary services

The data now allows marking a service as secondary to support
placement/compute in nova. Support that in by_project.

Adds placement to the built-in data so that we can see the testing of
it. We should not approve this patch until approving the Add placement
service patch.

Change-Id: I01ad2934bdcb9346f4af88520f572d9b4f852b5d
This commit is contained in:
Monty Taylor 2017-08-12 13:17:49 -05:00 committed by Eric Fried
parent 7980f17df9
commit 3e8e86bdb5
3 changed files with 103 additions and 77 deletions

View File

@ -1,13 +1,9 @@
{
"forward": {
"message": [
"messaging"
],
"root-cause-analysis": [
"rca"
],
"application-deployment": [
"application_deployment"
"block-storage": [
"volumev3",
"volumev2",
"volume"
],
"multi-region-network-automation": [
"tricircle"
@ -15,41 +11,45 @@
"container-infrastructure-management": [
"container-infrastructure"
],
"meter": [
"metering"
"workflow": [
"workflowv2"
],
"shared-file-system": [
"sharev2",
"share"
],
"operator-policy": [
"policy"
],
"application-container": [
"container"
],
"block-storage": [
"volumev3",
"volumev2",
"volume"
],
"alarm": [
"alarming"
],
"meter": [
"metering"
],
"root-cause-analysis": [
"rca"
],
"monitoring-logging": [
"monitoring-log-api"
],
"workflow": [
"workflowv2"
],
"event": [
"events"
"resource-optimization": [
"infra-optim"
],
"resource-cluster": [
"clustering"
],
"resource-optimization": [
"infra-optim"
"application-container": [
"container"
],
"message": [
"messaging"
],
"event": [
"events"
],
"operator-policy": [
"policy"
],
"application-deployment": [
"application_deployment"
]
},
"services": [
@ -79,11 +79,11 @@
"api_reference": "https://developer.openstack.org/api-ref/object-storage/"
},
{
"service_type": "resource-cluster",
"project": "senlin",
"aliases": [
"clustering"
],
"project": "senlin",
"service_type": "resource-cluster",
"api_reference": "https://developer.openstack.org/api-ref/clustering/"
},
{
@ -112,19 +112,19 @@
"api_reference": "https://developer.openstack.org/api-ref/ec2-api/"
},
{
"service_type": "resource-optimization",
"project": "watcher",
"aliases": [
"infra-optim"
],
"project": "watcher",
"service_type": "resource-optimization",
"api_reference": "https://docs.openstack.org/developer/watcher/webapi/v1.html"
},
{
"service_type": "message",
"project": "zaqar",
"aliases": [
"messaging"
],
"project": "zaqar",
"service_type": "message",
"api_reference": "https://developer.openstack.org/api-ref/messaging/"
},
{
@ -133,11 +133,11 @@
"api_reference": "https://developer.openstack.org/api-ref/application-catalog/"
},
{
"service_type": "container-infrastructure-management",
"project": "magnum",
"aliases": [
"container-infrastructure"
],
"project": "magnum",
"service_type": "container-infrastructure-management",
"api_reference": "https://developer.openstack.org/api-ref/container-infrastructure-management/"
},
{
@ -151,11 +151,11 @@
"api_reference": "https://developer.openstack.org/api-ref/dns/"
},
{
"service_type": "workflow",
"project": "mistral",
"aliases": [
"workflowv2"
],
"project": "mistral",
"service_type": "workflow",
"api_reference": "https://docs.openstack.org/developer/mistral/developer/webapi/index.html"
},
{
@ -164,20 +164,20 @@
"api_reference": "https://docs.openstack.org/developer/cloudkitty/webapi/root.html"
},
{
"service_type": "operator-policy",
"project": "congress",
"aliases": [
"policy"
],
"project": "congress",
"service_type": "operator-policy",
"api_reference": "https://docs.openstack.org/developer/congress/api.html"
},
{
"service_type": "shared-file-system",
"project": "manila",
"aliases": [
"sharev2",
"share"
],
"project": "manila",
"service_type": "shared-file-system",
"api_reference": "https://developer.openstack.org/api-ref/shared-file-systems/"
},
{
@ -191,53 +191,53 @@
"api_reference": "https://developer.openstack.org/api-ref/orchestration/"
},
{
"service_type": "block-storage",
"project": "cinder",
"aliases": [
"volumev3",
"volumev2",
"volume"
],
"project": "cinder",
"service_type": "block-storage",
"api_reference": "https://developer.openstack.org/api-ref/block-storage/"
},
{
"service_type": "alarm",
"project": "aodh",
"aliases": [
"alarming"
],
"project": "aodh",
"service_type": "alarm",
"api_reference": "https://docs.openstack.org/developer/aodh/webapi/index.html"
},
{
"service_type": "meter",
"project": "ceilometer",
"aliases": [
"metering"
],
"project": "ceilometer",
"service_type": "meter",
"api_reference": "https://docs.openstack.org/developer/ceilometer/webapi/index.html"
},
{
"service_type": "event",
"project": "panko",
"aliases": [
"events"
],
"project": "panko",
"service_type": "event",
"api_reference": "https://docs.openstack.org/developer/panko/webapi/index.html"
},
{
"service_type": "application-deployment",
"project": "solum",
"aliases": [
"application_deployment"
],
"project": "solum",
"service_type": "application-deployment",
"api_reference": "https://docs.openstack.org/developer/solum/develop_applications/webapi/index.html"
},
{
"service_type": "multi-region-network-automation",
"project": "tricircle",
"aliases": [
"tricircle"
],
"project": "tricircle",
"service_type": "multi-region-network-automation",
"api_reference": "https://docs.openstack.org/developer/tricircle/api_v1.html"
},
{
@ -246,19 +246,19 @@
"api_reference": "https://developer.openstack.org/api-ref/database/"
},
{
"service_type": "application-container",
"project": "zun",
"aliases": [
"container"
],
"project": "zun",
"service_type": "application-container",
"api_reference": "https://git.openstack.org/cgit/openstack/zun/tree/api-ref/source"
},
{
"service_type": "root-cause-analysis",
"project": "vitrage",
"aliases": [
"rca"
],
"project": "vitrage",
"service_type": "root-cause-analysis",
"api_reference": "https://docs.openstack.org/developer/vitrage/vitrage-api.html"
},
{
@ -267,9 +267,9 @@
"api_reference": "https://developer.openstack.org/api-ref/nfv-orchestration/"
},
{
"api_reference_project": "neutron-lib",
"project": "neutron",
"service_type": "network",
"api_reference_project": "neutron-lib",
"api_reference": "https://developer.openstack.org/api-ref/networking/"
},
{
@ -278,11 +278,11 @@
"api_reference": "https://developer.openstack.org/api-ref/backup/"
},
{
"service_type": "monitoring-logging",
"project": "monasca-log-api",
"aliases": [
"monitoring-log-api"
],
"project": "monasca-log-api",
"service_type": "monitoring-logging",
"api_reference": "https://developer.openstack.org/api-ref/monitoring-log-api/"
},
{
@ -294,29 +294,35 @@
"project": "monasca-events-api",
"service_type": "monitoring-events",
"api_reference": "https://developer.openstack.org/api-ref/monitoring-events-api/"
},
{
"project": "nova",
"service_type": "placement",
"api_reference": "https://developer.openstack.org/api-ref/placement/",
"secondary": true
}
],
"version": "2017-08-13T15:16:51.109325",
"reverse": {
"rca": "root-cause-analysis",
"container-infrastructure": "container-infrastructure-management",
"volumev3": "block-storage",
"workflowv2": "workflow",
"policy": "operator-policy",
"monitoring-log-api": "monitoring-logging",
"alarming": "alarm",
"tricircle": "multi-region-network-automation",
"clustering": "resource-cluster",
"messaging": "message",
"sharev2": "shared-file-system",
"volume": "block-storage",
"share": "shared-file-system",
"events": "event",
"application_deployment": "application-deployment",
"metering": "meter",
"volumev2": "block-storage",
"alarming": "alarm",
"policy": "operator-policy",
"application_deployment": "application-deployment",
"container-infrastructure": "container-infrastructure-management",
"sharev2": "shared-file-system",
"infra-optim": "resource-optimization",
"clustering": "resource-cluster",
"volumev2": "block-storage",
"volume": "block-storage",
"tricircle": "multi-region-network-automation",
"workflowv2": "workflow",
"monitoring-log-api": "monitoring-logging",
"messaging": "message",
"volumev3": "block-storage",
"container": "application-container"
},
"version": "2017-08-13T15:10:21.840336",
"sha": "23ee356235096fc990a53e5cf3ce947f560358dc"
"sha": "3aa676c9c3132f8a08357afbde5e0255f68df843"
}

View File

@ -66,6 +66,9 @@ class ServiceTypes(object):
by_project = {}
for s in self._service_types_data['services']:
# Skip secondary projects
if s.get('secondary', False):
continue
for key in ['project', 'api_reference_project']:
name = s.get(key)
if name:

View File

@ -50,18 +50,21 @@ class ServiceDataMixin(object):
service_type='compute', official='compute', aliases=[],
all_types=['compute'],
api_reference='compute', api_reference_project=None,
is_secondary=False,
is_known=True, is_alias=False, is_official=True, project='nova')),
('volumev2', dict(
service_type='volumev2', official='block-storage', aliases=[],
all_types=['block-storage', 'volumev3', 'volumev2', 'volume'],
api_reference='block-storage', api_reference_project=None,
is_known=True, is_alias=True, is_official=False,
is_secondary=False,
project='cinder')),
('volumev3', dict(
service_type='volumev3', official='block-storage', aliases=[],
all_types=['block-storage', 'volumev3', 'volumev2', 'volume'],
api_reference='block-storage', api_reference_project=None,
is_known=True, is_alias=True, is_official=False,
is_secondary=False,
project='cinder')),
('block-storage', dict(
service_type='block-storage', official='block-storage',
@ -69,19 +72,28 @@ class ServiceDataMixin(object):
api_reference='block-storage', api_reference_project=None,
aliases=['volumev3', 'volumev2', 'volume'],
is_known=True, is_alias=False, is_official=True,
is_secondary=False,
project='cinder')),
('network', dict(
service_type='network', official='network', aliases=[],
all_types=['network'],
api_reference='networking', api_reference_project='neutron-lib',
is_known=True, is_alias=False, is_official=True,
is_secondary=False,
project='neutron')),
('placement', dict(
service_type='placement', official='placement', aliases=[],
all_types=['placement'],
api_reference='placement', api_reference_project=None,
is_known=True, is_alias=False, is_official=True, is_secondary=True,
project='nova')),
('missing', dict(
service_type='missing', official=None,
aliases=[],
all_types=['missing'],
api_reference=None, api_reference_project=None,
is_known=False, is_alias=False, is_official=False,
is_secondary=False,
project=None)),
]
@ -164,7 +176,12 @@ class ServiceDataMixin(object):
self.project)
def test_get_service_data_for_project(self):
if not self.project:
if self.is_secondary:
self.assertNotIn(
self.service_type,
self.service_types._service_types_data['by_project'].values())
return
elif not self.project:
self.skipTest("Empty project is invalid but tested elsewhere.")
return