aboutsummaryrefslogtreecommitdiffstats
path: root/kud/tests/ovn-kubernetes.sh
blob: 95d216bf0f568ee8091121084fb3454dbc05c859 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#!/bin/bash
# SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2018
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

set -o errexit
set -o nounset
set -o pipefail

apache_pod_name=apachetwin
nginx_pod_name=nginxtwin

cat << APACHEPOD > $HOME/apache-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: $apache_pod_name
  labels:
    name: webserver
spec:
  containers:
  - name: apachetwin
    image: "busybox"
    command: ["top"]
    stdin: true
    tty: true
APACHEPOD

cat << NGINXPOD > $HOME/nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: $nginx_pod_name
  labels:
    name: webserver
spec:
  containers:
  - name: nginxtwin
    image: "busybox"
    command: ["top"]
    stdin: true
    tty: true
NGINXPOD

cat << APACHEEW > $HOME/apache-e-w.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    name: apacheservice
    role: service
  name: apacheservice
spec:
  ports:
    - port: 8800
      targetPort: 80
      protocol: TCP
      name: tcp
  selector:
    name: webserver
APACHEEW

cat << APACHENS > $HOME/apache-n-s.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    name: apacheexternal
    role: service
  name: apacheexternal
spec:
  ports:
    - port: 8800
      targetPort: 80
      protocol: TCP
      name: tcp
  selector:
    name: webserver
  type: NodePort
APACHENS

if $(kubectl version &>/dev/null); then
    kubectl apply -f $HOME/apache-e-w.yaml
    kubectl apply -f $HOME/apache-n-s.yaml

    kubectl delete pod $apache_pod_name --ignore-not-found=true --now
    kubectl delete pod $nginx_pod_name --ignore-not-found=true --now
    while kubectl get pod $apache_pod_name &>/dev/null; do
        sleep 5
    done
    while kubectl get pod $nginx_pod_name &>/dev/null; do
        sleep 5
    done
    kubectl create -f $HOME/apache-pod.yaml
    kubectl create -f $HOME/nginx-pod.yaml

    status_phase=""
    while [[ $status_phase != "Running" ]]; do
        new_phase=$(kubectl get pods $apache_pod_name | awk 'NR==2{print $3}')
        if [[ $new_phase != $status_phase ]]; then
            echo "$(date +%H:%M:%S) - $new_phase"
            status_phase=$new_phase
        fi
        if [[ $new_phase == "Err"* ]]; then
            exit 1
        fi
    done
    status_phase=""
    while [[ $status_phase != "Running" ]]; do
        new_phase=$(kubectl get pods $nginx_pod_name | awk 'NR==2{print $3}')
        if [[ $new_phase != $status_phase ]]; then
            echo "$(date +%H:%M:%S) - $new_phase"
            status_phase=$new_phase
        fi
        if [[ $new_phase == "Err"* ]]; then
            exit 1
        fi
    done
    apache_ovn=$(kubectl get pod $apache_pod_name -o jsonpath="{.metadata.annotations.ovn}")
    nginx_ovn=$(kubectl get pod $nginx_pod_name -o jsonpath="{.metadata.annotations.ovn}")

    echo $apache_ovn
    if [[ $apache_ovn != *"\"ip_address\":\"11.11."* ]]; then
        exit 1
    fi

    echo $nginx_ovn
    if [[ $nginx_ovn != *"\"ip_address\":\"11.11."* ]]; then
        exit 1
    fi
fi