Create phoronix job for mosk-bm environment

Related-Prod: PROD-37294
Change-Id: Id9abf2499f985ca81e6571cf649b500f09ccd0be
diff --git a/jobs/pipelines/mosk/mosk-phoronix-bm.groovy b/jobs/pipelines/mosk/mosk-phoronix-bm.groovy
new file mode 100644
index 0000000..e2fb4cf
--- /dev/null
+++ b/jobs/pipelines/mosk/mosk-phoronix-bm.groovy
@@ -0,0 +1,68 @@
+@Library('tcp-qa')_

+

+import groovy.xml.XmlUtil

+

+common = new com.mirantis.mk.Common()

+shared = new com.mirantis.system_qa.SharedPipeline()

+

+NODE_LABEL = env.NODE_LABEL ?: "sre-team-infra"

+MAINTENANCE_TEAM_SSH_ID = env.MAINTENANCE_TEAM_SSH_ID ?: 'maintenance-team-ssh'

+//IPMI_CREDS = 'lab_engineer' // base bm lab

+seed_ext_ip = env.SEED_EXT_IP ?: '172.16.180.2'

+ssh_params = "-o ConnectTimeout=20 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"

+seed_cmd = "ssh ${ssh_params} root@${seed_ext_ip}"

+kubectl_openstack_cmd = "ssh ${ssh_params} root@${seed_ext_ip} /root/kaas-bootstrap/bin/kubectl --kubeconfig /root/child.kubeconfig -n openstack "

+connect_phoronix_string = ""

+phoronix_package_version = env.PHORONIX_PACKAGE ?: "phoronix-test-suite-10.8.4.tar.gz"

+phoronix_clients_count = env.PHORONIX_CLIENT_COUNT?: "4"

+

+

+timeout(time: 6, unit: 'HOURS') {

+  timestamps {

+    node ("${NODE_LABEL}") {

+      checkout scm

+      shared.update_working_dir()

+      sshagent(credentials: ['maintenance-team-ssh']) {

+        stage("Phoronix prepare server"){

+            sh "${seed_cmd} sudo apt-get install php-cli php-xml php-sqlite3 php-zip sqlite3 -y"

+            sh "${seed_cmd} wget -N https://phoronix-test-suite.com/releases/${phoronix_package_version}"

+            sh "${seed_cmd} tar -zxf ${phoronix_package_version} >> extract_${phoronix_package_version}.log"

+            sh "${seed_cmd} \"cd phoronix-test-suite; bash install-sh\""

+            sh "${seed_cmd} cp phoronix-test-suite/deploy/phoromatic-systemd/phoromatic-server.service /etc/systemd/system"

+            sh "${seed_cmd} cp phoronix-test-suite/deploy/phoromatic-systemd/phoronix-result-server.service /etc/systemd/system"

+            sh "${seed_cmd} phoronix-test-suite system-info"

+            sh "${seed_cmd} \"sed -i 's/<RemoteAccessPort>RANDOM/<RemoteAccessPort>8877/' /etc/phoronix-test-suite.xml\""

+            sh "${seed_cmd} systemctl daemon-reload"

+            sh "${seed_cmd} systemctl start phoromatic-server.service"

+            sh "${seed_cmd} systemctl start phoronix-result-server.service"

+            sh "${seed_cmd} \"curl --data 'seed_accountid=&register_username=sustaining&register_password=sustaining&register_password_confirm=sustaining&register_email=drivetrain-eng%40mirantis.com' http://172.16.180.2:8877/?register\""

+            account_id_cmd = "sqlite3 /var/lib/phoronix-test-suite/phoromatic/phoromatic.db 'SELECT AccountID FROM 'phoromatic_account_settings' LIMIT 1;'"

+            account_id = sh(returnStdout: true, script: "${seed_cmd} \"${account_id_cmd}\"").trim()

+        }

+        check_clouds_yaml = sh(returnStdout: true, script: "${seed_cmd} \"test -f /root/clouds.yaml && echo true || echo false\"" ).trim()

+        if(check_clouds_yaml != 'true'){

+          stage("Openstack client prepare"){

+            sh """

+              ${seed_cmd} \"source bm_mcc_mosk/utils/openstack_client_activate.sh;

+              mkdir -p ~/.config/openstack;

+              export KUBECONFIG=/root/child.kubeconfig;

+              /root/kaas-bootstrap/bin/kubectl -n openstack-external get secrets openstack-identity-credentials -o jsonpath='{.data.clouds\\.yaml}' | base64 -d > /root/clouds.yaml;

+              ln -sf /root/clouds.yaml /root/.config/openstack/clouds.yaml\"

+            """

+          }

+        }

+        stage("Create instances Phoronix clients "){

+          phoronix_client_yaml = "bm_mcc_mosk/child/openstack_workload/phoronix_client/phoronix-client.yml"

+          create_client_cmd = """

+            source bm_mcc_mosk/utils/openstack_client_activate.sh;

+            export KUBECONFIG=/root/child.kubeconfig;

+            openstack --insecure flavor create --public m1.p_test --ram 8192 --disk 5 --vcpus 4;

+            openstack --insecure stack create -t ${phoronix_client_yaml} --parameter client_count=${phoronix_clients_count} --parameter phoronix_account_id=${account_id} --parameter phoronix_version=${phoronix_package_version} phoronix_client --wait

+          """

+          sh "${seed_cmd} \"${create_client_cmd}\"" //create clients stack

+          sh "${seed_cmd} \"source bm_mcc_mosk/utils/openstack_client_activate.sh; openstack --insecure stack list --property 'Stack Name'=phoronix_client\"" //view stack status

+        }

+      } //sshagent

+    } //node

+  } //timestamps

+} //timeout
\ No newline at end of file
diff --git a/jobs/project.yaml b/jobs/project.yaml
index 1962211..7d4227f 100644
--- a/jobs/project.yaml
+++ b/jobs/project.yaml
@@ -63,6 +63,7 @@
       - swarm-create-cfg-config-drive-jjb
       - mosk-tempest
       - mosk-archive-artifacts
+      - mosk-phoronix
       # - mark-reports - can't moved to JJB, a lot of parameters is not supported like Inject environment variables
       # - diff_params_reclass_system - can't moved to JJB, unsupported parameters
       # - diff_params_reclass_system - can't moved to JJB, unsupported parameters
diff --git a/jobs/templates/mosk-phoronix.yml b/jobs/templates/mosk-phoronix.yml
new file mode 100644
index 0000000..e9ca98f
--- /dev/null
+++ b/jobs/templates/mosk-phoronix.yml
@@ -0,0 +1,60 @@
+- job-template:

+    project-type: pipeline

+    description: '{job-description}'

+    concurrent: true

+    disabled: false

+    name: mosk-phoronix

+    parameters:

+    - string:

+        default: "sre-team-infra"

+        description: ''

+        name: NODE_LABEL

+        trim: 'false'

+    - string:

+        name: SEED_EXT_IP

+        description: ''

+        trim: 'false'

+        default: '172.16.180.2'

+    - string:

+        default: bm-mcc-mosk

+        description: ''

+        name: ENV_NAME

+        trim: 'false'

+    - string:

+        default: ''

+        description: |-

+          Example: refs/changes/89/411189/36

+          (for now - only one reference allowed)

+        name: TCP_QA_REFS

+        trim: 'false'

+    - string:

+          default: 'phoronix-test-suite-10.8.4.tar.gz'

+          description: |-

+              Example: phoronix-test-suite-10.8.4.tar.gz

+              show version from https://phoronix-test-suite.com/releases/

+          name: PHORONIX_PACKAGE

+          trim: 'false'

+    - string:

+          default: '4'

+          description: |-

+              Example: 1-7

+              How many phoronix clients do you need to create?

+          name: PHORONIX_PACKAGE

+          trim: 'false'

+    - text:

+        default: ''

+        description: |-

+          Add env vars for deploy and testing

+        name: EXTRA_VARS

+        trim: 'false'

+    pipeline-scm:

+      lightweight-checkout: false

+      scm:

+      - git:

+          branches:

+          - FETCH_HEAD

+          refspec: ${{TCP_QA_REFS}}

+          url: https://gerrit.mcp.mirantis.com/mcp/tcp-qa

+      script-path: jobs/pipelines/mosk/mosk-phoronix-bm.groovy

+    logrotate:

+      daysToKeep: 365

diff --git a/jobs/view.yaml b/jobs/view.yaml
index e7ecb2a..cbf9518 100644
--- a/jobs/view.yaml
+++ b/jobs/view.yaml
@@ -201,6 +201,7 @@
     job-name:
       - bm-mcc-mosk-base
       - mosk-tempest
+      - mosk-phoronix
       - mosk-archive-artifacts
     columns:
       - status