From cc9c053d73084e1e7cf24bcf82c652ed574ce499 Mon Sep 17 00:00:00 2001 From: Todd Malsbary Date: Wed, 16 Jun 2021 10:05:39 -0700 Subject: Replace curl in plugin_fw_v2.sh with emcoctl Issue-ID: MULTICLOUD-1360 Signed-off-by: Todd Malsbary Change-Id: Iac32b8a1551253302134ad34b829ea9aa578ff8e --- .gitignore | 2 + kud/tests/plugin_fw_v2.sh | 1045 ++++--------------------------------------- kud/tests/plugin_fw_v2.yaml | 411 +++++++++++++++++ 3 files changed, 507 insertions(+), 951 deletions(-) create mode 100644 kud/tests/plugin_fw_v2.yaml diff --git a/.gitignore b/.gitignore index 0abc24af..d59bc24e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ src/k8splugin/csar/mock_plugins/*.so src/k8splugin/plugins/**/*.so # Tests +kud/tests/plugin_fw_v2_config.yaml +kud/tests/plugin_fw_v2_values.yaml *.test *.out diff --git a/kud/tests/plugin_fw_v2.sh b/kud/tests/plugin_fw_v2.sh index ed4a5ad7..d6254ac3 100755 --- a/kud/tests/plugin_fw_v2.sh +++ b/kud/tests/plugin_fw_v2.sh @@ -16,7 +16,8 @@ source _common_test.sh source _functions.sh source _functions.sh -kubeconfig_path="$HOME/.kube/config" +# TODO KUBECONFIG may be a list of paths +kubeconfig_path="${KUBECONFIG:-$HOME/.kube/config}" clusters="${KUD_PLUGIN_FW_CLUSTERS:-$(cat <plugin_fw_v2_config.yaml +orchestrator: + host: ${service_host} + port: 30415 +clm: + host: ${service_host} + port: 30461 +ncm: + host: ${service_host} + port: 30431 +ovnaction: + host: ${service_host} + port: 30471 +dcm: + host: ${service_host} + port: 30477 +gac: + host: ${service_host} + port: 30491 +dtc: + host: ${service_host} + port: 30481 +EOF + cat <plugin_fw_v2_values.yaml +ClusterProvider: vfw-cluster-provider +ClusterLabel: LabelA +Clusters: +EOF + echo $clusters | jq -r '.[] | "- Name: \(.metadata.name)\n KubeConfig: \(.file)"' >>plugin_fw_v2_values.yaml + cat <>plugin_fw_v2_values.yaml +EmcoProviderNetwork: emco-private-net +UnprotectedProviderNetwork: unprotected-private-net +ProtectedNetwork: protected-private-net +Project: ${project} +LogicalCloud: lcadmin +CompositeApp: ${composite_app} +Version: ${version} +PackagesPath: ${CSAR_DIR}/${csar_id} +CompositeProfile: vfw_composite-profile +DeploymentIntentGroup: ${deployment_intent_group} +Release: fw0 +DeploymentIntentsInGroup: vfw_deploy_intents +GenericPlacementIntent: generic-placement-intent +OvnActionIntent: vfw_ovnaction_intent +EOF +} + +function call_emcoctl { + rc=$1 + shift + # retry due to known issue with emcoctl and instantiating/terminating multiple resources + try=0 + until [[ $(emcoctl $@ | awk '/Response Code:/ {code=$3} END{print code}') =~ $rc ]]; do + if [[ $try -lt 10 ]]; then + sleep 1s + else + return 1 + fi + try=$((try + 1)) done + return 0 } function createData { - setup - createNcmData - createOrchData # this will call createOvnactionData -} - -function getOvnactionData { - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}" - - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}" - - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}/interfaces/${packetgen_emco_interface_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}/interfaces/${packetgen_unprotected_interface_name}" - - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_emco_interface_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_unprotected_interface_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_protected_interface_name}" - - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}/interfaces/${sink_emco_interface_name}" - call_api_nox "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}/interfaces/${sink_protected_interface_name}" -} - -function getOrchData { - call_api_nox "${base_url_orchestrator}/controllers/${rsynccontrollername}" - call_api_nox "${base_url_orchestrator}/controllers/${ovnactioncontrollername}" - - call_api_nox "${base_url_orchestrator}/projects/${projectname}" - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}" - - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${packetgen_app_name}" - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${firewall_app_name}" - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${sink_app_name}" - - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}" - - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${packetgen_profile_name}" - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${firewall_profile_name}" - call_api_nox -H "Accept: application/json" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${sink_profile_name}" - - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}" - - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${packetgen_placement_intent_name}" - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${firewall_placement_intent_name}" - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${sink_placement_intent_name}" - - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}" - call_api_nox "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents/${deployment_intents_in_group_name}" -} - -function getNcmData { - call_api_nox "${base_url_clm}/cluster-providers/${clusterprovidername}" - call_api_nox "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters?label=${labelname}" - - for name in $(cluster_names); do - call_api_nox -H "Accept: application/json" "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${name}" - call_api_nox "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${name}/labels/${labelname}" - call_api_nox "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/provider-networks/${emcoprovidernetworkname}" - call_api_nox "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/provider-networks/${unprotectedprovidernetworkname}" - call_api_nox "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/networks/${protectednetworkname}" - done + call_emcoctl 2.. --config plugin_fw_v2_config.yaml apply -f plugin_fw_v2.yaml -v plugin_fw_v2_values.yaml } function getData { - getNcmData - getOrchData - getOvnactionData -} - -function deleteOvnactionData { - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}/interfaces/${sink_protected_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}/interfaces/${sink_emco_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_protected_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_unprotected_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}/interfaces/${firewall_emco_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}/interfaces/${packetgen_unprotected_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}/interfaces/${packetgen_emco_interface_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${sink_workload_intent_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${firewall_workload_intent_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}/workload-intents/${packetgen_workload_intent_name}" - delete_resource "${base_url_ovnaction}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/network-controller-intent/${vfw_ovnaction_intent_name}" -} - -function deleteOrchData { - delete_resource "${base_url_orchestrator}/controllers/${rsynccontrollername}" - delete_resource "${base_url_orchestrator}/controllers/${ovnactioncontrollername}" - - deleteOvnactionData - - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${sink_placement_intent_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${firewall_placement_intent_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}/app-intents/${packetgen_placement_intent_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/generic-placement-intents/${generic_placement_intent_name}" - - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/intents/${deployment_intents_in_group_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}" - - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${sink_profile_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${firewall_profile_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}/profiles/${packetgen_profile_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/composite-profiles/${vfw_composite_profile_name}" - - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${sink_app_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${firewall_app_name}" - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/apps/${packetgen_app_name}" - - delete_resource "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}" - delete_resource "${base_url_orchestrator}/projects/${projectname}" -} - -function deleteNcmData { - for name in $(cluster_names); do - delete_resource "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/networks/${protectednetworkname}" - delete_resource "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/provider-networks/${unprotectedprovidernetworkname}" - delete_resource "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/provider-networks/${emcoprovidernetworkname}" - delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${name}/labels/${labelname}" - delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}/clusters/${name}" - done - - delete_resource "${base_url_clm}/cluster-providers/${clusterprovidername}" + emcoctl --config plugin_fw_v2_config.yaml get -f plugin_fw_v2.yaml -v plugin_fw_v2_values.yaml } function deleteData { - deleteNcmData - deleteOrchData -} - -# apply the network and providernetwork to an appcontext and instantiate with rsync -function applyNcmData { - for name in $(cluster_names); do - call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/apply" - done -} - -# deletes the network resources from the clusters and the associated appcontext entries -function terminateNcmData { - for name in $(cluster_names); do - call_api -d "{ }" "${base_url_ncm}/cluster-providers/${clusterprovidername}/clusters/${name}/terminate" - done -} - -# terminates the vfw resources -function terminateOrchData { - call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/terminate" -} - -# terminates the vfw and ncm resources -function terminateVfw { - terminateOrchData - terminateNcmData -} - -function instantiateVfw { - call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/approve" - call_api -d "{ }" "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/instantiate" + call_emcoctl 4.. --config plugin_fw_v2_config.yaml delete -f plugin_fw_v2.yaml -v plugin_fw_v2_values.yaml } function statusVfw { - call_api "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/status" + emcoctl --config plugin_fw_v2_config.yaml get projects/${project}/composite-apps/${composite_app}/${version}/deployment-intent-groups/${deployment_intent_group}/status } function waitForVfw { - wait_for_deployment_status "${base_url_orchestrator}/projects/${projectname}/composite-apps/${vfw_compositeapp_name}/${vfw_compositeapp_version}/deployment-intent-groups/${deployment_intent_group_name}/status" $1 + for try in {0..59}; do + sleep 1 + new_phase="$(emcoctl --config plugin_fw_v2_config.yaml get projects/${project}/composite-apps/${composite_app}/${version}/deployment-intent-groups/${deployment_intent_group}/status | awk '/Response: / {print $2}' | jq -r .status)" + echo "$(date +%H:%M:%S) - Filter=[$*] : $new_phase" + if [[ "$new_phase" == "$1" ]]; then + return 0 + fi + done } function usage { - echo "Usage: $0 create|get|delete|apply|terminate|instantiate" + echo "Usage: $0 setup|create|get|destroy|status" + echo " setup - creates the emcoctl files and packages needed for vfw" echo " create - creates all ncm, ovnaction, clm resources needed for vfw" echo " get - queries all resources in ncm, ovnaction, clm resources created for vfw" - echo " delete - deletes all resources in ncm, ovnaction, clm resources created for vfw" - echo " apply - applys the network intents - e.g. networks created in ncm" - echo " instantiate - approves and instantiates the composite app via the generic deployment intent" + echo " destroy - deletes all resources in ncm, ovnaction, clm resources created for vfw" echo " status - get status of deployed resources" - echo " terminate - remove the vFW composite app resources and network resources create by 'instantiate' and 'apply'" echo "" echo " a reasonable test sequence:" - echo " 1. create" - echo " 2. apply" - echo " 3. instantiate" - echo " 4. status" - echo " 5. terminate" - echo " 6. destroy" + echo " 1. setup" + echo " 2. create" + echo " 3. destroy" exit } if [[ "$#" -gt 0 ]] ; then case "$1" in + "setup" ) setup ;; "create" ) createData ;; "get" ) getData ;; - "apply" ) applyNcmData ;; - "instantiate" ) instantiateVfw ;; "status" ) statusVfw ;; "wait" ) waitForVfw "Instantiated" ;; - "terminate" ) terminateVfw ;; "delete" ) deleteData ;; *) usage ;; esac else + setup createData - applyNcmData - instantiateVfw print_msg "[BEGIN] Basic checks for instantiated resource" print_msg "Wait for deployment to be instantiated" @@ -1075,16 +221,14 @@ else for name in $(cluster_names); do print_msg "Check that networks were created on cluster $name" file=$(cluster_file "$name") - KUBECONFIG=$file kubectl get network protected-private-net - KUBECONFIG=$file kubectl get providernetwork emco-private-net - KUBECONFIG=$file kubectl get providernetwork unprotected-private-net + KUBECONFIG=$file kubectl get network protected-private-net -o name + KUBECONFIG=$file kubectl get providernetwork emco-private-net -o name + KUBECONFIG=$file kubectl get providernetwork unprotected-private-net -o name done for name in $(cluster_names); do print_msg "Wait for all pods to start on cluster $name" file=$(cluster_file "$name") - KUBECONFIG=$file wait_for_pod -l app=sink - KUBECONFIG=$file wait_for_pod -l app=firewall - KUBECONFIG=$file wait_for_pod -l app=packetgen + KUBECONFIG=$file kubectl wait pod -l release=fw0 --for=condition=Ready done # TODO: Provide some health check to verify vFW work print_msg "Not waiting for vFW to fully install as no further checks are implemented in testcase" @@ -1092,7 +236,6 @@ else #sleep 8m print_msg "[END] Basic checks for instantiated resource" - terminateVfw - waitForVfw "Terminated" + print_msg "Delete deployment" deleteData fi diff --git a/kud/tests/plugin_fw_v2.yaml b/kud/tests/plugin_fw_v2.yaml new file mode 100644 index 00000000..be436106 --- /dev/null +++ b/kud/tests/plugin_fw_v2.yaml @@ -0,0 +1,411 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2020 Intel Corporation + +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers +metadata: + name: {{.ClusterProvider}} + +{{- range $index, $cluster := .Clusters }} +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters +metadata: + name: {{$cluster.Name}} +file: + {{$cluster.KubeConfig}} + +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/labels +label-name: {{$.ClusterLabel}} + +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/provider-networks +metadata: + name: {{$.EmcoProviderNetwork}} +spec: + cniType: ovn4nfv + ipv4Subnets: + - subnet: 10.10.20.0/24 + name: subnet1 + gateway: 10.10.20.1/24 + providerNetType: VLAN + vlan: + vlanId: "102" + providerInterfaceName: eth1 + logicalInterfaceName: eth1.102 + vlanNodeSelector: specific + nodeLabelList: + - kubernetes.io/hostname=localhost + +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/provider-networks +metadata: + name: {{$.UnprotectedProviderNetwork}} +spec: + cniType: ovn4nfv + ipv4Subnets: + - subnet: 192.168.10.0/24 + name: subnet1 + gateway: 192.168.10.1/24 + providerNetType: VLAN + vlan: + vlanId: "100" + providerInterfaceName: eth1 + logicalInterfaceName: eth1.100 + vlanNodeSelector: specific + nodeLabelList: + - kubernetes.io/hostname=localhost + +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/networks +metadata: + name: {{$.ProtectedNetwork}} +spec: + cniType: ovn4nfv + ipv4Subnets: + - subnet: 192.168.20.0/24 + name: subnet1 + gateway: 192.168.20.100/32 +{{- end }} + +--- +version: emco/v2 +resourceContext: + anchor: projects +metadata: + name: {{.Project}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/logical-clouds +metadata: + name: {{.LogicalCloud}} +spec: + level: "0" + +{{- range $index, $cluster := .Clusters }} +--- +version: emco/v2 +resourceContext: + anchor: projects/{{$.Project}}/logical-clouds/{{$.LogicalCloud}}/cluster-references +metadata: + name: {{$cluster.Name}} +spec: + cluster-provider: {{$.ClusterProvider}} + cluster-name: {{$cluster.Name}} + loadbalancer-ip: "0.0.0.0" +{{- end }} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps +metadata: + name: {{.CompositeApp}} +spec: + version: {{.Version}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/apps +metadata: + name: packetgen +file: + {{.PackagesPath}}/packetgen.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/apps +metadata: + name: firewall +file: + {{.PackagesPath}}/firewall.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/apps +metadata: + name: sink +file: + {{.PackagesPath}}/sink.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/composite-profiles +metadata: + name: {{.CompositeProfile}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/composite-profiles/{{.CompositeProfile}}/profiles +metadata : + name: packetgen-profile +spec: + app-name: packetgen +file: + {{.PackagesPath}}/profile.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/composite-profiles/{{.CompositeProfile}}/profiles +metadata : + name: firewall-profile +spec: + app-name: firewall +file: + {{.PackagesPath}}/profile.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/composite-profiles/{{.CompositeProfile}}/profiles +metadata : + name: sink-profile +spec: + app-name: sink +file: + {{.PackagesPath}}/profile.tar.gz + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups +metadata: + name: {{.DeploymentIntentGroup}} +spec: + profile: {{.CompositeProfile}} + version: {{.Release}} + logical-cloud: {{.LogicalCloud}} + override-values: + - app-name: packetgen + values: + ".Values.service.ports.nodePort": '30888' + - app-name: firewall + values: + ".Values.global.dcaeCollectorIp": 1.2.3.4 + ".Values.global.dcaeCollectorPort": '8888' + - app-name: sink + values: + ".Values.service.ports.nodePort": '30677' + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/intents +metadata: + name: {{.DeploymentIntentsInGroup}} +spec: + intent: + genericPlacementIntent: {{.GenericPlacementIntent}} + ovnaction: {{.OvnActionIntent}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent +metadata: + name: {{.OvnActionIntent}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents +metadata: + name: packetgen_workload_intent +spec: + application-name: packetgen + workload-resource: {{.Release}}-packetgen + type: Deployment + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents +metadata: + name: firewall_workload_intent +spec: + application-name: firewall + workload-resource: {{.Release}}-firewall + type: Deployment + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents +metadata: + name: sink_workload_intent +spec: + application-name: sink + workload-resource: {{.Release}}-sink + type: Deployment + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/packetgen_workload_intent/interfaces +metadata: + name: packetgen_unprotected_if +spec: + interface: eth1 + name: {{.UnprotectedProviderNetwork}} + defaultGateway: "false" + ipAddress: 192.168.10.2 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/packetgen_workload_intent/interfaces +metadata: + name: packetgen_emco_if +spec: + interface: eth2 + name: {{.EmcoProviderNetwork}} + defaultGateway: "false" + ipAddress: 10.10.20.2 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/firewall_workload_intent/interfaces +metadata: + name: firewall_unprotected_if +spec: + interface: eth1 + name: {{.UnprotectedProviderNetwork}} + defaultGateway: "false" + ipAddress: 192.168.10.3 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/firewall_workload_intent/interfaces +metadata: + name: firewall_protected_if +spec: + interface: eth2 + name: {{.ProtectedNetwork}} + defaultGateway: "false" + ipAddress: 192.168.20.2 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/firewall_workload_intent/interfaces +metadata: + name: firewall_emco_if +spec: + interface: eth3 + name: {{.EmcoProviderNetwork}} + defaultGateway: "false" + ipAddress: 10.10.20.3 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/sink_workload_intent/interfaces +metadata: + name: sink_protected_if +spec: + interface: eth1 + name: {{.ProtectedNetwork}} + defaultGateway: "false" + ipAddress: 192.168.20.3 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/network-controller-intent/{{.OvnActionIntent}}/workload-intents/sink_workload_intent/interfaces +metadata: + name: sink_emco_if +spec: + interface: eth2 + name: {{.EmcoProviderNetwork}} + defaultGateway: "false" + ipAddress: 10.10.20.4 + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/generic-placement-intents +metadata: + name: {{.GenericPlacementIntent}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/generic-placement-intents/{{.GenericPlacementIntent}}/app-intents +metadata: + name: packetgen-placement-intent +spec: + app-name: packetgen + intent: + allOf: + - provider-name: {{.ClusterProvider}} + cluster-label-name: {{.ClusterLabel}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/generic-placement-intents/{{.GenericPlacementIntent}}/app-intents +metadata: + name: firewall-placement-intent +spec: + app-name: firewall + intent: + allOf: + - provider-name: {{.ClusterProvider}} + cluster-label-name: {{.ClusterLabel}} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/generic-placement-intents/{{.GenericPlacementIntent}}/app-intents +metadata: + name: sink-placement-intent +spec: + app-name: sink + intent: + allOf: + - provider-name: {{.ClusterProvider}} + cluster-label-name: {{.ClusterLabel}} + +{{- range $index, $cluster := .Clusters }} +--- +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/apply +{{- end }} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/logical-clouds/{{.LogicalCloud}}/instantiate + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/approve + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.Project}}/composite-apps/{{.CompositeApp}}/{{.Version}}/deployment-intent-groups/{{.DeploymentIntentGroup}}/instantiate -- cgit 1.2.3-korg