Merge "NFV workload"

This commit is contained in:
Jenkins 2017-04-25 03:37:52 +00:00 committed by Gerrit Code Review
commit 60dda3498f
7 changed files with 285 additions and 3 deletions

5
.gitignore vendored
View File

@ -23,10 +23,9 @@ setuptools*.egg/
!/.mailmap
!/.pylintrc
!/.testr.conf
run/
*.retry
# Files created by releasenotes build
releasenotes/build
Contact GitHub API Training Shop Blog About

View File

@ -5,3 +5,4 @@
pbr>=1.8 # Apache-2.0
ansible>=2.0.0.0 # GNU LGPL 3.0
shade==1.13.2 # Apache-2.0
docker-py==1.9.0 # Apache-2.0

View File

@ -38,6 +38,14 @@ setenv =
ANSIBLE_CONFIG = {env:LAMPSTACK_DIR}/ansible.cfg
commands = ansible-playbook -e "action=apply {posargs}" {env:LAMPSTACK_DIR}/site.yml
[testenv:nfv]
deps =
{[testenv:ansible]deps}
setenv =
{[testenv:ansible]setenv}
NFV_DIR = {toxinidir}/workloads/ansible/openo/nfv
commands = ansible-playbook {env:NFV_DIR}/nfv_launch.yml
[testenv:docs]
commands = python setup.py build_sphinx

View File

@ -0,0 +1,117 @@
# NFV Ansible deployments on OpenStack Cloud
This ansible playbook will install an OPEN-O first then deploy
Clearwater vIMS by OPEN-O.
Once the script finishes, a vIMS is ready to be used.
## Status
Complete
## Requirements
- [Install Ansible](http://docs.ansible.com/ansible/intro_installation.html)
- [Install docker-py 1.9.0](https://github.com/docker/docker-py)
- Make sure there is a VM to be used to install OPEN-O.
It should meet the requirements below
- at least 4 CPUs, 64G RAM, 100G Disk
- Make sure the OpenStack cloud is able to deploy at least 7 nodes.
Each node requires resources as below
- 1 CPU, 2G RAM, 2G RAM, 20G Disk
- Clone this project into a directory to the VM
## Ansible
Ansible will be used to orchestrate the whole process
### Prep
#### General OpenStack Settings
Before running the script, cloud environment authentication needs to be
provided. Please update the file under group_vars/all
There is one example for your reference
##### group_vars/all::
os_project_domain_name: default
os_user_domain_name: default
os_username: admin
os_password: password
os_project_name: admin
os_auth_url: http://205.156.212.201:5000/v3
os_identity_api_version: 3
os_region_name: RegionOne
## Run the script to deploy vIMS with the help of OPEN-O
With your cloud environment set, you should be able to run the script::
tox -e nfv
The above command will firstly install Ansible and other required packages.
Then, it will deploy OPEN-O, and a vIMS will be set up by
OPEN-O.
Also, OPNFV Functest is leveraged to test the vIMS to make sure it is
working.
## The results of the work load successful run
If everything goes well, it will accomplish the following::
1. Deploy OPEN-O docker containers
2. Create security group
3. Add security rules to allow icmp, tcp and ucp ports
4. Deploy a VM on OpenStack and install Juju
5. Connect Juju with OPEN-O and OpenStack
6. Configure OPEN-O with vIMS topology definition
7. Deploy vIMS Clearwater via OPEN-O
8. Test the vIMS Clearwater by leveraging OPNFV Functest
9. Create user on Ellis of vIMS Clearwater
10. Create calling number on Ellis of vIMS Clearwater
### Environment Information
- OPEN-O can be accessed through
http://VM_host_IP/openoui/common/default.html
- Calling information is put under {{ playbook_dir }}/run/results/ellis.info
- Log is put under {{ playbook_dir }}/run/results/opera.log
## Execution Duration
The process involves pulling 20+ docker images and downloading about nearly 4G
OpenStack images. The time it takes can be impacted by the network enormously.
Thus the duration varies from lab to lab. If this step is once run, it will be
skipped in the future round of execution. One suggestion is to run this step
in advance to decrease the whole execution duration.
The deployment and configuration of OPEN-O takes approximately 30~40 minutes.
The deployment of vIMS Clearwater takes about 30~40 minutes. It also depends on
the network as vIMS downloads quite a number of packages.
## Next Steps
### Make a call via SIP client
Install the SIP client, e.g. jitsi and configure the client with calling
information.
### Cleanup
Script is needed to clean up the environment.

View File

@ -0,0 +1,21 @@
---
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
os_project_domain_name: default
os_user_domain_name: default
os_username: admin
os_password: password
os_project_name: admin
os_auth_url: http://205.156.212.201:5000/v3
os_identity_api_version: 3
os_region_name: RegionOne

View File

@ -0,0 +1,116 @@
---
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
- hosts: localhost
remote_user: root
max_fail_percentage: 0
tasks:
- set_fact:
starttime: "{{ ansible_date_time }}"
- set_fact:
exec_dir: "{{ playbook_dir }}/run"
- set_fact:
opera_dir: "{{ exec_dir }}/opera"
- set_fact:
results_dir: "{{ exec_dir }}/results"
- name: Creates execution directory
file: path={{ exec_dir }} state=directory
- name: pull OPNFV Opera code
git:
repo: https://github.com/opnfv/opera.git
dest: "{{ opera_dir }}"
update: no
- name: config admin-openrc.sh
template:
src: admin-openrc.sh.j2
dest: "{{ opera_dir }}/conf/admin-openrc.sh"
- name: pull OPNFV Functest docker image to test vIMS
docker_image:
name: yaohelan/functest:stable
state: present
force: yes
- name: Creates result directory
file: path={{ results_dir }} state=directory
- name: create the opera log file
file: dest={{ results_dir }}/opera.log state=touch
- name: deploy OPEN-O and vIMS
shell: "{{ opera_dir }}/opera_launch.sh > opera.log"
args:
chdir: "{{ results_dir }}"
- name: create openstack.creds
shell: cp {{ opera_dir }}/conf/admin-openrc.sh {{ opera_dir }}/conf/openstack.creds
- name: remove OPNFV Functest docker container
shell: "docker rm -f functest-opera || true"
- name: get open-o endpoint
shell: . {{ opera_dir }}/work/scripts/open-o.conf; echo $OPENO_IP:$COMMON_SERVICES_MSB_PORT
register: openo_endpoint
- name: Creates Functest result directory
file: path={{ results_dir }}/functest state=directory
- name: run OPNFV Functest docker container
command: "docker run -id
-v {{ opera_dir }}/conf/openstack.creds:/home/opnfv/functest/conf/openstack.creds
-v {{ results_dir }}/functest:/home/opnfv/functest/results
-e INSTALLER_TYPE=unknown
-e DEPLOY_SCENARIO=unknown
-e OPENO_MSB_ENDPOINT={{ item }}
-e CI_DEBUG=false
--name=functest-opera
yaohelan/functest:stable /bin/bash"
with_items: "{{ openo_endpoint.stdout_lines }}"
- name: start OPNFV Functest docker container
command: "docker start functest-opera"
- name: run vIMS test on OPNFV Functest
command: docker exec functest-opera python /home/opnfv/repos/functest/functest/ci/run_tests.py -t opera_ims
- name: copy call information
command: docker cp functest-opera:/home/opnfv/functest/results/opera_ims/ellis.info {{ results_dir }}/ellis.info
- name: get end time
shell: date '+%H:%M:%S'
register: end_time
- debug:
msg: >-
Access OPEN-O dashboard at
http://{{ openo_endpoint.stdout_lines }}
- name: get Ellis call information
command: /bin/cat {{ results_dir }}/ellis.info
register: details
- debug:
msg: >-
Ellis details
{{ details.stdout_lines }}
- debug:
msg: >-
The work load started at {{ starttime.time }},
ended at {{ end_time.stdout }}

View File

@ -0,0 +1,20 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
export OS_PROJECT_DOMAIN_NAME={{ os_project_domain_name }}
export OS_USER_DOMAIN_NAME={{ os_user_domain_name }}
export OS_USERNAME={{ os_username }}
export OS_PASSWORD={{ os_password }}
export OS_PROJECT_NAME={{ os_project_name }}
export OS_AUTH_URL={{ os_auth_url }}
export OS_IDENTITY_API_VERSION={{ os_identity_api_version }}
export OS_REGION_NAME={{ os_region_name }}