2 # SPDX-license-identifier: Apache-2.0
3 ##############################################################################
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
18 function generate_CRD_for_bridge_cni {
21 pushd ${CSAR_DIR}/${csar_id}
23 cat << NET > bridge-network.yaml
24 apiVersion: "k8s.cni.cncf.io/v1"
25 kind: NetworkAttachmentDefinition
30 "cniVersion": "0.3.0",
35 "subnet": "$multus_private_net_cidr"
42 function generate_CRD_for_macvlan_cni {
44 local master_name=$(ssh_cluster route | grep 'default' | awk '{print $8}' |head -n 1)
46 pushd ${CSAR_DIR}/${csar_id}
48 cat << NET > macvlan-network.yaml
49 apiVersion: "k8s.cni.cncf.io/v1"
50 kind: NetworkAttachmentDefinition
55 "cniVersion": "0.3.0",
58 "master": "$master_name",
61 "subnet": "$multus_private_net_cidr"
68 function generate_CRD_for_ipvlan_cni {
70 local master_name=$(ssh_cluster route | grep 'default' | awk '{print $8}' |head -n 1)
72 pushd ${CSAR_DIR}/${csar_id}
74 cat << NET > ipvlan-network.yaml
75 apiVersion: "k8s.cni.cncf.io/v1"
76 kind: NetworkAttachmentDefinition
81 "cniVersion": "0.3.0",
84 "master": "$master_name",
87 "subnet": "$multus_private_net_cidr"
94 function generate_CRD_for_ptp_cni {
97 pushd ${CSAR_DIR}/${csar_id}
99 cat << NET > ptp-network.yaml
100 apiVersion: "k8s.cni.cncf.io/v1"
101 kind: NetworkAttachmentDefinition
106 "cniVersion": "0.3.0",
110 "type": "host-local",
111 "subnet": "$multus_private_net_cidr"
118 csar_id=49408ca6-b75b-11e8-8076-525400feed26
121 generate_CRD_for_bridge_cni $csar_id
122 generate_CRD_for_macvlan_cni $csar_id
123 generate_CRD_for_ipvlan_cni $csar_id
124 generate_CRD_for_ptp_cni $csar_id
126 pushd ${CSAR_DIR}/${csar_id}
128 kubectl apply -f bridge-network.yaml
129 kubectl apply -f macvlan-network.yaml
130 kubectl apply -f ipvlan-network.yaml
131 kubectl apply -f ptp-network.yaml
133 for cni in ${CNI_PLUGINS:-bridge macvlan ipvlan ptp}; do
134 cat << DEPLOYMENT > $multus_deployment_name.yaml
138 name: $multus_deployment_name
151 k8s.v1.cni.cncf.io/networks: ${cni}-conf
154 - name: $multus_deployment_name
161 setup $multus_deployment_name
164 deployment_pod=$(kubectl get pods | grep $multus_deployment_name | awk '{print $1}')
165 echo "===== $deployment_pod details ====="
166 kubectl exec -it $deployment_pod -- ip a
167 multus_nic=$(kubectl exec -it $deployment_pod -- ip a)
168 net1_ip=$(kubectl exec -it $deployment_pod -- ifconfig net1 \
169 | grep "inet addr" | awk '{ print $2}' |tr -d "addr:")
171 if [[ $multus_nic != *"net1"* ]]; then
172 echo "The $deployment_pod pod doesn't contain the net1 nic"
175 check_ip_range ${net1_ip} ${multus_private_net_cidr}
176 if [[ $? -eq 1 ]]; then
177 echo "unexpected ip range"
180 echo "$cni Test Completed!"
184 teardown $multus_deployment_name