Create phoronix job for mosk-bm environment

Related-Prod: PROD-37294
Change-Id: Id9abf2499f985ca81e6571cf649b500f09ccd0be
diff --git a/bm_mcc_mosk/child/openstack_workload/phoronix_client/client.yaml b/bm_mcc_mosk/child/openstack_workload/phoronix_client/client.yaml
new file mode 100644
index 0000000..2e6ede6
--- /dev/null
+++ b/bm_mcc_mosk/child/openstack_workload/phoronix_client/client.yaml
@@ -0,0 +1,80 @@
+heat_template_version: 2013-05-23

+

+parameters:

+  image:

+    type: string

+  name:

+    type: string

+  flavor:

+    type: string

+  public_net_id:

+    type: string

+  private_net_id:

+    type: string

+  instance_boot_timeout:

+    type: number

+    default: 600

+  phoronix_account_id:

+    type: string

+  phoronix_server_ip:

+    type: string

+  phoronix_server_port:

+    type: number

+  phoronix_version:

+    type: string

+  private_subnet:

+    type: string

+  security_group:

+    type: string

+

+

+resources:

+  instance_wait_handle:

+    type: OS::Heat::WaitConditionHandle

+

+  instance_wait_condition:

+    type: OS::Heat::WaitCondition

+    depends_on: server

+    properties:

+      handle: { get_resource: instance_wait_handle }

+      timeout: { get_param: instance_boot_timeout }

+

+  server:

+    type: OS::Nova::Server

+    properties:

+      name: { get_param: name }

+      image: { get_param: image }

+      flavor: { get_param: flavor }

+      networks:

+        - port: { get_resource: server_port }

+      user_data_format: RAW

+      user_data:

+        str_replace:

+          template: { get_file: client_userdata.yaml }

+          params:

+            wc_notify: { get_attr: [instance_wait_handle, curl_cli] }

+            $phoronix_account_id: { get_param: phoronix_account_id }

+            $phoronix_server_ip: { get_param: phoronix_server_ip }

+            $phoronix_server_port: { get_param: phoronix_server_port }

+            $phoronix_version: { get_param: phoronix_version }

+

+  server_port:

+    type: OS::Neutron::Port

+    properties:

+      network_id: { get_param: private_net_id }

+      fixed_ips:

+        - subnet_id: { get_param: private_subnet }

+      security_groups:

+        - { get_param: security_group }

+

+  server_floating_ip:

+    type: OS::Neutron::FloatingIP

+    properties:

+      floating_network_id: { get_param: public_net_id }

+      port_id: { get_resource: server_port }

+

+

+outputs:

+  floating_ip:

+      description: Floating IP

+      value: { get_attr: [ server_floating_ip, floating_ip_address ] }
\ No newline at end of file
diff --git a/bm_mcc_mosk/child/openstack_workload/phoronix_client/client_userdata.yaml b/bm_mcc_mosk/child/openstack_workload/phoronix_client/client_userdata.yaml
new file mode 100644
index 0000000..64b9b6a
--- /dev/null
+++ b/bm_mcc_mosk/child/openstack_workload/phoronix_client/client_userdata.yaml
@@ -0,0 +1,88 @@
+#cloud-config

+output : { all : '| tee -a /var/log/cloud-init-output.log' }

+

+ssh_pwauth: True

+

+disable_root: false

+chpasswd:

+  list: |

+    ubuntu:qalab

+    root:r00tme

+  expire: False

+

+ntp:

+  enabled: true

+  servers:

+    - 0.pool.ntp.org

+    - 1.pool.ntp.org

+    - 2.pool.ntp.org

+    - 3.pool.ntp.org

+

+# this would disable apt:submodule to refresh already overwritten (below) sources.list.

+apt:

+  preserve_sources_list: true

+package_update: false

+package_upgrade: false

+package_reboot_if_required: false

+

+instance_boot:

+  - &instance_boot |

+    echo "Phoronix client install and configuration"

+    apt-get update

+    apt-get install php-cli php-xml php-sqlite3 php-zip -y

+    wget https://phoronix-test-suite.com/releases/$phoronix_version

+    tar -zxvf $phoronix_version

+    cd phoronix-test-suite

+    bash install-sh

+    systemctl daemon-reload

+    systemctl start phoromatic-client.service

+    systemctl status phoromatic-client.service

+    systemctl enable phoromatic-server.service

+

+    echo "Checking connectivity to mirror.mirantis.com"

+    wait_time=0

+    until $( timeout 30s curl -s mirror.mirantis.com >> /dev/null ); do

+      if [[ $wait_time -gt 5 ]]; then

+        echo "FAILURE: unable to access mirror.mirantis.com (network check)"

+        wait_condition_send "FAILURE" "mirror.mirantis.com is unreachable"

+        exit 1

+      fi

+      sleep $(( 5 * wait_time++ ))

+    done

+

+    echo "Sending wait_condition signal"

+    wc_notify --data-binary '{"status": "SUCCESS"}'

+

+runcmd:

+  - [bash, -cex, *instance_boot]

+

+write_files:

+  - path: /root/.ssh/authorized_keys

+    content: |

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeGiSOs0zAwcxuc9y6BzidYFXQXLOLcBKSoW1tPYJ+bVGRwNRVh63/+/X+eOPbBp6xTNNHVyOpYHt1WUbIHsAqAx/XbzBp+j3/4+8+ucvWR3X9TTxK7Q+oB3SSy2iEeimiJmxfjiHu1hfcgN8L9YvXVquGC/EZbk/r27j7Gcxli7zesr9/kBBhigDSQeehJBJZ0ux3luVkjWSDYTeKqZhNNPFoD6eWmOfsAKNMhe/8IRD9e0zY4MsELi1tZl2zoQ69249e4M1aCuGxm+t+tHLzywX0tVZmM1yX7TDuszHbiii8HrjNwB1/K80HRwRrwVIne9P7wFSlC2exLkdfWd2D vkhlyunev

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDci6MBY68s3FJ9V1OP5vdtVo/daJnkNXCPSPYbCX8/d0E3UJKgE81YvsxfuKp3r1rUNwTuGnkq+VUWcbIgpQNy69OuKxQkoGsRgYTA8n4ZZcuWz+dVenP90xLYHcnyACg63HUVEp5foLvu1WzOdH2A4bHmsl0ePM5IdnFyToHj+Nhwz1NSvbK1OkQHoEcIbkbIkIa/kWY2mgEIIUgb9YmaCI96eiVtQpFPQ4k7hpdrUAkG4e0jT8JA3zQoB++S12p0d0K3SQtJ3+YATUm+rKnHchHZ/uEAgBgoOLiu99p7Aiie76jlGxZp8A/hPqU/zS61z7ER4lJeyR/pXh53Ja+1 maintenance-ci

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXWwy6p3t4AGvaCtFDJxqKZiPDotJnbu2IKg2p7sl7YXQw+APLKk9maHyUehQQuGzidgBZpmBOMAXENcO1FGFj56cnp4W9tldTiRq1bWcUMq42wfNwIToP6dAXj5ZyhL+UZj1GsCThSasDhFe4Xife0cn69KHJqtmahApQK6D7tpZr2UNDYNWh/2JIrUOcJXZU+BqNg7zm1KNb6e9lKXL6KLDeaCiQ0bj+L/unqepLdg26eO7AQSZ/rt2qAnbfcquozECtDhT4cbK8q9xJODlJQ3eQGOgTH3m8jGijL+3UdPFUzbo4KwSK4V9FmB711HVBCQM4nlH9zumIUSxutnkd rlubianyi@rlubianyi-pc

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhZxqF+NSuP+Dr2nmGHf4NIpH2xWSmq+UE/HGP6j81rKSBZeRb2SuRXLtLVh3NZ+3GLa4UQGvedcnsqzgvSt05LYujloHnLxIsrsOWbLxOcdUYkorhXenGKBxKopwViRNV2PovMAnwyZ27GkXH8RQ52XISOdTIIV7r8M3kLpxCor2jHnOzJOcr7rhLeSFTK5zw6//T3S+IOQ5/HEs+8NK1sNw2lxBTuk+dAydiaCsQqm4GMl5vZSy0j7cnsy+lq69zN2/Bi4JzKLDKF2ap4zDh/ELhUBoQhh12T0djFV9Qv9fTWI4LUW8cVyqxbfreJrZqSAyMgSRrGSUBclFTmn5Z pavel@pavel-All-Series

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqfNIy3WuxzRzOY/GBNGOnP5UrCFWZ8uMzW6hEl4wgIEYYIcv8o+C1/hvrfHimG/I/rAwYRS6Dx0bZ7m49zATNxe+EVer3BV63ru34Hzel/XxxyD34ULmrDgvP3olaAKFI17gVOFQ7hCBzDRp3s4YN3ojQspPyeiO+Jt8OwVomxJWgLauAHhl7Z/XPVHpT/fssJGG/eC4oOz4RZ4jAk0BH3Yl8s63grfwrgB79H/+nr0UvBdTkBn3T5WiC4gxnm+jQQwci7/BLQsg1Z3OykfTuyftIexNyVVy/SmdsGi37RJGFKRMMovoZx+261JgaHWBoHqBJa5UpV2usi9z3Py2z avgoor@MacBook-Pro-Denis.local

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjL5X8RdcYhxsd6j43p5Clk8hzq/IjfRvekD+xPy6DhD2kyKTnAR1FjtTeFtH1mC+lD+nUnswR1A5dR+5eHemKxz0IkWuDeL8+YdMpOy+bbQyA+tlTukGriPcIUCHOxn7u2u4zV4a+AcZha5obR1zv91nkGaWAfbjDHTl2f4IB3Rx3rJwd/3r7ge1MA0qIRqr1k+FY99477zd+nbYVP8n84+uY7DoaFHtzEWTXqc2CwdEO+5uzMzdWWRUwU1vwe4Ac9i1NtsA33pa1VVMKny2S2k2JcvNpkKDo7x4ezH2fOuHiDTOk4CqUjg7TlpsdMbT8ugj5YE8H/O3Kh25t3Fkn maintenance-ci-robot

+      ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp

+

+

+  - path: /etc/systemd/system/phoromatic-client.service

+    content: |

+      [Unit]

+      Description=Phoronix Test Suite Phoromatic Client

+      After=syslog.target network-online.target

+      Documentation=man:phoronix-test-suite(1)

+      

+      [Service]

+      TimeoutStartSec=300

+      ExecStart=/usr/bin/phoronix-test-suite phoromatic.connect $phoronix_server_ip:$phoronix_server_port/$phoronix_account_id

+      Environment=DISPLAY=:0

+      

+      [Install]

+      WantedBy=multi-user.target

+

+

+

+

diff --git a/bm_mcc_mosk/child/openstack_workload/phoronix_client/phoronix-client.yml b/bm_mcc_mosk/child/openstack_workload/phoronix_client/phoronix-client.yml
new file mode 100644
index 0000000..9060485
--- /dev/null
+++ b/bm_mcc_mosk/child/openstack_workload/phoronix_client/phoronix-client.yml
@@ -0,0 +1,97 @@
+heat_template_version: 2017-09-01
+
+parameters:
+  image_id:
+    type: string
+    description: Image to be used. Check all available options in Horizon dashboard or, with CLI, use openstack image list command.
+    default: Ubuntu-18.04
+  public_net:
+    type: string
+    default: public
+    description: Id of the public network for the compute server
+  phoronix_account_id:
+    type: string
+    description: Phoronix server id. Need for automatic connection
+    default: ''
+  phoronix_server_ip:
+    type: string
+    default: '172.16.180.2'
+  phoronix_server_port:
+    type: number
+    default: 8877
+  client_count:
+    type: number
+    default: 5
+  phoronix_version:
+    type: string
+    default: 'phoronix-test-suite-10.8.4.tar.gz'
+
+resources:
+  security_group:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      rules: [
+        { direction: ingress,
+          remote_ip_prefix: 0.0.0.0/0,
+          protocol: tcp,
+          port_range_min: 1,
+          port_range_max: 65535 },
+        { direction: ingress,
+          remote_ip_prefix: 0.0.0.0/0,
+          protocol: udp,
+          port_range_min: 1,
+          port_range_max: 65535 },
+        { remote_ip_prefix: 0.0.0.0/0,
+          protocol: icmp,
+          direction: ingress } ]
+
+  private_net:
+    type: OS::Neutron::Net
+    properties:
+      value_specs: { mtu: 1500 }
+
+  private_subnet:
+    type: OS::Neutron::Subnet
+    properties:
+      network_id: { get_resource: private_net }
+      cidr: 10.10.0.0/24
+      dns_nameservers:
+        - 172.18.176.6
+        - 172.18.224.6
+
+  router:
+    type: OS::Neutron::Router
+    properties:
+      external_gateway_info:
+        network: { get_param: public_net }
+
+  router_interface:
+    type: OS::Neutron::RouterInterface
+    properties:
+      router_id: { get_resource: router }
+      subnet_id: { get_resource: private_subnet }
+
+  Group_of_VMs:
+    type: OS::Heat::ResourceGroup
+    properties:
+      count: { get_param: client_count }
+      resource_def:
+        type: client.yaml
+        properties:
+          name: phoronix-client%index%
+          flavor: m1.p_test
+          image: { get_param: image_id }
+          private_net_id: { get_resource: private_net }
+          public_net_id: { get_param: public_net}
+          key_name: ucp_key
+          phoronix_account_id: { get_param: phoronix_account_id }
+          phoronix_server_ip: { get_param: phoronix_server_ip }
+          phoronix_server_port: { get_param: phoronix_server_port }
+          phoronix_version: { get_param: phoronix_version }
+          private_subnet: { get_resource: private_subnet }
+          security_group: { get_resource: security_group }
+
+outputs:
+  SERVER_DETAILS:
+    description: Shows details of all virtual servers.
+    value: { get_attr: [ Group_of_VMs, show ] }
\ No newline at end of file
diff --git a/bm_mcc_mosk/utils/openstack_client_activate.sh b/bm_mcc_mosk/utils/openstack_client_activate.sh
new file mode 100644
index 0000000..779beec
--- /dev/null
+++ b/bm_mcc_mosk/utils/openstack_client_activate.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+if [ ! -d $PWD/openstack_venv ]; then
+  virtualenv openstack_venv
+  . $PWD/openstack_venv/bin/activate
+  pip install python-openstackclient python-heatclient keystoneauth1 python-glanceclient
+else
+  . $PWD/openstack_venv/bin/activate
+fi
+export OS_CLOUD=admin
\ No newline at end of file
diff --git a/bm_mcc_mosk/utils/phoronix/mykey.pub b/bm_mcc_mosk/utils/phoronix/mykey.pub
new file mode 100644
index 0000000..e6354bd
--- /dev/null
+++ b/bm_mcc_mosk/utils/phoronix/mykey.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp0evjOaK8c8SKYK4r2+0BN7g+8YSvQ2n8nFgOURCyvkJqOHi1qPGZmuN0CclYVdVuZiXbWw3VxRbSW3EH736VzgY1U0JmoTiSamzLHaWsXvEIW8VCi7boli539QJP0ikJiBaNAgZILyCrVPN+A6mfqtacs1KXdZ0zlMq1BPtFciR1JTCRcVs5vP2Wwz5QtY2jMIh3aiwkePjMTQPcfmh1TkOlxYu5IbQyZ3G1ahA0mNKI9a0dtF282av/F6pwB/N1R1nEZ/9VtcN2I1mf1NW/tTHEEcTzXYo1R/8K9vlqAN8QvvGLZtZduGviNVNoNWvoxaXxDt8CPv2B2NCdQFZp