Add classes for Ironic

Change-Id: Ia265bea6ee95435e25110d85d1c8e0eef7c11a3b
diff --git a/galera/server/database/ironic.yml b/galera/server/database/ironic.yml
new file mode 100644
index 0000000..8cb14a3
--- /dev/null
+++ b/galera/server/database/ironic.yml
@@ -0,0 +1,15 @@
+parameters:
+  mysql:
+    server:
+      database:
+        ironic:
+          encoding: utf8
+          users:
+          - name: ironic
+            password: ${_param:mysql_ironic_password}
+            host: '%'
+            rights: all
+          - name: ironic
+            password: ${_param:mysql_ironic_password}
+            host: ${_param:cluster_local_address}
+            rights: all
diff --git a/haproxy/proxy/listen/openstack/ironic.yml b/haproxy/proxy/listen/openstack/ironic.yml
new file mode 100644
index 0000000..221a9cc
--- /dev/null
+++ b/haproxy/proxy/listen/openstack/ironic.yml
@@ -0,0 +1,25 @@
+parameters:
+  haproxy:
+    proxy:
+      listen:
+        ironic:
+          type: general-service
+          service_name: ironic
+          check: false
+          binds:
+          - address: ${_param:cluster_vip_address}
+            port: 6385
+          servers:
+          - name: ctl01
+            host: ${_param:cluster_node01_address}
+            port: 6385
+            params: check
+          - name: ctl02
+            host: ${_param:cluster_node02_address}
+            port: 6385
+            params: check
+          - name: ctl03
+            host: ${_param:cluster_node03_address}
+            port: 6385
+            params: check
+
diff --git a/ironic/apache.yml b/ironic/apache.yml
new file mode 100644
index 0000000..c2c4932
--- /dev/null
+++ b/ironic/apache.yml
@@ -0,0 +1,20 @@
+#include:
+#  - service.ironic.conductor.single
+applications:
+  - apache
+parameters:
+  apache:
+    server:
+      enabled: true
+      bind:
+        address: '0.0.0.0'
+        ports:
+          - 80
+      site:
+        ironic:
+          name: 'ironic'
+          enabled: true
+          type: 'static'
+          root: '/var/www/httproot'
+          host:
+            name: ${linux:system:name}.${linux:system:domain}
diff --git a/ironic/api/cluster.yml b/ironic/api/cluster.yml
new file mode 100644
index 0000000..de73318
--- /dev/null
+++ b/ironic/api/cluster.yml
@@ -0,0 +1,12 @@
+classes:
+- service.ironic.api.single
+- system.ironic.common
+parameters:
+  ironic:
+    transport_url: rabbit://openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node01_address}:5672,openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node01_address}:5672,openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node03_address}:5672//openstack
+    api:
+      bind:
+        address: ${_param:cluster_local_address}
+    identity:
+      host: ${_param:cluster_vip_address}
+
diff --git a/ironic/api/single.yml b/ironic/api/single.yml
new file mode 100644
index 0000000..4221f74
--- /dev/null
+++ b/ironic/api/single.yml
@@ -0,0 +1,8 @@
+classes:
+- service.ironic.api.single
+- system.ironic.common
+parameters:
+  ironic:
+    api:
+      bind:
+        address: '0.0.0.0'
diff --git a/ironic/common.yml b/ironic/common.yml
new file mode 100644
index 0000000..ebe4cbf
--- /dev/null
+++ b/ironic/common.yml
@@ -0,0 +1,26 @@
+applications:
+  - ironic
+parameters:
+  ironic:
+    version: ${_param:ironic_version}
+    transport_url: rabbit://openstack:${_param:rabbitmq_openstack_password}@${_param:single_address}:5672//openstack
+    database:
+      engine: mysql
+      host: ${_param:openstack_database_address}
+      port: 3306
+      name: ironic
+      user: ironic
+      password: ${_param:mysql_ironic_password}
+    identity:
+      engine: keystone
+      region: ${_param:openstack_region}
+      host: ${_param:single_address}
+      port: 35357
+      protocol: http
+      user: ironic
+      username: ${ironic:identity:user}
+      password: ${_param:keystone_ironic_password}
+      tenant: service
+      auth_type: password
+      user_domain_id: default
+      project_domain_id: default
diff --git a/ironic/conductor/cluster.yml b/ironic/conductor/cluster.yml
new file mode 100644
index 0000000..0b16953
--- /dev/null
+++ b/ironic/conductor/cluster.yml
@@ -0,0 +1,10 @@
+classes:
+- service.ironic.conductor.single
+- system.ironic.common
+parameters:
+  _param:
+    ironic_baremetal_address: ${_param:cluster_local_address}
+  ironic:
+    deploy:
+      http_url: 'http://${_param:ironic_baremetal_address}'
+    transport_url: rabbit://openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node01_address}:5672,openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node01_address}:5672,openstack:${_param:rabbitmq_openstack_password}@${_param:openstack_message_queue_node03_address}:5672//openstack
diff --git a/ironic/conductor/single.yml b/ironic/conductor/single.yml
new file mode 100644
index 0000000..a464378
--- /dev/null
+++ b/ironic/conductor/single.yml
@@ -0,0 +1,9 @@
+classes:
+- service.ironic.conductor.single
+- system.ironic.common
+parameters:
+  _param:
+    ironic_baremetal_address: ${_param:single_address}
+  ironic:
+    deploy:
+      http_url: 'http://${_param:ironic_baremetal_address}'
diff --git a/ironic/database_mysql.yml b/ironic/database_mysql.yml
new file mode 100644
index 0000000..1859503
--- /dev/null
+++ b/ironic/database_mysql.yml
@@ -0,0 +1,11 @@
+ironic:
+  encoding: utf8
+  users:
+  - name: ironic
+    password: ${_param:mysql_ironic_password}
+    host: '%'
+    rights: all
+  - name: ironic
+    password: ${_param:mysql_ironic_password}
+    host: ${_param:cluster_local_address}
+    rights: all
diff --git a/ironic/tftpd_hpa.yml b/ironic/tftpd_hpa.yml
new file mode 100644
index 0000000..70e3760
--- /dev/null
+++ b/ironic/tftpd_hpa.yml
@@ -0,0 +1,16 @@
+include:
+  - service.ironic.conductor.single
+applications:
+  - tftpd_hpa
+parameters:
+  tftpd_hpa:
+    server:
+      enabled: true
+      bind:
+        address: '0.0.0.0'
+        port: 69
+      username: 'ironic'
+      path: ${ironic:tftp:root}
+      options:
+       - secure
+       - map-file: '${ironic:tftp:root}/map-file'
diff --git a/keystone/client/service/ironic.yml b/keystone/client/service/ironic.yml
new file mode 100644
index 0000000..7635e2c
--- /dev/null
+++ b/keystone/client/service/ironic.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    cluster_public_protocol: https
+  keystone:
+    client:
+      server:
+        identity:
+          project:
+            service:
+              user:
+                ironic:
+                  is_admin: true
+                  password: ${_param:keystone_ironic_password}
+                  email: ${_param:admin_email}
+          service:
+            ironic:
+              type: baremetal
+              description: OpenStack Baremetal Service
+              endpoints:
+              - region: ${_param:openstack_region}
+                public_address: ${_param:cluster_public_host}
+                public_protocol: ${_param:cluster_public_protocol}
+                public_port: 6385
+                public_path: ''
+                internal_address: ${_param:ironic_service_host}
+                internal_port: 6385
+                internal_path: ''
+                admin_address: ${_param:ironic_service_host}
+                admin_port: 6385
+                admin_path: ''
diff --git a/mysql/client/database/ironic.yml b/mysql/client/database/ironic.yml
new file mode 100644
index 0000000..a4b9904
--- /dev/null
+++ b/mysql/client/database/ironic.yml
@@ -0,0 +1,18 @@
+parameters:
+  mysql:
+    client:
+      server:
+        database:
+          database:
+            ironic: 
+              encoding: utf8
+              users:
+              - name: ironic
+                password: ${_param:mysql_ironic_password}
+                host: '%'
+                rights: all
+              - name: ironic
+                password: ${_param:mysql_ironic_password}
+                host: ${_param:cluster_local_address}
+                rights: all
+