Added full automation to scripts 18/1218/1
authorNauman Ahad <Nauman_Ahad@dell.com>
Tue, 18 Aug 2015 14:07:04 +0000 (07:07 -0700)
committerNauman Ahad <Nauman_Ahad@dell.com>
Tue, 18 Aug 2015 14:07:04 +0000 (07:07 -0700)
Introduced Config.yaml file for each test case. User can modify these
to enter the details for the machines on which to run benchmarks.
This also leads to automation.

JIRA: QTIP-6

Change-Id: Ifecab13968148cbd9d8f352309be77b8ca2d30f2
Signed-off-by: Nauman Ahad <Nauman_Ahad@dell.com>
QTIP.sh
README
Test-cases/Bare_vs_Bare/Config.yaml [new file with mode: 0644]
Test-cases/Bare_vs_VM/Config.yaml [new file with mode: 0644]
Test-cases/Bare_vs_VM/SampleHeat.yaml [new file with mode: 0644]
clean.sh

diff --git a/QTIP.sh b/QTIP.sh
index dcefb29..2a31342 100755 (executable)
--- a/QTIP.sh
+++ b/QTIP.sh
@@ -1,6 +1,6 @@
 #! /bin/bash
 
-#DIR1= $PWD
+WDIR=$PWD
 
 
 
@@ -35,6 +35,26 @@ function Call_Test {
 
 } 
 
+function Fetch_VM_Image {
+    
+    mkdir $PWD/Temp_Image
+    
+   file="$PWD/Temp_Image/Cent7Modified.qcow2"
+   if [ -f "$file" ]
+   then
+       echo "Image already downdloaded"
+   else
+       echo "Fetching QTIP_VM Image"
+       cd $PWD/Temp_Image && wget https://www.dropbox.com/s/3uswrydrvhxw3qm/Cent7Modified.qcow2
+       echo "Uploading image to glance"  
+  glance image-create --name "QTIP_CentOS" --is-public true --disk-format qcow2 \
+          --container-format bare \
+          --file $PWD/Temp_Image/Cent7Modified.qcow2
+   
+    
+   fi
+   cd $WDIR
+}
 mkdir $PWD/results
 case "$1" in
           -h)
@@ -43,22 +63,25 @@ case "$1" in
            ;;
           First)
              
-             echo "Enter the IP of the machine to be teststed for comparison to the VM"
-             read ipvar
-             echo "Enter the password of this machine"
-             read -s  passwordvar
-             expect  $PWD/data/ssh_exch.exp $ipvar $passwordvarp
-             heat stack-create exp2 -f $PWD/Test-cases/SampleHeat.yaml
+           Fetch_VM_Image
+
+           ipvar=$(cat $PWD/Test-cases/Bare_vs_VM/Config.yaml | grep "Machine_1_IP" | awk '{print$2;}')
+
             
-             VAR1=$( heat stack-show exp2 | grep "stack_status_reason" | awk '{print $6;}')
-             echo $VAR1
-             while [  "$VAR1" != completed ]
+           passwordvar=$(cat $PWD/Test-cases/Bare_vs_VM/Config.yaml | grep "Machine_1_Password" | awk '{print$2;}')
+
+           expect  $PWD/data/ssh_exch.exp $ipvar $passwordvar
+           heat stack-create exp2 -f $PWD/Test-cases/Bare_vs_VM/SampleHeat.yaml
+           sleep 3   
+          VAR1=$( heat stack-show exp2 | grep "stack_status_reason" | awk '{print $6;}')
+           echo $VAR1
+           while [  "$VAR1" != completed ]
              do
              echo VM is coming up
              VAR1=$( heat stack-show exp2 | grep "stack_status_reason" | awk '{print $6;}')
             #echo $VAR1
              done
-             echo VM Created
+           echo VM Created
 
             if [ "$VAR1" == "completed" ]; then
               VAR=$( heat stack-show exp2 | grep "output_value" | awk '{print $4;}'| cut -d '"' -f2)
@@ -87,19 +110,17 @@ case "$1" in
 
                fi            
 
-             ;;
+             ;; 
              Second)
-             echo Second test to be written below
-             echo "Enter the IP of the first machine to be benchmarked for comparison"
-             read ipvar
-             echo "Enter the password of this machine"
-             read -s  passwordvar
+            
+             ipvar=$(cat $PWD/Test-cases/Bare_vs_Bare/Config.yaml | grep "Machine_1_IP" | awk '{print$2;}')
+             echo $ipvar
+             passwordvar=$(cat $PWD/Test-cases/Bare_vs_Bare/Config.yaml | grep "Machine_1_IP_Password" | awk '{print$2;}')
+             echo $passwordvar
              expect  $PWD/data/ssh_exch.exp $ipvar $passwordvar
              sed -i '/demo1/a '$ipvar'' /etc/ansible/hosts
-             echo "Enter the IP of the second machine to be benchmarked for comparison"
-             read ipvar
-             echo "Enter the password of this machine"
-             read -s  passwordvar
+             ipvar=$(cat $PWD/Test-cases/Bare_vs_Bare/Config.yaml | grep "Machine_2_IP" | awk '{print$2;}')
+             passwordvar=$(cat $PWD/Test-cases/Bare_vs_Bare/Config.yaml | grep "Machine_2_IP_Password" | awk '{print$2;}')
              expect  $PWD/data/ssh_exch.exp $ipvar $passwordvar
              sed -i '/demo1/a '$ipvar'' /etc/ansible/hosts
              Call_Test $2
@@ -109,8 +130,8 @@ case "$1" in
              ;;
             
              *)
-             echo Incorrect Arguments passed to the script. Run script with -h for more helo
-              
+             echo Incorrect Arguments passed to the script. Run script with -h for more help
+             ;;   
 esac
 
 
diff --git a/README b/README
index 0303342..0f00747 100644 (file)
--- a/README
+++ b/README
@@ -37,7 +37,11 @@ Requirments:
 2. Python 2.7
 
 
+Configuring Test Cases:
 
+Test cases can be found within the Test-cases directory.
+For each Test case, a Config.yaml file contains the details for the machines upon which the benchmarks would run.
+Edit the IP and the Password fields within the files for the machines on which  the benchmark is to run.
 A robust framework that would allow to include more tests would be included within the future
 
 
diff --git a/Test-cases/Bare_vs_Bare/Config.yaml b/Test-cases/Bare_vs_Bare/Config.yaml
new file mode 100644 (file)
index 0000000..6612cbd
--- /dev/null
@@ -0,0 +1,4 @@
+Machine_1_IP: 172.18.0.17
+Machine_1_Password: Op3nStack
+Machine_2_IP: 172.18.0.16
+Machine_2_Password: Op3nStack
diff --git a/Test-cases/Bare_vs_VM/Config.yaml b/Test-cases/Bare_vs_VM/Config.yaml
new file mode 100644 (file)
index 0000000..e410a63
--- /dev/null
@@ -0,0 +1,2 @@
+Machine_1_IP: 172.18.0.17
+Machine_1_Password: Op3nStack
diff --git a/Test-cases/Bare_vs_VM/SampleHeat.yaml b/Test-cases/Bare_vs_VM/SampleHeat.yaml
new file mode 100644 (file)
index 0000000..6ee76ac
--- /dev/null
@@ -0,0 +1,93 @@
+  heat_template_version: 2014-10-16
+
+  description: Test10
+  
+  parameters:
+
+    public_network:
+      type: string
+      label: Public Network name or ID
+      description: Public network with floating IPs
+      default: "provider_network"
+
+    private_net_name:
+      type: string
+      default: "private_network"
+
+    availability_zone:
+      type: string
+      description: The Availability Zone to launch the instance.
+      default: compute1
+  
+  resources:
+
+    private_network:
+      type: OS::Neutron::Net
+      
+
+    private_subnet:
+      type: OS::Neutron::Subnet
+      properties:
+        network_id: { get_resource: private_network }
+        cidr: 10.10.17.0/24
+        dns_nameservers:
+          - 8.8.8.8
+    
+    router_1:
+      type: OS::Neutron::Router
+      properties:
+        external_gateway_info:
+          network: { get_param: public_network  }
+
+    router_interface:
+      type: OS::Neutron::RouterInterface
+      properties:
+        router_id: { get_resource: router_1 } 
+        subnet: { get_resource: private_subnet }
+
+    public_port:
+      type: OS::Neutron::Port
+      properties:
+        network: { get_resource: private_network }
+        security_groups: [{ get_resource: demo1_security_Group }]
+
+    floating_ip:
+      type: OS::Neutron::FloatingIP
+      properties:
+        floating_network: { get_param: public_network }
+     
+    floating_ip_assoc:
+      type: OS::Neutron::FloatingIPAssociation
+      properties:
+       floatingip_id: { get_resource: floating_ip }
+       port_id: { get_resource: public_port }
+
+    demo1_security_Group:
+      type: OS::Neutron::SecurityGroup
+      properties:
+        name: demo1_security_Group
+        rules:
+          - protocol: tcp
+            port_range_min: 22
+            port_range_max: 22
+          - protocol: icmp    
+  
+    my_instance:
+      type: OS::Nova::Server
+      properties:
+        image: QTIP_CentOS7
+        flavor: m1.large
+        availability_zone: { get_param: availability_zone }
+        networks:
+          - port: { get_resource: public_port }
+        
+
+
+  outputs:
+   instance_ip:
+     description: IP address of the instance
+     value: { get_attr: [floating_ip, floating_ip_address] }
+   
+
+
+
index 69aab1b..77cc346 100755 (executable)
--- a/clean.sh
+++ b/clean.sh
@@ -1,6 +1,6 @@
 #! /bin/bash
 echo cleaning Ip
 
-sed -i -e '/demo1/{n;N;N;N;N;N;d}' /etc/ansible/hosts
+sed -i -e '/demo1/{n;N;d;}' /etc/ansible/hosts
 neutron floatingip-delete $(neutron floatingip-list| grep "17" | awk '{print $2;}')
 heat stack-delete exp2