Generate standard api_reference

The api_reference for a service_type should usually be
'https://developer.openstack.org/api-ref/{service_type}/'.

With this change set, the source yaml may omit the api_reference field,
whereupon it will be generated according to the above format.

(At this time it is recommended, though not enforced, that the
api_reference field *should* be omitted if it conforms to the above
format.)

Change-Id: I860c1373c72765d4abad1ce8744c8174e5c64de0
This commit is contained in:
Eric Fried 2017-08-21 09:14:39 -05:00
parent c1bd90f8f7
commit 5a9eab7684
3 changed files with 8 additions and 29 deletions

View File

@ -33,8 +33,8 @@ api_reference (required)
------------------------ ------------------------
A published API reference document for the API identified by this A published API reference document for the API identified by this
service type. By default this should be service type. If not specified in the source yaml file, it will be generated
`http://developer.openstack.org/api-ref/{service-type}/`. as `http://developer.openstack.org/api-ref/{service-type}/`.
api_reference_project (optional) api_reference_project (optional)
-------------------------------- --------------------------------

View File

@ -1,39 +1,29 @@
services: services:
- service_type: identity - service_type: identity
project: keystone project: keystone
api_reference: https://developer.openstack.org/api-ref/identity/
- service_type: compute - service_type: compute
project: nova project: nova
api_reference: https://developer.openstack.org/api-ref/compute/
- service_type: image - service_type: image
project: glance project: glance
api_reference: https://developer.openstack.org/api-ref/image/
- service_type: load-balancer - service_type: load-balancer
project: octavia project: octavia
api_reference: https://developer.openstack.org/api-ref/load-balancer/
- service_type: object-store - service_type: object-store
project: swift project: swift
api_reference: https://developer.openstack.org/api-ref/object-storage/
- service_type: clustering - service_type: clustering
project: senlin project: senlin
api_reference: https://developer.openstack.org/api-ref/clustering/
aliases: aliases:
- resource-cluster - resource-cluster
- service_type: data-processing - service_type: data-processing
project: sahara project: sahara
api_reference: https://developer.openstack.org/api-ref/data-processing/
- service_type: baremetal - service_type: baremetal
project: ironic project: ironic
api_reference: https://developer.openstack.org/api-ref/baremetal/
- service_type: baremetal-introspection - service_type: baremetal-introspection
project: ironic-inspector project: ironic-inspector
api_reference: https://docs.openstack.org/developer/ironic-inspector/http-api.html api_reference: https://docs.openstack.org/developer/ironic-inspector/http-api.html
- service_type: key-manager - service_type: key-manager
project: barbican project: barbican
api_reference: https://developer.openstack.org/api-ref/key-manager/
- service_type: ec2-api - service_type: ec2-api
project: ec2-api project: ec2-api
api_reference: https://developer.openstack.org/api-ref/ec2-api/
- service_type: resource-optimization - service_type: resource-optimization
project: watcher project: watcher
api_reference: https://docs.openstack.org/developer/watcher/webapi/v1.html api_reference: https://docs.openstack.org/developer/watcher/webapi/v1.html
@ -41,23 +31,18 @@ services:
- infra-optim - infra-optim
- service_type: message - service_type: message
project: zaqar project: zaqar
api_reference: https://developer.openstack.org/api-ref/messaging/
aliases: aliases:
- messaging - messaging
- service_type: application-catalog - service_type: application-catalog
project: murano project: murano
api_reference: https://developer.openstack.org/api-ref/application-catalog/
- service_type: container-infrastructure-management - service_type: container-infrastructure-management
project: magnum project: magnum
api_reference: https://developer.openstack.org/api-ref/container-infrastructure-management/
aliases: aliases:
- container-infrastructure - container-infrastructure
- service_type: search - service_type: search
project: searchlight project: searchlight
api_reference: https://developer.openstack.org/api-ref/search/
- service_type: dns - service_type: dns
project: designate project: designate
api_reference: https://developer.openstack.org/api-ref/dns/
- service_type: workflow - service_type: workflow
project: mistral project: mistral
api_reference: https://docs.openstack.org/developer/mistral/developer/webapi/index.html api_reference: https://docs.openstack.org/developer/mistral/developer/webapi/index.html
@ -73,19 +58,15 @@ services:
- policy - policy
- service_type: shared-file-system - service_type: shared-file-system
project: manila project: manila
api_reference: https://developer.openstack.org/api-ref/shared-file-systems/
aliases: aliases:
- sharev2 - sharev2
- share - share
- service_type: data-protection-orchestration - service_type: data-protection-orchestration
project: karbor project: karbor
api_reference: https://developer.openstack.org/api-ref/data-protection-orchestration/
- service_type: orchestration - service_type: orchestration
project: heat project: heat
api_reference: https://developer.openstack.org/api-ref/orchestration/
- service_type: block-storage - service_type: block-storage
project: cinder project: cinder
api_reference: https://developer.openstack.org/api-ref/block-storage/
aliases: aliases:
- volumev3 - volumev3
- volumev2 - volumev2
@ -117,7 +98,6 @@ services:
- tricircle - tricircle
- service_type: database - service_type: database
project: trove project: trove
api_reference: https://developer.openstack.org/api-ref/database/
- service_type: application-container - service_type: application-container
project: zun project: zun
api_reference: https://git.openstack.org/cgit/openstack/zun/tree/api-ref/source api_reference: https://git.openstack.org/cgit/openstack/zun/tree/api-ref/source
@ -130,26 +110,19 @@ services:
- rca - rca
- service_type: nfv-orchestration - service_type: nfv-orchestration
project: tacker project: tacker
api_reference: https://developer.openstack.org/api-ref/nfv-orchestration/
- service_type: network - service_type: network
project: neutron project: neutron
api_reference: https://developer.openstack.org/api-ref/networking/
api_reference_project: neutron-lib api_reference_project: neutron-lib
- service_type: backup - service_type: backup
project: freezer-api project: freezer-api
api_reference: https://developer.openstack.org/api-ref/backup/
- service_type: monitoring-logging - service_type: monitoring-logging
project: monasca-log-api project: monasca-log-api
api_reference: https://developer.openstack.org/api-ref/monitoring-log-api/
aliases: aliases:
- monitoring-log-api - monitoring-log-api
- service_type: monitoring - service_type: monitoring
project: monasca-api project: monasca-api
api_reference: https://developer.openstack.org/api-ref/monitoring/
- service_type: monitoring-events - service_type: monitoring-events
project: monasca-events-api project: monasca-events-api
api_reference: https://developer.openstack.org/api-ref/monitoring-events-api/
- service_type: placement - service_type: placement
project: nova project: nova
api_reference: https://developer.openstack.org/api-ref/placement/
secondary: true secondary: true

View File

@ -38,6 +38,9 @@ import yaml
import validate import validate
API_REF_FMT = 'https://developer.openstack.org/api-ref/{service}/'
class LocalResolver(jsonschema.RefResolver): class LocalResolver(jsonschema.RefResolver):
"""Local Resolver class that uses the spec from this repo. """Local Resolver class that uses the spec from this repo.
@ -87,6 +90,9 @@ def main():
if service_type not in project_types: if service_type not in project_types:
project_types.append(service_type) project_types.append(service_type)
mapping['service_types_by_project'][name] = project_types mapping['service_types_by_project'][name] = project_types
# Generate api_reference if not specified
if not service.get('api_reference'):
service['api_reference'] = API_REF_FMT.format(service=service_type)
schema = json.load(open('published-schema.json', 'r')) schema = json.load(open('published-schema.json', 'r'))
resolver = LocalResolver.from_schema(schema) resolver = LocalResolver.from_schema(schema)