Skip to content

Commit 65a7fb9

Browse files
authored
Merge pull request apache#66 from animationzl/55
UT: dims/openstack-cloud-controller-manager + devstack [in vm]
2 parents db25236 + 1d83b44 commit 65a7fb9

File tree

4 files changed

+108
-0
lines changed

4 files changed

+108
-0
lines changed

playbooks/openstack-cloud-controller-manager-unittest/.gitkeep

Whitespace-only changes.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
- hosts: all
2+
become: yes
3+
roles:
4+
- clone-devstack-gate-to-workspace
5+
- create-devstack-local-conf
6+
- install-devstack
7+
tasks:
8+
- shell:
9+
cmd: |
10+
set -e
11+
set -x
12+
13+
# Prepare env on executing node
14+
source /opt/stack/new/devstack/openrc admin admin
15+
go get github.com/Masterminds/glide
16+
make depend
17+
18+
is_instance_active() {
19+
local instance_id=$1
20+
for i in {1..50}
21+
do
22+
[[ $(openstack server show $instance_id -f value -c status) == ACTIVE ]] && return
23+
echo "Waiting instance(id=$instance_id) for ACTIVE... $i"
24+
sleep 1
25+
done
26+
27+
return 1
28+
}
29+
30+
is_instance_ssh_accessible() {
31+
local user=$1
32+
local host=$2
33+
local private_key=$3
34+
for i in {1..50}
35+
do
36+
ssh -i $private_key -o ConnectTimeout=5 -o StrictHostKeyChecking=no $user@$host : && return
37+
echo "Waiting host($host) for ssh accessible... $i"
38+
sleep 10
39+
done
40+
41+
return 1
42+
}
43+
44+
# Update subnet dns to allow access to internet
45+
SUBNET_ID=$(openstack subnet list --network private --ip-version 4 -f value -c ID)
46+
openstack subnet set --dns-nameserver 8.8.8.8 $SUBNET_ID
47+
48+
IMAGE_SOURCE='http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img'
49+
IMAGE_NAME=${IMAGE_SOURCE##*/}
50+
wget -q -t 2 -c "$IMAGE_SOURCE" -O "$IMAGE_NAME"
51+
IMAGE_ID=$(openstack image create --file "$IMAGE_NAME" --min-disk 1 --container-format bare --disk-format qcow2 "$IMAGE_NAME" -f value -c id)
52+
rm "$IMAGE_NAME"
53+
54+
openstack flavor create --vcpus 8 --ram 16384 --disk 10 flavor_1
55+
openstack keypair create keypair_1 > privatekey_1
56+
chmod 600 privatekey_1
57+
58+
# Create install and wait for ACTIVE
59+
INSTANCE_ID=$(openstack server create --image $IMAGE_ID --flavor flavor_1 --network private --key-name keypair_1 instance_1 -f value -c id)
60+
if ! is_instance_active $INSTANCE_ID; then
61+
echo "Instance(id=$INSTANCE_ID) is still not ACTIVE, exit"
62+
exit 1
63+
fi
64+
65+
PORT_ID=$(openstack port list --device-id $INSTANCE_ID -f value -c id)
66+
SECURITY_GROUP_ID=$(openstack port show $PORT_ID -f value -c security_group_ids)
67+
openstack security group rule create --ingress --protocol tcp --dst-port 22 $SECURITY_GROUP_ID
68+
FLOATING_IP=$(openstack floating ip create public -f value -c floating_ip_address)
69+
openstack server add floating ip $INSTANCE_ID $FLOATING_IP
70+
71+
if ! is_instance_ssh_accessible ubuntu $FLOATING_IP privatekey_1; then
72+
echo "Instance(id=$INSTANCE_ID) is still not ssh accessible, exit"
73+
exit 1
74+
fi
75+
76+
# Remove env contains 'short_source' which is a function defined by devstack for formating PS4
77+
export -p | grep -v short_source > exported-envs
78+
for rsync_dir in /home/zuul/src /home/zuul/bin /home/zuul/pkg /usr/local/go
79+
do
80+
rsync -az -e 'ssh -i privatekey_1' --rsync-path "sudo mkdir -p $rsync_dir && sudo rsync" $rsync_dir/ ubuntu@$FLOATING_IP:$rsync_dir
81+
done
82+
83+
# Run test inside devstack instance
84+
ssh -i privatekey_1 ubuntu@$FLOATING_IP "
85+
set -x
86+
cd $PWD
87+
source exported-envs
88+
sudo apt install make -y
89+
TESTARGS='-v' make test 2>&1
90+
" | tee $TEST_RESULTS_TXT
91+
executable: /bin/bash
92+
chdir: '{{ zuul.project.src_dir }}'
93+
environment: '{{ golang_env }}'

zuul.d/jobs.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,3 +200,12 @@
200200
run: playbooks/terraform-provider-opentelekomcloud-acceptance-test-opentelekomcloud/run.yaml
201201
secrets:
202202
- opentelekomcloud_credentials
203+
204+
# Kubernetes jobs
205+
- job:
206+
name: openstack-cloud-controller-manager-unittest
207+
parent: golang-test
208+
description: |
209+
Run Kubernetes openstack-cloud-controller-manager unit test in devstack instance
210+
run: playbooks/openstack-cloud-controller-manager-unittest/run.yaml
211+
nodeset: ubuntu-xenial-large

zuul.d/nodesets.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,9 @@
1717
nodes:
1818
- name: ubuntu-xenial-ut
1919
label: ubuntu-xenial-ut
20+
21+
- nodeset:
22+
name: ubuntu-xenial-large
23+
nodes:
24+
- name: ubuntu-xenial-large
25+
label: ubuntu-xenial-large

0 commit comments

Comments
 (0)