Add api and manager states and metadata

* api state configures and starts octavia-api service
* manager state configures and starts the following services:
  - octavia-worker
  - octavia-health-manager
  - octavia-housekeeping

Added tests and updated the README.rst

Change-Id: I41c3097ff400b07d659d8aa845d295fbda480cd3
diff --git a/metadata/service/api/cluster.yml b/metadata/service/api/cluster.yml
new file mode 100644
index 0000000..a7d55fd
--- /dev/null
+++ b/metadata/service/api/cluster.yml
@@ -0,0 +1,43 @@
+applications:
+- octavia
+classes:
+- service.octavia.support
+parameters:
+  _param:
+    keystone_octavia_endpoint_type: internal
+    octavia_api_bind_address: ${_param:cluster_local_address}
+    octavia_api_bind_port: 9876
+  octavia:
+    api:
+      enabled: true
+      version: ${_param:octavia_version}
+      debug: true
+      bind:
+        address: ${_param:octavia_api_bind_address}
+        port: ${_param:octavia_api_bind_port}
+      database:
+        engine: mysql
+        host: ${_param:cluster_vip_address}
+        port: 3306
+        name: octavia
+        user: octavia
+        password: ${_param:mysql_octavia_password}
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:cluster_vip_address}
+        port: 35357
+        user: octavia
+        password: ${_param:keystone_octavia_password}
+        tenant: service
+        endpoint_type: ${_param:keystone_octavia_endpoint_type}
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:cluster_vip_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+      haproxy_amphora:
+        client_cert: '/etc/octavia/certs/client.pem'
+        server_ca: '/etc/octavia/certs/ca_01.pem'
diff --git a/metadata/service/api/single.yml b/metadata/service/api/single.yml
new file mode 100644
index 0000000..532ec9b
--- /dev/null
+++ b/metadata/service/api/single.yml
@@ -0,0 +1,41 @@
+applications:
+- octavia
+classes:
+- service.octavia.support
+parameters:
+  _param:
+    keystone_octavia_endpoint_type: internal
+  octavia:
+    api:
+      enabled: true
+      version: ${_param:octavia_version}
+      debug: true
+      bind:
+        address: ${_param:single_address}
+        port: 9876
+      database:
+        engine: mysql
+        host: ${_param:single_address}
+        port: 3306
+        name: octavia
+        user: octavia
+        password: ${_param:mysql_octavia_password}
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:single_address}
+        port: 35357
+        user: octavia
+        password: ${_param:keystone_octavia_password}
+        tenant: service
+        endpoint_type: ${_param:keystone_octavia_endpoint_type}
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:single_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+      haproxy_amphora:
+        client_cert: '/etc/octavia/certs/client.pem'
+        server_ca: '/etc/octavia/certs/ca_01.pem'
diff --git a/metadata/service/control/single.yml b/metadata/service/control/single.yml
deleted file mode 100644
index 1d5b3af..0000000
--- a/metadata/service/control/single.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-applications:
-- octavia
-classes:
-- service.octavia.support
-parameters:
-  octavia:
-    server:
-      enabled: true
\ No newline at end of file
diff --git a/metadata/service/manager/single.yml b/metadata/service/manager/single.yml
new file mode 100644
index 0000000..fd05a15
--- /dev/null
+++ b/metadata/service/manager/single.yml
@@ -0,0 +1,55 @@
+applications:
+- octavia
+classes:
+- service.octavia.support
+parameters:
+  _param:
+    keystone_octavia_endpoint_type: internal
+  octavia:
+    manager:
+      enabled: true
+      version: ${_param:octavia_version}
+      debug: true
+      database:
+        engine: mysql
+        host: ${_param:cluster_vip_address}
+        port: 3306
+        name: octavia
+        user: octavia
+        password: ${_param:mysql_octavia_password}
+      identity:
+        engine: keystone
+        region: RegionOne
+        host: ${_param:cluster_vip_address}
+        port: 35357
+        user: octavia
+        password: ${_param:keystone_octavia_password}
+        tenant: service
+        endpoint_type: ${_param:keystone_octavia_endpoint_type}
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:cluster_vip_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+      certificates:
+        ca_private_key_passphrase: foobar
+        ca_private_key: '/etc/octavia/certs/private/cakey.pem'
+        ca_certificate: '/etc/octavia/certs/ca_01.pem'
+      controller_worker:
+        amp_boot_network_list: ${_param:amp_boot_network_list}
+        amp_flavor_id: ${_param:amp_flavor_id}
+        amp_image_owner_id: ${_param:amp_image_owner_id}
+        amp_image_tag: amphora
+        amp_secgroup_list: ${_param:amp_secgroup_list}
+        amp_ssh_key_name: octavia_ssh_key
+        loadbalancer_topology: 'SINGLE'
+      haproxy_amphora:
+        client_cert: '/etc/octavia/certs/client.pem'
+        server_ca: '/etc/octavia/certs/ca_01.pem'
+      health_manager:
+        bind_ip: ${_param:octavia_hm_bind_ip}
+        heartbeat_key: 'insecure'
+      house_keeping:
+        spare_amphora_pool_size: 0