API Special Interest Group/Current Design/Service Catalog
< API Special Interest Group | Current Design
Revision as of 22:40, 10 December 2014 by Everett Toews (talk | contribs)
The format of the service catalog needs to be fixed. The de facto standard is currently DevStack. We need to define a proper format for the service catalog.
Contents
Examples From The Wild
Rackspace Public Cloud
{ "access": { "user": { "RAX-AUTH:defaultRegion": "DFW", "name": "useranme", "roles": [ { "name": "checkmate", "description": "Checkmate Access role", "id": "10000150" }, { "name": "object-store:default", "description": "A Role that allows a user access to keystone Service methods", "id": "5", "tenantId": "MossoCloudFS_ID" }, { "name": "compute:default", "description": "A Role that allows a user access to keystone Service methods", "id": "6", "tenantId": "TENANT_ID" }, { "name": "identity:user-admin", "description": "User Admin Role.", "id": "3" } ], "id": "USER_ID" }, "serviceCatalog": [ { "type": "rax:object-cdn", "endpoints": [ { "publicURL": "https://cdn5.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "IAD" }, { "publicURL": "https://cdn4.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "SYD" }, { "publicURL": "https://cdn1.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "DFW" }, { "publicURL": "https://cdn6.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "HKG" }, { "publicURL": "https://cdn2.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "ORD" } ], "name": "cloudFilesCDN" }, { "type": "object-store", "endpoints": [ { "internalURL": "https://snet-storage101.iad3.clouddrive.com/v1/MossoCloudFS_ID", "publicURL": "https://storage101.iad3.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "IAD" }, { "internalURL": "https://snet-storage101.syd2.clouddrive.com/v1/MossoCloudFS_ID", "publicURL": "https://storage101.syd2.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "SYD" }, { "internalURL": "https://snet-storage101.dfw1.clouddrive.com/v1/MossoCloudFS_ID", "publicURL": "https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "DFW" }, { "internalURL": "https://snet-storage101.hkg1.clouddrive.com/v1/MossoCloudFS_ID", "publicURL": "https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "HKG" }, { "internalURL": "https://snet-storage101.ord1.clouddrive.com/v1/MossoCloudFS_ID", "publicURL": "https://storage101.ord1.clouddrive.com/v1/MossoCloudFS_ID", "tenantId": "MossoCloudFS_ID", "region": "ORD" } ], "name": "cloudFiles" }, { "type": "volume", "endpoints": [ { "publicURL": "https://syd.blockstorage.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "publicURL": "https://dfw.blockstorage.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://ord.blockstorage.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://iad.blockstorage.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://hkg.blockstorage.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" } ], "name": "cloudBlockStorage" }, { "type": "image", "endpoints": [ { "publicURL": "https://iad.images.api.rackspacecloud.com/v2", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://ord.images.api.rackspacecloud.com/v2", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://hkg.images.api.rackspacecloud.com/v2", "tenantId": "TENANT_ID", "region": "HKG" }, { "publicURL": "https://dfw.images.api.rackspacecloud.com/v2", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://syd.images.api.rackspacecloud.com/v2", "tenantId": "TENANT_ID", "region": "SYD" } ], "name": "cloudImages" }, { "type": "rax:queues", "endpoints": [ { "internalURL": "https://snet-hkg.queues.api.rackspacecloud.com/v1/TENANT_ID", "publicURL": "https://hkg.queues.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "internalURL": "https://snet-ord.queues.api.rackspacecloud.com/v1/TENANT_ID", "publicURL": "https://ord.queues.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "internalURL": "https://snet-syd.queues.api.rackspacecloud.com/v1/TENANT_ID", "publicURL": "https://syd.queues.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "internalURL": "https://snet-dfw.queues.api.rackspacecloud.com/v1/TENANT_ID", "publicURL": "https://dfw.queues.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "internalURL": "https://snet-iad.queues.api.rackspacecloud.com/v1/TENANT_ID", "publicURL": "https://iad.queues.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" } ], "name": "cloudQueues" }, { "type": "rax:bigdata", "endpoints": [ { "publicURL": "https://iad.bigdata.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://dfw.bigdata.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://ord.bigdata.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" } ], "name": "cloudBigData" }, { "type": "orchestration", "endpoints": [ { "publicURL": "https://hkg.orchestration.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "publicURL": "https://dfw.orchestration.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://ord.orchestration.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://iad.orchestration.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://syd.orchestration.api.rackspacecloud.com/v1/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" } ], "name": "cloudOrchestration" }, { "type": "compute", "endpoints": [ { "versionId": "2", "versionList": "https://syd.servers.api.rackspacecloud.com/", "versionInfo": "https://syd.servers.api.rackspacecloud.com/v2", "publicURL": "https://syd.servers.api.rackspacecloud.com/v2/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "versionId": "2", "versionList": "https://dfw.servers.api.rackspacecloud.com/", "versionInfo": "https://dfw.servers.api.rackspacecloud.com/v2", "publicURL": "https://dfw.servers.api.rackspacecloud.com/v2/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "versionId": "2", "versionList": "https://iad.servers.api.rackspacecloud.com/", "versionInfo": "https://iad.servers.api.rackspacecloud.com/v2", "publicURL": "https://iad.servers.api.rackspacecloud.com/v2/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "versionId": "2", "versionList": "https://hkg.servers.api.rackspacecloud.com/", "versionInfo": "https://hkg.servers.api.rackspacecloud.com/v2", "publicURL": "https://hkg.servers.api.rackspacecloud.com/v2/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "versionId": "2", "versionList": "https://ord.servers.api.rackspacecloud.com/", "versionInfo": "https://ord.servers.api.rackspacecloud.com/v2", "publicURL": "https://ord.servers.api.rackspacecloud.com/v2/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" } ], "name": "cloudServersOpenStack" }, { "type": "rax:autoscale", "endpoints": [ { "publicURL": "https://ord.autoscale.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://dfw.autoscale.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://hkg.autoscale.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "publicURL": "https://iad.autoscale.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://syd.autoscale.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" } ], "name": "autoscale" }, { "type": "rax:database", "endpoints": [ { "publicURL": "https://syd.databases.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "publicURL": "https://dfw.databases.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://ord.databases.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://iad.databases.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://hkg.databases.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" } ], "name": "cloudDatabases" }, { "type": "rax:backup", "endpoints": [ { "publicURL": "https://iad.backup.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://hkg.backup.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "publicURL": "https://syd.backup.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "publicURL": "https://dfw.backup.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://ord.backup.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" } ], "name": "cloudBackup" }, { "type": "network", "endpoints": [ { "publicURL": "https://iad.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://lon.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "LON" }, { "publicURL": "https://ord.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://syd.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "SYD" }, { "publicURL": "https://dfw.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "DFW" }, { "publicURL": "https://hkg.networks.api.rackspacecloud.com/v2.0", "tenantId": "TENANT_ID", "region": "HKG" } ], "name": "cloudNetworks" }, { "type": "rax:cloudmetrics", "endpoints": [ { "publicURL": "https://global.metrics.api.rackspacecloud.com/v2.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" } ], "name": "cloudMetrics" }, { "type": "rax:load-balancer", "endpoints": [ { "publicURL": "https://syd.loadbalancers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "publicURL": "https://iad.loadbalancers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "publicURL": "https://ord.loadbalancers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" }, { "publicURL": "https://hkg.loadbalancers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "publicURL": "https://dfw.loadbalancers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" } ], "name": "cloudLoadBalancers" }, { "type": "rax:feeds", "endpoints": [ { "internalURL": "https://atom.prod.hkg1.us.ci.rackspace.net/TENANT_ID", "publicURL": "https://hkg.feeds.api.rackspacecloud.com/TENANT_ID", "tenantId": "TENANT_ID", "region": "HKG" }, { "internalURL": "https://atom.prod.syd2.us.ci.rackspace.net/TENANT_ID", "publicURL": "https://syd.feeds.api.rackspacecloud.com/TENANT_ID", "tenantId": "TENANT_ID", "region": "SYD" }, { "internalURL": "https://atom.prod.iad3.us.ci.rackspace.net/TENANT_ID", "publicURL": "https://iad.feeds.api.rackspacecloud.com/TENANT_ID", "tenantId": "TENANT_ID", "region": "IAD" }, { "internalURL": "https://atom.prod.dfw1.us.ci.rackspace.net/TENANT_ID", "publicURL": "https://dfw.feeds.api.rackspacecloud.com/TENANT_ID", "tenantId": "TENANT_ID", "region": "DFW" }, { "internalURL": "https://atom.prod.ord1.us.ci.rackspace.net/TENANT_ID", "publicURL": "https://ord.feeds.api.rackspacecloud.com/TENANT_ID", "tenantId": "TENANT_ID", "region": "ORD" } ], "name": "cloudFeeds" }, { "type": "rax:monitor", "endpoints": [ { "publicURL": "https://monitoring.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID" } ], "name": "cloudMonitoring" }, { "type": "rax:dns", "endpoints": [ { "publicURL": "https://dns.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID" } ], "name": "cloudDNS" }, { "type": "compute", "endpoints": [ { "versionId": "1.0", "versionList": "https://servers.api.rackspacecloud.com/", "versionInfo": "https://servers.api.rackspacecloud.com/v1.0", "publicURL": "https://servers.api.rackspacecloud.com/v1.0/TENANT_ID", "tenantId": "TENANT_ID" } ], "name": "cloudServers" } ], "token": { "RAX-AUTH:authenticatedBy": [ "PASSWORD" ], "tenant": { "name": "TENANT_ID", "id": "TENANT_ID" }, "expires": "2014-12-11T03:26:57.420Z", "id": "TOKEN_ID" } } }
HP Public Cloud
Rackspace Private Cloud
DevStack
RDO
Mirantis
Outstanding Questions
- How are entry points currently done for all the services?
- How are versions currently done for all the services?
- Why are Name and Type both needed?
- Which of Name and Type are guaranteed to be unique?
- Does there need to be a top-level "access" property?