From 6863e41c1ad4e7e96fcdf0fae2331dab20f567f7 Mon Sep 17 00:00:00 2001 From: Tomi Juvonen Date: Fri, 20 Mar 2020 10:29:44 +0200 Subject: [PATCH] Add instructions to test workflows story: 2007441 Task: #39114 Change-Id: I91636f9cf6a4568badc7314bed9101da62924c2b Signed-off-by: Tomi Juvonen --- fenix/tools/README.md | 148 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 141 insertions(+), 7 deletions(-) diff --git a/fenix/tools/README.md b/fenix/tools/README.md index 2426e55..ce65bc4 100644 --- a/fenix/tools/README.md +++ b/fenix/tools/README.md @@ -14,7 +14,7 @@ Files: ## Kubernetes workflow (k8s.py) -First version of workflow towards Kubeernetes use cases. +First version of workflow towards Kubernetes use cases. ### Requirements for testing @@ -43,13 +43,13 @@ https://phoenixnap.com/kb/how-to-install-kubernetes-on-centos Note! There is no conflict with Kubernetes as limiting to only Fenix needed services. -Clone devstack. Tested to work with latest stable release Train. +Clone DevStack. Tested to work with latest stable release Train. ```sh git clone https://github.com/openstack/devstack -b stable/train ``` -Make local.conf. 'HOST_IP' should bemaster node IP. +Make local.conf. 'HOST_IP' should be the master node IP. ```sh cd devstack vi local.conf @@ -97,7 +97,7 @@ should be running in master node. Here is short description: #### Term1: Fenix-engine logging -If any changes to Fenix make them under '/opt/stack/fenix'; restart fenix and +If any changes to Fenix make them under '/opt/stack/fenix'; restart Fenix and see logs ```sh @@ -110,7 +110,7 @@ API logs can also be seen sudo journalctl -f --unit devstack@fenix-api ``` -Debugging and other configuration changes to conf files under '/etc/fenix' +Debugging and other configuration changes to '.conf' files under '/etc/fenix' #### Term2: Infrastructure admin window @@ -139,7 +139,7 @@ DATE=`date -d "+15 sec" "+%Y-%m-%d %H:%M:%S"`;MSESSION=`curl -g -i -X POST http: After maintenance workflow is 'MAINTENANCE_DONE', you should first press "ctrl + c" in VNFM window (Term3), so it removes constraints from Fenix and -dies. Then you can remove the finished session from fenix +dies. Then you can remove the finished session from Fenix ```sh curl -g -i -X DELETE http://$HOST:$PORT/v1/maintenance/$MSESSION -H "Accept: application/json" -H "Content-Type: application/json" -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "X-User-Id: $USER_ID" @@ -169,7 +169,7 @@ Keystone) kubectl create namespace demo ``` -Start VNFM (when done in this order, we make sure demo-ha has nodes for antiaffinity): +Start VNFM (when done in this order, we make sure demo-ha has nodes for anti-affinity): ```sh kubectl apply -f demo-ha.yaml --namespace=demo;sleep 1;kubectl apply -f demo-nonha.yaml --namespace=demo @@ -219,4 +219,138 @@ If not matching, delete and create again as easiest solution kubectl delete replicaset.apps demo-ha demo-nonha --namespace=demo;sleep 15;kubectl apply -f demo-ha.yaml --namespace=demo;sleep 1;kubectl apply -f demo-nonha.yaml --namespace=demo ``` +## OpenStack workflows (default.py and nvf.py) +OpenStack workflows can be tested by using OPNFV Doctor project for testing. +Workflows: + +- default.py is the first example workflow with VNFM interaction. +- nvf.py is enhanced Telco workflow that utilizes the ETSI FEAT03 constraints. + This workflow can optimize parallel nodes and migrations according to + ETSI constraints. + +### Requirements for testing + +- Multinode DevStack environment with 1 controller and at least 3 computes. +- Each compute needs to have at least 2 VCPUs +- DevStack local.conf for controller node need Fenix enabled. Also Heat, AODH and + Ceilometer are needed. VCPUs needs one to one to mapping to CPU. + +Example controller baremetal local.conf: + +```sh +[[local|localrc]] +GIT_BASE=https://git.openstack.org +HOST_IP=192.168.173.3 +ADMIN_PASSWORD=admin +DATABASE_PASSWORD=admin +RABBIT_PASSWORD=admin +SERVICE_PASSWORD=admin +LOGFILE=/opt/stack/stack.sh.log + +#USE_PYTHON3=True +#PYTHON3_VERSION=3.6 + +## Neutron options +Q_USE_SECGROUP=True +FLOATING_RANGE="192.168.37.0/24" +#FLOATING_RANGE="192.168.38.0/24" +IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22" +Q_FLOATING_ALLOCATION_POOL=start=192.168.37.200,end=192.168.37.220 +#Q_FLOATING_ALLOCATION_POOL=start=192.168.38.200,end=192.168.38.220 +PUBLIC_NETWORK_GATEWAY="192.168.37.199" +#This is wrong, but if right devstack deletes the host ip +PUBLIC_INTERFACE=enp3s0f1 + +# Open vSwitch provider networking configuration +Q_USE_PROVIDERNET_FOR_PUBLIC=True +OVS_PHYSICAL_BRIDGE=br-ex +PUBLIC_BRIDGE=br-ex +OVS_BRIDGE_MAPPINGS=public:br-ex +MULTI_HOST=1 + +CEILOMETER_EVENT_ALARM=True + +disable_service ceilometer-alarm-notifier,ceilometer-alarm-evaluator,ceilometer-acompute +enable_service aodh-evaluator,aodh-notifier,aodh-api + +enable_plugin heat https://git.openstack.org/openstack/heat stable/train +enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer stable/train +enable_plugin aodh https://git.openstack.org/openstack/aodh stable/train +enable_plugin gnocchi https://github.com/openstack/gnocchi +enable_plugin fenix https://opendev.org/x/fenix master +enable_service fenix-engine +enable_service fenix-api + +disable_service n-cpu + +[[post-config|$NOVA_CONF]] +[DEFAULT] +cpu_allocation_ratio = 1.0 +allow_resize_to_same_host = False +``` + +### Workflow default.py + +On controller node clone Doctor to be able to test. Doctor currently requires +Python 3.6: + +```sh +git clone https://gerrit.opnfv.org/gerrit/doctor +``` + +```sh +export INSTALLER_TYPE=devstack +export ADMIN_TOOL_TYPE=fenix +export TEST_CASE=maintenance +``` +Use DevStack admin as user. + +```sh +. ~/devstack/operc admin admin +``` + +Goto Doctor and start testing + +```sh +cd doctor +sudo -E tox -e py36 +``` + +Use journalctl to track the progress in Fenix + +```sh +sudo journalctl -f --unit devstack@fenix-engine +``` + +If any changes to Fenix make them under '/opt/stack/fenix' and restart Fenix + +```sh +sudo systemctl restart devstack@fenix* +``` + +You can also make changed to Doctor before running Doctor test + +### Workflow vnf.py + +This workflow differs from above as it expects ETSI FEAT03 constraints. +In Doctor testing it means we also need to use different application manager (VNFM) + +Where default.py worklow used the sample.py application manager vnf.py +workflow uses vnfm.py workflow (doctor/doctor_tests/app_manager/vnfm.py) + +Only change to testing is that you should export variable to use different +application manager. + +```sh +export APP_MANAGER_TYPE=vnfm +``` + +If again want to use default.py, you can export the default value for +application manager + +```sh +export APP_MANAGER_TYPE=sample +``` +Doctor modifies the message where it calls maintenance accordingly to use +either 'default' or 'nfv' as workflow in Fenix side