blob: e2fb4cff06d29992dc66b8815348a5750c12a53c [file] [log] [blame]
Pavel Glazovc48278e2024-10-23 15:21:05 +04001@Library('tcp-qa')_
2
3import groovy.xml.XmlUtil
4
5common = new com.mirantis.mk.Common()
6shared = new com.mirantis.system_qa.SharedPipeline()
7
8NODE_LABEL = env.NODE_LABEL ?: "sre-team-infra"
9MAINTENANCE_TEAM_SSH_ID = env.MAINTENANCE_TEAM_SSH_ID ?: 'maintenance-team-ssh'
10//IPMI_CREDS = 'lab_engineer' // base bm lab
11seed_ext_ip = env.SEED_EXT_IP ?: '172.16.180.2'
12ssh_params = "-o ConnectTimeout=20 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
13seed_cmd = "ssh ${ssh_params} root@${seed_ext_ip}"
14kubectl_openstack_cmd = "ssh ${ssh_params} root@${seed_ext_ip} /root/kaas-bootstrap/bin/kubectl --kubeconfig /root/child.kubeconfig -n openstack "
15connect_phoronix_string = ""
16phoronix_package_version = env.PHORONIX_PACKAGE ?: "phoronix-test-suite-10.8.4.tar.gz"
17phoronix_clients_count = env.PHORONIX_CLIENT_COUNT?: "4"
18
19
20timeout(time: 6, unit: 'HOURS') {
21 timestamps {
22 node ("${NODE_LABEL}") {
23 checkout scm
24 shared.update_working_dir()
25 sshagent(credentials: ['maintenance-team-ssh']) {
26 stage("Phoronix prepare server"){
27 sh "${seed_cmd} sudo apt-get install php-cli php-xml php-sqlite3 php-zip sqlite3 -y"
28 sh "${seed_cmd} wget -N https://phoronix-test-suite.com/releases/${phoronix_package_version}"
29 sh "${seed_cmd} tar -zxf ${phoronix_package_version} >> extract_${phoronix_package_version}.log"
30 sh "${seed_cmd} \"cd phoronix-test-suite; bash install-sh\""
31 sh "${seed_cmd} cp phoronix-test-suite/deploy/phoromatic-systemd/phoromatic-server.service /etc/systemd/system"
32 sh "${seed_cmd} cp phoronix-test-suite/deploy/phoromatic-systemd/phoronix-result-server.service /etc/systemd/system"
33 sh "${seed_cmd} phoronix-test-suite system-info"
34 sh "${seed_cmd} \"sed -i 's/<RemoteAccessPort>RANDOM/<RemoteAccessPort>8877/' /etc/phoronix-test-suite.xml\""
35 sh "${seed_cmd} systemctl daemon-reload"
36 sh "${seed_cmd} systemctl start phoromatic-server.service"
37 sh "${seed_cmd} systemctl start phoronix-result-server.service"
38 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\""
39 account_id_cmd = "sqlite3 /var/lib/phoronix-test-suite/phoromatic/phoromatic.db 'SELECT AccountID FROM 'phoromatic_account_settings' LIMIT 1;'"
40 account_id = sh(returnStdout: true, script: "${seed_cmd} \"${account_id_cmd}\"").trim()
41 }
42 check_clouds_yaml = sh(returnStdout: true, script: "${seed_cmd} \"test -f /root/clouds.yaml && echo true || echo false\"" ).trim()
43 if(check_clouds_yaml != 'true'){
44 stage("Openstack client prepare"){
45 sh """
46 ${seed_cmd} \"source bm_mcc_mosk/utils/openstack_client_activate.sh;
47 mkdir -p ~/.config/openstack;
48 export KUBECONFIG=/root/child.kubeconfig;
49 /root/kaas-bootstrap/bin/kubectl -n openstack-external get secrets openstack-identity-credentials -o jsonpath='{.data.clouds\\.yaml}' | base64 -d > /root/clouds.yaml;
50 ln -sf /root/clouds.yaml /root/.config/openstack/clouds.yaml\"
51 """
52 }
53 }
54 stage("Create instances Phoronix clients "){
55 phoronix_client_yaml = "bm_mcc_mosk/child/openstack_workload/phoronix_client/phoronix-client.yml"
56 create_client_cmd = """
57 source bm_mcc_mosk/utils/openstack_client_activate.sh;
58 export KUBECONFIG=/root/child.kubeconfig;
59 openstack --insecure flavor create --public m1.p_test --ram 8192 --disk 5 --vcpus 4;
60 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
61 """
62 sh "${seed_cmd} \"${create_client_cmd}\"" //create clients stack
63 sh "${seed_cmd} \"source bm_mcc_mosk/utils/openstack_client_activate.sh; openstack --insecure stack list --property 'Stack Name'=phoronix_client\"" //view stack status
64 }
65 } //sshagent
66 } //node
67 } //timestamps
68} //timeout