Add keystone service metadata for v3 client

V3 resources structure/resource relation are completely
different than in v2. This patch introduce metadata for
v3 resources stored in:

  * keystone/client/v3/services/*

The new module/state in keystone to work with v3 only was introduced
by https://gerrit.mcp.mirantis.net/19529.

The change is fully backward compatible, as new resources will be
used only when keystone:client:resources:v3:enabled is set explicitly
to True.

Change-Id: I0f0e53dda29572987f221438394083590bb6a6e5
Related-Prod: PROD-19148
diff --git a/keystone/client/v3/service/aodh.yml b/keystone/client/v3/service/aodh.yml
new file mode 100644
index 0000000..de85fb0
--- /dev/null
+++ b/keystone/client/v3/service/aodh.yml
@@ -0,0 +1,35 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    aodh_service_protocol: http
+    aodh_public_host: ${_param:cluster_public_host}
+  keystone:
+    client:
+      resources:
+        v3:
+          cloud_name: 'admin_identity'
+          users:
+            aodh:
+              password: ${_param:keystone_aodh_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            aodh:
+              type: alarming
+              description: OpenStack Alarming Service
+              endpoints:
+                aodh_public:
+                  interface: 'public'
+                  region: ${_param:openstack_region}
+                  url: ${_param:cluster_public_protocol}://${_param:aodh_public_host}:8042/
+                aodh_internal:
+                  interface: 'internal'
+                  region: ${_param:openstack_region}
+                  url: ${_param:aodh_service_protocol}://${_param:aodh_service_host}:8042/
+                aodh_admin:
+                  interface: 'admin'
+                  region: ${_param:openstack_region}
+                  url: ${_param:aodh_service_protocol}://${_param:aodh_service_host}:8042/
diff --git a/keystone/client/v3/service/barbican.yml b/keystone/client/v3/service/barbican.yml
new file mode 100644
index 0000000..4262ffd
--- /dev/null
+++ b/keystone/client/v3/service/barbican.yml
@@ -0,0 +1,46 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    barbican_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          roles:
+            global_creator:
+              name: creator
+              enabled: true
+            global_key_manager_admin:
+              name: key-manager:service-admin
+              enabled: true
+          users:
+            barbican:
+              password: ${_param:keystone_barbican_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+                global_creator:
+                  name: creator
+                  project_id: service
+                global_key_manager_admin:
+                  name: key-manager:service-admin
+                  project_id: service
+          services:
+            barbican:
+              type: key-manager
+              description: OpenStack Key-Manager Service
+              endpoints:
+                barbican_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9311/
+                  region: ${_param:openstack_region}
+                barbican_internal:
+                  interface: 'internal'
+                  url: ${_param:barbican_service_protocol}://${_param:barbican_service_host}:9311/
+                  region: ${_param:openstack_region}
+                barbican_admin:
+                  interface: 'admin'
+                  url: ${_param:barbican_service_protocol}://${_param:barbican_service_host}:9311/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/billometer.yml b/keystone/client/v3/service/billometer.yml
new file mode 100644
index 0000000..17cc28a
--- /dev/null
+++ b/keystone/client/v3/service/billometer.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    billometer_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          user:
+            billometer:
+              password: ${_param:keystone_billometer_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            billometer:
+              type: billing
+              description: OpenStack Billing Service
+              endpoints:
+                billometer_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9753/v1
+                  region: ${_param:openstack_region}
+                billometer_internal:
+                  interface: 'internal'
+                  url: ${_param:billometer_service_protocol}://${_param:billometer_service_host}:9753/v1
+                  region: ${_param:openstack_region}
+                billometer_admin:
+                  interface: 'admin'
+                  url: ${_param:billometer_service_protocol}://${_param:billometer_service_host}:9753/v1
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/ceilometer.yml b/keystone/client/v3/service/ceilometer.yml
new file mode 100644
index 0000000..e52a5c0
--- /dev/null
+++ b/keystone/client/v3/service/ceilometer.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    ceilometer_service_protocol: http
+    ceilometer_public_host: ${_param:cluster_public_host}
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            ceilometer:
+              password: ${_param:keystone_ceilometer_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            ceilometer:
+              type: metering
+              description: OpenStack Telemetry Service
+              endpoints:
+                ceilometer_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:ceilometer_public_host}:8777/
+                  region: ${_param:openstack_region}
+                ceilometer_internal:
+                  interface: 'internal'
+                  url: ${_param:ceilometer_service_protocol}://${_param:ceilometer_service_host}:8777/
+                  region: ${_param:openstack_region}
+                ceilometer_admin:
+                  interface: 'admin'
+                  url: ${_param:ceilometer_service_protocol}://${_param:ceilometer_service_host}:8777/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/cinder.yml b/keystone/client/v3/service/cinder.yml
new file mode 100644
index 0000000..bfb0e70
--- /dev/null
+++ b/keystone/client/v3/service/cinder.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    cinder_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            cinder:
+              password: ${_param:keystone_cinder_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            cinder:
+              type: volume
+              description: OpenStack Volume Service
+              endpoints:
+                cinder_public_v1:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8776/v1/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_internal_v1:
+                  interface: 'internal'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v1/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_admin_v1:
+                  interface: 'admin'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v1/$(project_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/cinder2.yml b/keystone/client/v3/service/cinder2.yml
new file mode 100644
index 0000000..c1ccec6
--- /dev/null
+++ b/keystone/client/v3/service/cinder2.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    cinder_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            cinder:
+              password: ${_param:keystone_cinder_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            cinderv2:
+              type: volumev2
+              description: OpenStack Volume Service V2
+              endpoints:
+                cinder_public_v2:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8776/v2/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_internal_v2:
+                  interface: 'internal'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v2/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_admin_v2:
+                  interface: 'admin'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v2/$(project_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/cinder3.yml b/keystone/client/v3/service/cinder3.yml
new file mode 100644
index 0000000..2184c4c
--- /dev/null
+++ b/keystone/client/v3/service/cinder3.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    cinder_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            cinder:
+              password: ${_param:keystone_cinder_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            cinderv3:
+              type: volumev3
+              description: OpenStack Volume Service V3
+              endpoints:
+                cinder_public_v3:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8776/v3/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_internal_v3:
+                  interface: 'internal'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v3/$(project_id)s
+                  region: ${_param:openstack_region}
+                cinder_admin_v3:
+                  interface: 'admin'
+                  url: ${_param:cinder_service_protocol}://${_param:cinder_service_host}:8776/v3/$(project_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/congress.yml b/keystone/client/v3/service/congress.yml
new file mode 100644
index 0000000..db0085b
--- /dev/null
+++ b/keystone/client/v3/service/congress.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    congress_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            congress:
+              password: ${_param:keystone_congress_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                    name: admin
+                    project_id: service
+          services:
+            congress:
+              type: policy
+              description: Congress service
+              endpoints:
+                congress_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:1789/
+                  region: ${_param:openstack_region}
+                congress_internal:
+                  interface: 'internal'
+                  url: ${_param:congress_service_protocol}://${_param:congress_service_host}:1789/
+                  region: ${_param:openstack_region}
+                congress_admin:
+                  interface: 'admin'
+                  url: ${_param:congress_service_protocol}://${_param:congress_service_host}:1789/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/designate.yml b/keystone/client/v3/service/designate.yml
new file mode 100644
index 0000000..59b2e6b
--- /dev/null
+++ b/keystone/client/v3/service/designate.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    designate_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            designate:
+              password: ${_param:keystone_designate_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            designate:
+                type: dns
+                description: OpenStack DNS service
+                endpoints:
+                  designate_public:
+                    interface: 'public'
+                    url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9001/
+                    region: ${_param:openstack_region}
+                  designate_internal:
+                    interface: 'internal'
+                    url: ${_param:designate_service_protocol}://${_param:designate_service_host}:9001/
+                    region: ${_param:openstack_region}
+                  designate_admin:
+                    interface: 'admin'
+                    url: ${_param:designate_service_protocol}://${_param:designate_service_host}:9001/
+                    region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/glance.yml b/keystone/client/v3/service/glance.yml
new file mode 100644
index 0000000..dd86545
--- /dev/null
+++ b/keystone/client/v3/service/glance.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    glance_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            glance:
+              password: ${_param:keystone_glance_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            glance:
+              type: image
+              description: OpenStack Image Service
+              endpoints:
+                glance_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9292
+                  region: ${_param:openstack_region}
+                glance_internal:
+                  interface: 'internal'
+                  url: ${_param:glance_service_protocol}://${_param:glance_service_host}:9292
+                  region: ${_param:openstack_region}
+                glance_admin:
+                  interface: 'admin'
+                  url: ${_param:glance_service_protocol}://${_param:glance_service_host}:9292
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/gnocchi.yml b/keystone/client/v3/service/gnocchi.yml
new file mode 100644
index 0000000..82c796a
--- /dev/null
+++ b/keystone/client/v3/service/gnocchi.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    gnocchi_service_protocol: http
+    gnocchi_public_host: ${_param:cluster_public_host}
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            gnocchi:
+              password: ${_param:keystone_gnocchi_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            gnocchi:
+              type: metric
+              description: OpenStack Metric Service
+              endpoints:
+                gnocchi_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:gnocchi_public_host}:8041/
+                  region: ${_param:openstack_region}
+                gnocchi_internal:
+                  interface: 'internal'
+                  url: ${_param:gnocchi_service_protocol}://${_param:gnocchi_service_host}:8041/
+                  region: ${_param:openstack_region}
+                gnocchi_admin:
+                  interface: 'admin'
+                  url: ${_param:gnocchi_service_protocol}://${_param:gnocchi_service_host}:8041/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/heat-cfn.yml b/keystone/client/v3/service/heat-cfn.yml
new file mode 100644
index 0000000..786d9d8
--- /dev/null
+++ b/keystone/client/v3/service/heat-cfn.yml
@@ -0,0 +1,24 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    heat_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          heat-cfn:
+            type: cloudformation
+            description: OpenStack CloudFormation Service
+            endpoints:
+              heat-cfn_public_v1:
+                interface: 'public'
+                url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8000/v1
+                region: ${_param:openstack_region}
+              heat-cfn_internal_v1:
+                interface: 'internal'
+                url: ${_param:heat_service_protocol}://${_param:heat_service_host}:8000/v1
+                region: ${_param:openstack_region}
+              heat-cfn_admin_v1:
+                interface: 'admin'
+                url: ${_param:heat_service_protocol}://${_param:heat_service_host}:8000/v1
+                region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/heat.yml b/keystone/client/v3/service/heat.yml
new file mode 100644
index 0000000..6c45bfe
--- /dev/null
+++ b/keystone/client/v3/service/heat.yml
@@ -0,0 +1,40 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    heat_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          roles:
+            heat_stack_user:
+              name: heat_stack_user
+              enabled: true
+            heat_stack_owner:
+              name: heat_stack_owner
+              enabled: true
+          users:
+            heat:
+              password: ${_param:keystone_heat_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            heat:
+              type: orchestration
+              description: OpenStack Orchestration Service
+              endpoints:
+                heat_public_v1:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8004/v1/%(project_id)s
+                  region: ${_param:openstack_region}
+                heat_internal_v1:
+                  interface: 'internal'
+                  url: ${_param:heat_service_protocol}://${_param:heat_service_host}:8004/v1/%(project_id)s
+                  region: ${_param:openstack_region}
+                heat_admin_v1:
+                  interface: 'admin'
+                  url: ${_param:heat_service_protocol}://${_param:heat_service_host}:8004/v1/%(project_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/ironic.yml b/keystone/client/v3/service/ironic.yml
new file mode 100644
index 0000000..09c6967
--- /dev/null
+++ b/keystone/client/v3/service/ironic.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    keystone_service_protocol: http
+    ironic_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            ironic:
+              password: ${_param:keystone_ironic_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          service:
+            ironic:
+              type: baremetal
+              description: OpenStack Baremetal Service
+              endpoints:
+                ironic_public:
+                  internface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:6385
+                  region: ${_param:openstack_region}
+                ironic_internal:
+                  internface: 'internal'
+                  url: ${_param:ironic_service_protocol}://${_param:ironic_service_host}:6385
+                  region: ${_param:openstack_region}
+                ironic_admin:
+                  internface: 'admin'
+                  url: ${_param:ironic_service_protocol}://${_param:ironic_service_host}:6385
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/keystone.yml b/keystone/client/v3/service/keystone.yml
new file mode 100644
index 0000000..a2c7837
--- /dev/null
+++ b/keystone/client/v3/service/keystone.yml
@@ -0,0 +1,49 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    keystone_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          cloud_name: 'admin_identity'
+          domains:
+            'Default':
+              projects:
+                service:
+                  description: "OpenStack Service tenant"
+                admin:
+                  description: "OpenStack Admin tenant"
+          roles:
+            service_admin:
+              name: admin
+              enabled: true
+            global_Member:
+              name: Member
+              enabled: true
+          users:
+            admin:
+              password: ${_param:keystone_admin_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  enabled: true
+                  project_id: admin
+          services:
+            keystone:
+              type: 'identity'
+              description: "OpenStack Identity Service"
+              endpoints:
+                keystone_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:5000/
+                  region: ${_param:openstack_region}
+                keystone_internal:
+                  interface: 'internal'
+                  url: ${_param:keystone_service_protocol}://${_param:keystone_service_host}:5000/
+                  region: ${_param:openstack_region}
+                keystone_admin:
+                  interface: 'admin'
+                  url: ${_param:keystone_service_protocol}://${_param:keystone_service_host}:5000/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/manila.yml b/keystone/client/v3/service/manila.yml
new file mode 100644
index 0000000..f486845
--- /dev/null
+++ b/keystone/client/v3/service/manila.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    manila_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            manila:
+              password: ${_param:keystone_manila_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            manila:
+              type: share
+              description: OpenStack Shared File Systems V1
+              endpoints:
+                manila_public_v1:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8786/v1/$(tenant_id)s
+                  region: ${_param:openstack_region}
+                manila_internal_v1:
+                  interface: 'internal'
+                  url: ${_param:manila_service_protocol}://${_param:manila_service_host}:8786/v1/$(tenant_id)s
+                  region: ${_param:openstack_region}
+                manila_admin_v1:
+                  interface: 'admin'
+                  url: ${_param:manila_service_protocol}://${_param:manila_service_host}:8786/v1/$(tenant_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/manila2.yml b/keystone/client/v3/service/manila2.yml
new file mode 100644
index 0000000..635147a
--- /dev/null
+++ b/keystone/client/v3/service/manila2.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    manila_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            manila:
+              password: ${_param:keystone_manila_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            manilav2:
+              type: sharev2
+              description: OpenStack Shared File Systems V2
+              endpoints:
+                manila_public_v2:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8786/v2/$(tenant_id)s
+                  region: ${_param:openstack_region}
+                manila_internal_v2:
+                  interface: 'internal'
+                  url: ${_param:manila_service_protocol}://${_param:manila_service_host}:8786/v2/$(tenant_id)s
+                  region: ${_param:openstack_region}
+                manila_admin_v2:
+                  interface: 'admin'
+                  url: ${_param:manila_service_protocol}://${_param:manila_service_host}:8786/v2/$(tenant_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/neutron.yml b/keystone/client/v3/service/neutron.yml
new file mode 100644
index 0000000..277a563
--- /dev/null
+++ b/keystone/client/v3/service/neutron.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    neutron_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            neutron:
+              password: ${_param:keystone_neutron_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            neutron:
+              type: network
+              description: OpenStack Networking Service
+              endpoints:
+                neutron_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9696/
+                  region: ${_param:openstack_region}
+                neutron_interna;:
+                  interface: 'internal'
+                  url: ${_param:neutron_service_protocol}://${_param:neutron_service_host}:9696/
+                  region: ${_param:openstack_region}
+                neutron_admin:
+                  interface: 'admin'
+                  url: ${_param:neutron_service_protocol}://${_param:neutron_service_host}:9696/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/nova-placement.yml b/keystone/client/v3/service/nova-placement.yml
new file mode 100644
index 0000000..1fea757
--- /dev/null
+++ b/keystone/client/v3/service/nova-placement.yml
@@ -0,0 +1,25 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    nova_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          services:
+            placement:
+              type: placement
+              description: OpenStack Placement API
+              endpoints:
+                nova_placement_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8778
+                  region: ${_param:openstack_region}
+                nova_placement_internal:
+                  interface: 'internal'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8778
+                  region: ${_param:openstack_region}
+                nova_placement_admin:
+                  interface: 'admin'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8778
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/nova.yml b/keystone/client/v3/service/nova.yml
new file mode 100644
index 0000000..6665617
--- /dev/null
+++ b/keystone/client/v3/service/nova.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    nova_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            nova:
+              password: ${_param:keystone_nova_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            nova20:
+              type: compute_legacy
+              description: OpenStack Compute Service V2
+              endpoints:
+                nova_public_v2:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8774/v2/$(project_id)s
+                  region: ${_param:openstack_region}
+                nova_internal_v2:
+                  interface: 'internal'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8774/v2/$(project_id)s
+                  region: ${_param:openstack_region}
+                nova_admin_v2:
+                  interface: 'admin'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8774/v2/$(project_id)s
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/nova21.yml b/keystone/client/v3/service/nova21.yml
new file mode 100644
index 0000000..e936676
--- /dev/null
+++ b/keystone/client/v3/service/nova21.yml
@@ -0,0 +1,33 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    nova_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            nova:
+              password: ${_param:keystone_nova_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            nova:
+              type: compute
+              description: OpenStack Compute Service V2.1
+              endpoints:
+                nova_public_v2.1:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:8774/v2.1
+                  region: ${_param:openstack_region}
+                nova_internal_v2.1:
+                  interface: 'internal'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8774/v2.1
+                  region: ${_param:openstack_region}
+                nova_admin_v2.1:
+                  interface: 'admin'
+                  url: ${_param:nova_service_protocol}://${_param:nova_service_host}:8774/v2.1
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/octavia.yml b/keystone/client/v3/service/octavia.yml
new file mode 100644
index 0000000..a43b0a9
--- /dev/null
+++ b/keystone/client/v3/service/octavia.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    keystone_service_protocol: http
+    octavia_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            octavia:
+              password: ${_param:keystone_octavia_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          services:
+            octavia:
+              type: octavia
+              description: OpenStack Loadbalancing Service
+              endpoints:
+                octavia_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:9876/
+                  region: ${_param:openstack_region}
+                octavia_internal:
+                  interface: 'internal'
+                  url: ${_param:octavia_service_protocol}://${_param:octavia_service_host}:9876/
+                  region: ${_param:openstack_region}
+                octavia_admin:
+                  interface: 'admin'
+                  url: ${_param:octavia_service_protocol}://${_param:octavia_service_host}:9876/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/panko.yml b/keystone/client/v3/service/panko.yml
new file mode 100644
index 0000000..ee94697
--- /dev/null
+++ b/keystone/client/v3/service/panko.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    panko_service_protocol: http
+    panko_public_host: ${_param:cluster_public_host}
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            panko:
+              password: ${_param:keystone_panko_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          service:
+            panko:
+              type: event
+              description: OpenStack Event Service
+              endpoints:
+                panko_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:panko_public_host}:8977/
+                  region: ${_param:openstack_region}
+                panko_internal:
+                  interface: 'internal'
+                  url: ${_param:panko_service_protocol}://${_param:panko_service_host}:8977/
+                  region: ${_param:openstack_region}
+                panko_admin:
+                  interface: 'admin'
+                  url: ${_param:panko_service_protocol}://${_param:panko_service_host}:8977/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/radosgw-s3.yml b/keystone/client/v3/service/radosgw-s3.yml
new file mode 100644
index 0000000..25614cb
--- /dev/null
+++ b/keystone/client/v3/service/radosgw-s3.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    radosgw_s3_cluster_port: 8081
+    radosgw_service_protocol: http
+  keystone:
+    client:
+      resource:
+        v3:
+          users:
+            swift:
+              password: ${_param:keystone_swift_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          service:
+            radosgw-s3:
+              type: s3
+              description: S3 Service (radosgw)
+              endpoints:
+                radosgw-s3_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:${_param:radosgw_s3_cluster_port}/
+                  region: ${_param:openstack_region}
+                radosgw-s3_internal:
+                  interface: 'internal'
+                  url: ${_param:radosgw_service_protocol}://${_param:radosgw_service_host}:${_param:radosgw_s3_cluster_port}/
+                  region: ${_param:openstack_region}
+                radosgw-s3_admin:
+                  interface: 'admin'
+                  url: ${_param:radosgw_service_protocol}://${_param:radosgw_service_host}:${_param:radosgw_s3_cluster_port}/
+                  region: ${_param:openstack_region}
diff --git a/keystone/client/v3/service/radosgw-swift.yml b/keystone/client/v3/service/radosgw-swift.yml
new file mode 100644
index 0000000..4fa6756
--- /dev/null
+++ b/keystone/client/v3/service/radosgw-swift.yml
@@ -0,0 +1,34 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+    radosgw_swift_cluster_port: 8081
+    radosgw_service_protocol: http
+  keystone:
+    client:
+      resources:
+        v3:
+          users:
+            swift:
+              password: ${_param:keystone_swift_password}
+              email: ${_param:admin_email}
+              roles:
+                service_admin:
+                  name: admin
+                  project_id: service
+          service:
+            radosgw-swift:
+              type: object-store
+              description: Swift Service (radosgw)
+              endpoints:
+                radosgw-swift_public:
+                  interface: 'public'
+                  url: ${_param:cluster_public_protocol}://${_param:cluster_public_host}:${_param:radosgw_swift_cluster_port}/swift/v1
+                  region: ${_param:openstack_region}
+                radosgw-swift_internal:
+                  interface: 'internal'
+                  url: ${_param:radosgw_service_protocol}://${_param:radosgw_service_host}:${_param:radosgw_swift_cluster_port}/swift/v1
+                  region: ${_param:openstack_region}
+                radosgw-swift_admin:
+                  interface: 'admin'
+                  url: ${_param:radosgw_service_protocol}://${_param:radosgw_service_host}:${_param:radosgw_swift_cluster_port}/swift/v1
+                  region: ${_param:openstack_region}