CORD-229 - updated to implement initial base switch provisioning

Change-Id: I3deca583dc2753e1a2c77629f1ee45f8b66223c8
diff --git a/roles/fabric-switch/tasks/ofdpa.yml b/roles/fabric-switch/tasks/ofdpa.yml
index 2c643e8..21af257 100644
--- a/roles/fabric-switch/tasks/ofdpa.yml
+++ b/roles/fabric-switch/tasks/ofdpa.yml
@@ -5,14 +5,37 @@
     validate_certs: false
     dest: /mnt/flash2/ofdpa-i.12.1.1_12.1.1%2Baccton1.7-1_amd64.deb
 
+- name: Verify Service Exists
+  stat:
+    path: /etc/init.d/ofdpa
+  register: ofdpa_stat
+  changed_when: false
+  failed_when: false
+
 - name: OpenFlow Agent Stopped
   service: name=ofdpa state=stopped
+  when: ofdpa_stat.stat.exists
+
+- name: Verify Distributeion Release File
+  stat:
+    path: /etc/lsb-release
+  register: lsb_stat
+  changed_when: false
+  failed_when: false
+
+- name: Verify Distribute Name
+  shell: grep -i ubuntu /etc/lsb-release | wc -l
+  register: dist
+  changed_when: false
+  failed_when: false
 
 - name: Openflow Agent
   apt: deb="/mnt/flash2/ofdpa-i.12.1.1_12.1.1%2Baccton1.7-1_amd64.deb" force=true
+  when: not lsb_stat.stat.exists or dist.stdout == "0"
 
 - name: OpenFlow Agent Started
   service: name=ofdpa state=started
+  when: not lsb_stat.stat.exists or dist.stdout == "0"
 
 - name: Mark Persist Openflow Agent
   command: persist /etc/accton/ofdpa.conf
diff --git a/roles/head-node/files/compute-node.yml b/roles/head-node/files/compute-node.yml
index 7fb41f0..4a6a50d 100644
--- a/roles/head-node/files/compute-node.yml
+++ b/roles/head-node/files/compute-node.yml
@@ -1,4 +1,4 @@
 - hosts: all
   remote_user: ubuntu
   roles:
-    - compute-node
+    - {{ provision.role }}
diff --git a/roles/head-node/files/compute-node.yml.j2 b/roles/head-node/files/compute-node.yml.j2
deleted file mode 100644
index 4a6a50d..0000000
--- a/roles/head-node/files/compute-node.yml.j2
+++ /dev/null
@@ -1,4 +0,0 @@
-- hosts: all
-  remote_user: ubuntu
-  roles:
-    - {{ provision.role }}
diff --git a/roles/head-node/files/do-switch b/roles/head-node/files/do-switch
new file mode 100755
index 0000000..27c6819
--- /dev/null
+++ b/roles/head-node/files/do-switch
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+ID=$1
+HOSTNAME=$2
+IP=$3
+MAC=$4
+ROLE=$5
+
+LOG=/etc/maas/ansible/logs/$ID.log
+
+echo "" >> $LOG
+echo "***** BEGIN *****" >> $LOG
+echo "PROVISION $ID $HOSTNAME $IP $MAC $ROLE" >> $LOG
+
+SKIP_TAGS=
+EXTRA_VARS=--extra-vars=ansible_ssh_pass=onl
+
+echo "ANSIBLE_ROLES_PATH=/etc/maas/ansible/roles ansible-playbook -i $IP, /etc/maas/ansible/switch-node.yml $SKIP_TAGS $EXTRA_VARS" >> $LOG
+ANSIBLE_ROLES_PATH=/etc/maas/ansible/roles ansible-playbook -i $IP, /etc/maas/ansible/switch-node.yml $SKIP_TAGS $EXTRA_VARS >> $LOG
+
diff --git a/roles/head-node/files/switch-node.yml b/roles/head-node/files/switch-node.yml
new file mode 100644
index 0000000..3539060
--- /dev/null
+++ b/roles/head-node/files/switch-node.yml
@@ -0,0 +1,4 @@
+- hosts: all
+  remote_user: root
+  roles:
+    - fabric-switch
diff --git a/roles/head-node/tasks/main.yml b/roles/head-node/tasks/main.yml
index d084a67..6735f20 100644
--- a/roles/head-node/tasks/main.yml
+++ b/roles/head-node/tasks/main.yml
@@ -26,11 +26,14 @@
 - name: Ensure Ansible Provisioning Script
   become: yes
   copy:
-    dest=/etc/maas/ansible/do-ansible
-    src=files/do-ansible
+    dest=/etc/maas/ansible/{{ item }}
+    src=files/{{ item }}
     owner=maas
     group=maas
     mode=0755
+  with_items:
+    - do-ansible
+    - do-switch
 
 - name: Ensure Provisioning Log Directory
   become: yes
@@ -44,8 +47,11 @@
 - name: Ensure Compute Node Playbook
   become: yes
   template:
-    src=files/compute-node.yml.j2
-    dest=/etc/maas/ansible/compute-node.yml
+    src=files/{{ item }}
+    dest=/etc/maas/ansible/{{ item }}
     owner=maas
     group=maas
     mode=0644
+  with_items:
+    - compute-node.yml
+    - switch-node.yml
diff --git a/roles/maas/templates/automation-compose.yml.j2 b/roles/maas/templates/automation-compose.yml.j2
index 5dc952b..40d7f98 100644
--- a/roles/maas/templates/automation-compose.yml.j2
+++ b/roles/maas/templates/automation-compose.yml.j2
@@ -42,6 +42,7 @@
   links:
     - provisioner
   environment:
+    - "SWITCHQ_SCRIPT=/etc/maas/ansible/do-switch"
     - "SWITCHQ_PROVISION_URL=http://provisioner:4243/provision/"
     - "SWITCHQ_PROVISION_TTL=0s"
     - "SWITCHQ_DEFAULT_ROLE=fabric-switch"