Add instructions to test workflows

story: 2007441
Task: #39114

Change-Id: I91636f9cf6a4568badc7314bed9101da62924c2b
Signed-off-by: Tomi Juvonen <tomi.juvonen@nokia.com>
This commit is contained in:
Tomi Juvonen 2020-03-20 10:29:44 +02:00
parent d06820b452
commit ef8bbb388b
1 changed files with 141 additions and 7 deletions

View File

@ -14,7 +14,7 @@ Files:
## Kubernetes workflow (k8s.py) ## Kubernetes workflow (k8s.py)
First version of workflow towards Kubeernetes use cases. First version of workflow towards Kubernetes use cases.
### Requirements for testing ### 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 Note! There is no conflict with Kubernetes as limiting to only Fenix needed
services. services.
Clone devstack. Tested to work with latest stable release Train. Clone DevStack. Tested to work with latest stable release Train.
```sh ```sh
git clone https://github.com/openstack/devstack -b stable/train 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 ```sh
cd devstack vi local.conf cd devstack vi local.conf
@ -97,7 +97,7 @@ should be running in master node. Here is short description:
#### Term1: Fenix-engine logging #### 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 see logs
```sh ```sh
@ -110,7 +110,7 @@ API logs can also be seen
sudo journalctl -f --unit devstack@fenix-api 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 #### 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 After maintenance workflow is 'MAINTENANCE_DONE', you should first press
"ctrl + c" in VNFM window (Term3), so it removes constraints from Fenix and "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 ```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" 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 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 ```sh
kubectl apply -f demo-ha.yaml --namespace=demo;sleep 1;kubectl apply -f demo-nonha.yaml --namespace=demo 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 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