AIO ovs

Change-Id: Iba7458af9fddae62946bd5d1ab9f5b1575f3b670
diff --git a/classes/cluster/os_aio_ovs/infra/config.yml b/classes/cluster/os_aio_ovs/infra/config.yml
index 5c05f4c..2764646 100644
--- a/classes/cluster/os_aio_ovs/infra/config.yml
+++ b/classes/cluster/os_aio_ovs/infra/config.yml
@@ -15,7 +15,7 @@
 - system.keystone.client.service.glare
 - system.keystone.client.service.cinder3
 - system.mysql.client.single
-- system.reclass.storage.system.openstack_control_cluster
+- system.reclass.storage.system.openstack_control_single
 - system.reclass.storage.system.openstack_compute_multi
 - system.reclass.storage.system.openstack_gateway_single
 - system.reclass.storage.system.openstack_dashboard_single
@@ -47,11 +47,63 @@
       site:
         nginx_proxy_openstack_web:
           proxy:
-            host: prx
+            host: ${_param:cluster_node01_address}
         nginx_proxy_openstack_api_heat_cfn:
           enabled: false
+  salt:
+    master:
+      reactor:
+        reclass/minion/classify:
+        - salt://reclass/reactor/node_register.sls
   reclass:
     storage:
+      class_mapping:
+        common_node:
+          expression: all
+          node_param:
+            single_address:
+              value_template: <<node_control_ip>>
+            linux_system_codename:
+              value_template: <<node_os>>
+            salt_master_host:
+              value_template: <<node_master_ip>>
+        infra_config:
+          expression: <<node_hostname>>__startswith__cfg
+          cluster_param:
+            infra_config_address:
+              value_template: <<node_control_ip>>
+            infra_config_deploy_address:
+              value_template: <<node_deploy_ip>>
+            cluster_domain:
+              value_template: <<node_domain>>
+        openstack_control01:
+          expression: <<node_hostname>>__equals__ctl01
+          cluster_param:
+            openstack_control_node01_address:
+              value_template: <<node_control_ip>>
+        openstack_compute:
+          expression: <<node_hostname>>__startswith__cmp
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.compute
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
+        openstack_gateway:
+          expression: <<node_hostname>>__startswith__gtw
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.gateway
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
+          cluster_param:
+            openstack_gateway_node01_address:
+              value_template: <<node_control_ip>>
       node:
         openstack_control_node01:
           classes:
@@ -59,34 +111,54 @@
           params:
             mysql_cluster_role: master
             linux_system_codename: xenial
-        openstack_control_node02:
-          classes:
-          - service.galera.slave.cluster
-          params:
-            mysql_cluster_role: slave
-            linux_system_codename: xenial
-        openstack_control_node03:
-          classes:
-          - service.galera.slave.cluster
-          params:
-            mysql_cluster_role: slave
-            linux_system_codename: xenial
-        openstack_compute_node01:
-          params:
-            single_address: 172.16.10.105
-            tenant_address: 10.1.0.105
-            external_address: 10.16.0.105
-        openstack_compute_node02:
-          params:
-            single_address: 172.16.10.106
-            tenant_address: 10.1.0.106
-            external_address: 10.16.0.106
-        openstack_gateway_node01:
-          params:
-            tenant_address: 10.1.0.110
-            external_address: 10.16.0.110
-        openstack_proxy_node01:
-          classes:
-          - cluster.os_aio_ovs.openstack.proxy
-          params:
-            linux_system_codename: xenial
+
+
+  # nginx:
+  #   server:
+  #     site:
+  #       nginx_proxy_openstack_web:
+  #         proxy:
+  #           host: prx
+  #       nginx_proxy_openstack_api_heat_cfn:
+  #         enabled: false
+  # reclass:
+  #   storage:
+  #     node:
+  #       openstack_control_node01:
+  #         classes:
+  #         - service.galera.master.cluster
+  #         params:
+  #           mysql_cluster_role: master
+  #           linux_system_codename: xenial
+  #       openstack_control_node02:
+  #         classes:
+  #         - service.galera.slave.cluster
+  #         params:
+  #           mysql_cluster_role: slave
+  #           linux_system_codename: xenial
+  #       openstack_control_node03:
+  #         classes:
+  #         - service.galera.slave.cluster
+  #         params:
+  #           mysql_cluster_role: slave
+  #           linux_system_codename: xenial
+  #       openstack_compute_node01:
+  #         params:
+  #           single_address: 172.16.10.105
+  #           tenant_address: 10.1.0.105
+  #           external_address: 10.16.0.105
+  #       openstack_compute_node02:
+  #         params:
+  #           single_address: 172.16.10.106
+  #           tenant_address: 10.1.0.106
+  #           external_address: 10.16.0.106
+  #       openstack_gateway_node01:
+  #         params:
+  #           tenant_address: 10.1.0.110
+  #           external_address: 10.16.0.110
+  #       openstack_proxy_node01:
+  #         classes:
+  #         - cluster.os_aio_ovs.openstack.proxy
+  #         params:
+  #           linux_system_codename: xenial
+
diff --git a/classes/cluster/os_aio_ovs/openstack/compute.yml b/classes/cluster/os_aio_ovs/openstack/compute.yml
index 787e608..64fc04d 100644
--- a/classes/cluster/os_aio_ovs/openstack/compute.yml
+++ b/classes/cluster/os_aio_ovs/openstack/compute.yml
@@ -21,13 +21,13 @@
         notify_on:
           state_change: vm_and_task_state
       message_queue:
-        members:
-          - host: ${_param:openstack_control_node01_address}
-          - host: ${_param:openstack_control_node02_address}
-          - host: ${_param:openstack_control_node03_address}
+        host: ${_param:openstack_control_node01_address}
   linux:
     network:
       bridge: openvswitch
+      concat_iface_files:
+      - src: '/etc/network/interfaces.d/50-cloud-init.cfg'
+        dst: '/etc/network/interfaces'
       interface:
         dhcp_int:
           enabled: true
@@ -37,12 +37,14 @@
           mtu: ${_param:interface_mtu}
         primary_interface:
           enabled: true
+          ipflush_onchange: true
           name: ${_param:primary_interface}
           mtu: ${_param:interface_mtu}
           proto: manual
           type: eth
         tenant_interface:
           enabled: true
+          ipflush_onchange: true
           name: ${_param:tenant_interface}
           mtu: ${_param:interface_mtu}
           proto: manual
diff --git a/classes/cluster/os_aio_ovs/openstack/control.yml b/classes/cluster/os_aio_ovs/openstack/control.yml
index 4c474c1..38ed2ba 100644
--- a/classes/cluster/os_aio_ovs/openstack/control.yml
+++ b/classes/cluster/os_aio_ovs/openstack/control.yml
@@ -5,22 +5,22 @@
 - system.linux.system.repo.mcp.extra
 - system.linux.system.repo.saltstack.xenial
 - system.memcached.server.single
-- system.rabbitmq.server.cluster
+- system.rabbitmq.server.single
 - system.rabbitmq.server.vhost.openstack
 - system.keystone.server.wsgi
-- system.keystone.server.cluster
-- system.glusterfs.client.cluster
-- system.glusterfs.client.volume.glance
-- system.glusterfs.client.volume.keystone
-- system.glusterfs.server.volume.glance
-- system.glusterfs.server.volume.keystone
-- system.glusterfs.server.cluster
-- system.glance.control.cluster
-- system.nova.control.cluster
-- system.neutron.control.openvswitch.cluster
-- system.cinder.control.cluster
-- system.heat.server.cluster
-- system.galera.server.cluster
+- system.keystone.server.single
+# - system.glusterfs.client.cluster
+# - system.glusterfs.client.volume.glance
+# - system.glusterfs.client.volume.keystone
+# - system.glusterfs.server.volume.glance
+# - system.glusterfs.server.volume.keystone
+# - system.glusterfs.server.cluster
+- system.glance.control.single
+- system.nova.control.single
+- system.neutron.control.openvswitch.single
+- system.cinder.control.single
+- system.heat.server.single
+#- system.galera.server.cluster
 - system.galera.server.database.ceilometer
 - system.galera.server.database.cinder
 - system.galera.server.database.glance
@@ -30,8 +30,25 @@
 - cluster.os_aio_ovs
 parameters:
   _param:
-    keepalived_vip_interface: ens4
-    keepalived_openstack_telemetry_vip_interface: ens4
+    galera_server_cluster_name: galeracluster
+    galera_server_bind_address: ${_param:cluster_local_address}
+    galera_server_bind_port: 3306
+    galera_server_admin_user: root
+  galera:
+    master:
+      enabled: true
+      name: ${_param:galera_server_cluster_name}
+      bind:
+        address: ${_param:galera_server_bind_address}
+        port: ${_param:galera_server_bind_port}
+      maintenance_password: ${_param:galera_server_maintenance_password}
+      admin:
+        user: ${_param:galera_server_admin_user}
+        password: ${_param:galera_server_admin_password}
+      members:
+      - host: ${_param:openstack_control_node01_address}
+        port: 4567
+##################
   linux:
     system:
       package:
@@ -45,11 +62,6 @@
           proto: static
           address: ${_param:single_address}
           netmask: 255.255.255.0
-  keepalived:
-    cluster:
-      instance:
-        VIP:
-          virtual_router_id: 150
   keystone:
     server:
       admin_email: ${_param:admin_email}
@@ -83,9 +95,9 @@
         password: ${_param:metadata_password}
       bind:
         private_address: ${_param:cluster_local_address}
-        public_address: ${_param:cluster_vip_address}
+        public_address: ${_param:openstack_control_node01_address}
         novncproxy_port: 6080
-      vncproxy_url: http://${_param:cluster_vip_address}:6080
+      vncproxy_url: http://${_param:openstack_control_node01_address}:6080
       workers: 1
       notification:
         driver: messagingv2
diff --git a/classes/cluster/os_aio_ovs/openstack/init.yml b/classes/cluster/os_aio_ovs/openstack/init.yml
index 5226be4..6133471 100644
--- a/classes/cluster/os_aio_ovs/openstack/init.yml
+++ b/classes/cluster/os_aio_ovs/openstack/init.yml
@@ -1,16 +1,11 @@
 arameters:
   _param:
-    openstack_proxy_address: 172.16.10.121
-    openstack_proxy_node01_address: 172.16.10.121
-    openstack_control_address: 172.16.10.254
+    # openstack_proxy_address: 172.16.10.121
+    # openstack_proxy_node01_address: 172.16.10.121
     openstack_control_node01_address: 172.16.10.101
-    openstack_control_node02_address: 172.16.10.102
-    openstack_control_node03_address: 172.16.10.103
-    openstack_database_address: ${_param:openstack_control_address}
-    openstack_message_queue_address: ${_param:openstack_control_address}
+    openstack_database_address: ${_param:openstack_control_node01_address}
+    openstack_message_queue_address: ${_param:openstack_control_node01_address}
     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
-    openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
-    openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
 
     openstack_version: ocata
     apt_mk_version: nightly
@@ -18,7 +13,7 @@
     openstack_region: RegionOne
     admin_email: root@localhost
     cluster_public_protocol: http
-    cluster_public_host: 172.16.10.254
+    cluster_public_host: ${_param:openstack_control_node01_address}
     neutron_public_protocol: http
     neutron_control_dvr: False
     neutron_tenant_network_types: "flat,vxlan"
@@ -33,37 +28,33 @@
     galera_server_cluster_name: openstack_cluster
     galera_server_maintenance_password: workshop
     galera_server_admin_password: workshop
-    cluster_vip_address: 172.16.10.254
+#    cluster_vip_address: 172.16.10.254
     cluster_local_address: ${_param:single_address}
     cluster_node01_hostname: ctl01
     cluster_node01_address: 172.16.10.101
-    cluster_node02_hostname: ctl02
-    cluster_node02_address: 172.16.10.102
-    cluster_node03_hostname: ctl03
-    cluster_node03_address: 172.16.10.103
     rabbitmq_secret_key: workshop
     rabbitmq_admin_password: workshop
     rabbitmq_openstack_password: workshop
     rabbitmq_cold_password: workshop
     glance_version: ${_param:openstack_version}
-    glance_service_host: ${_param:cluster_vip_address}
+    glance_service_host: ${_param:openstack_control_node01_address}
     keystone_version: ${_param:openstack_version}
-    keystone_service_host: ${_param:cluster_vip_address}
+    keystone_service_host: ${_param:openstack_control_node01_address}
     heat_version: ${_param:openstack_version}
-    heat_service_host: ${_param:cluster_vip_address}
+    heat_service_host: ${_param:openstack_control_node01_address}
     heat_domain_admin_password: workshop
     ceilometer_version: ${_param:openstack_version}
     ceilometer_service_host: 172.16.10.108
     cinder_version: ${_param:openstack_version}
-    cinder_service_host: ${_param:cluster_vip_address}
+    cinder_service_host: ${_param:openstack_control_node01_address}
     ceilometer_graphite_publisher_host: 172.16.10.107
     ceilometer_graphite_publisher_port: 2013
     nova_version: ${_param:openstack_version}
-    nova_service_host: ${_param:cluster_vip_address}
-    nova_vncproxy_url: http://${_param:cluster_vip_address}:8060
+    nova_service_host: ${_param:openstack_control_node01_address}
+    nova_vncproxy_url: http://${_param:openstack_control_node01_address}:8060
     neutron_version: ${_param:openstack_version}
-    neutron_service_host: ${_param:cluster_vip_address}
-    glusterfs_service_host: ${_param:cluster_vip_address}
+    neutron_service_host: ${_param:openstack_control_node01_address}
+    glusterfs_service_host: ${_param:openstack_control_node01_address}
     metadata_password: password
     mysql_admin_user: root
     mysql_admin_password: workshop
@@ -88,7 +79,7 @@
     metadata_password: workshop
     horizon_version: ${_param:openstack_version}
     horizon_secret_key: opaesee8Que2yahJoh9fo0eefo1Aeyo6ahyei8zeiboh3aeth5loth7ieNa5xi5e
-    horizon_identity_host: ${_param:cluster_vip_address}
+    horizon_identity_host: ${_param:openstack_control_node01_address}
     horizon_identity_encryption: none
     horizon_identity_version: 2
     mongodb_server_replica_set: ceilometer
@@ -98,36 +89,11 @@
   linux:
     network:
       host:
-        prx:
-          address: ${_param:openstack_proxy_address}
-          names:
-          - prx
-          - prx.${_param:cluster_domain}
-        prx01:
-          address: ${_param:openstack_proxy_node01_address}
-          names:
-          - prx01
-          - prx01.${_param:cluster_domain}
-        ctl:
-          address: ${_param:openstack_control_address}
-          names:
-          - ctl
-          - ctl.${_param:cluster_domain}
         ctl01:
           address: ${_param:openstack_control_node01_address}
           names:
           - ctl01
           - ctl01.${_param:cluster_domain}
-        ctl02:
-          address: ${_param:openstack_control_node02_address}
-          names:
-          - ctl02
-          - ctl02.${_param:cluster_domain}
-        ctl03:
-          address: ${_param:openstack_control_node03_address}
-          names:
-          - ctl03
-          - ctl03.${_param:cluster_domain}
         gtw01:
           address: ${_param:openstack_gateway_address}
           names: