Enhance CLI NS launch with config parameter 52/7852/13
authoryadavmr <my00514913@techmahindra.com>
Wed, 18 Sep 2019 10:03:25 +0000 (15:33 +0530)
committeryadavmr <my00514913@techmahindra.com>
Fri, 25 Oct 2019 07:23:23 +0000 (12:53 +0530)
Fix ns config to check for empty
osmclient test using python module included

Change-Id: Ied096ed0affbd6ab58228d16916196635359d027
Signed-off-by: yadavmr <my00514913@techmahindra.com>
37 files changed:
charms/juju-env.sh
descriptor-packages/vnfd/hackfest_cloudinit_vnf/src/hackfest_cloudinit_vnfd.yaml
descriptor-packages/vnfd/hackfest_epasriov_vnf/src/hackfest_epasriov_vnfd.yaml
descriptor-packages/vnfd/hackfest_multivdu_vnf/src/hackfest_multivdu_vnfd.yaml
descriptor-packages/vnfd/hackfest_simplecharm_vnf/src/hackfest_simplecharm_vnfd.yaml
devops-stages/stage-archive.sh
docker/osmclient/Dockerfile
jenkins/ci-pipelines/ci_stage_3.groovy
robot-systest/README_Robot_Test.md [new file with mode: 0644]
robot-systest/lib/api/common.robot [new file with mode: 0644]
robot-systest/lib/api/vim_lib.robot [new file with mode: 0644]
robot-systest/lib/cli/ns_lib.robot [new file with mode: 0644]
robot-systest/lib/cli/nsd_lib.robot [new file with mode: 0644]
robot-systest/lib/cli/vim_account_lib.robot [new file with mode: 0644]
robot-systest/lib/cli/vnfd_lib.robot [new file with mode: 0644]
robot-systest/lib/client_lib/client_lib.py [new file with mode: 0644]
robot-systest/lib/custom_lib.py [new file with mode: 0644]
robot-systest/lib/gui/login_gui.robot [new file with mode: 0644]
robot-systest/resource/api/common.robot [new file with mode: 0644]
robot-systest/resource/api/variables.py [new file with mode: 0644]
robot-systest/resource/cli/hackfest_basic_ns_data.py [new file with mode: 0644]
robot-systest/resource/cli/hackfest_cloudinit_ns_data.py [new file with mode: 0644]
robot-systest/resource/cli/hackfest_epa_ns_data.py [new file with mode: 0644]
robot-systest/resource/cli/hackfest_multivdu_ns_data.py [new file with mode: 0644]
robot-systest/resource/cli/hackfest_simplecharm_ns_data.py [new file with mode: 0644]
robot-systest/resource/cli/test_vnf_data.py [new file with mode: 0644]
robot-systest/run_test.sh [new file with mode: 0644]
robot-systest/testsuite/api/TS01__Vim_Account.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS01__Test_VNF.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS02__Test_Vim.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot [new file with mode: 0644]
robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot [new file with mode: 0644]
robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot [new file with mode: 0644]
robot-systest/testsuite/gui/TS01__Test_GUI_Login.robot [new file with mode: 0644]

index 59fa9e7..61ef85e 100644 (file)
@@ -1,3 +1,24 @@
+#!/usr/bin/env bash
+
+##
+# Copyright 2019 ETSI
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+
 # Set the Juju env variables for building a layer
 export JUJU_REPOSITORY=`pwd`
 export INTERFACE_PATH=$JUJU_REPOSITORY/interfaces
index 818c62a..24a6548 100644 (file)
@@ -1,3 +1,28 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 ETSI
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com
+# 19-aug-2019 : changed vdu image from hackfest3-mgmt to ubuntu1604
+##
+
 vnfd:vnfd-catalog:
     vnfd:
     -   id: hackfest_cloudinit-vnf
@@ -28,7 +53,7 @@ vnfd:vnfd-catalog:
         vdu:
         -   id: mgmtVM
             name: mgmtVM
-            image: hackfest3-mgmt
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
@@ -55,7 +80,7 @@ vnfd:vnfd-catalog:
             cloud-init-file: cloud-config.txt
         -   id: dataVM
             name: dataVM
-            image: hackfest3-mgmt
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
index f039389..476f126 100644 (file)
@@ -1,3 +1,28 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 ETSI
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com
+# 19-aug-2019 : changed vdu image from hackfest3-mgmt & hackfest-pktgen to ubuntu1604
+##
+
 vnfd:vnfd-catalog:
     vnfd:
     -   id: hackfest_epasriov-vnf
@@ -28,7 +53,7 @@ vnfd:vnfd-catalog:
         vdu:
         -   id: mgmtVM
             name: mgmtVM
-            image: hackfest3-mgmt
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
@@ -64,7 +89,7 @@ vnfd:vnfd-catalog:
             cloud-init-file: cloud-config.txt
         -   id: dataVM
             name: dataVM
-            image: hackfest-pktgen
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '8'
index e8981ff..ff411e0 100644 (file)
@@ -1,3 +1,28 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 ETSI
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com
+# 19-aug-2019 : changed vdu image from US1604 to ubuntu1604
+##
+
 vnfd:vnfd-catalog:
     vnfd:
     -   id: hackfest_multivdu-vnf
@@ -28,7 +53,7 @@ vnfd:vnfd-catalog:
         vdu:
         -   id: mgmtVM
             name: mgmtVM
-            image: US1604
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
@@ -54,7 +79,7 @@ vnfd:vnfd-catalog:
 
         -   id: dataVM
             name: dataVM
-            image: US1604
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
index ad9bdd5..7295c54 100644 (file)
@@ -1,3 +1,28 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 ETSI
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com
+# 19-aug-2019 : changed vdu image from hackfest3-mgmt to ubuntu1604
+##
+
 vnfd:vnfd-catalog:
     vnfd:
     -   id: hackfest-simplecharm-vnf
@@ -28,7 +53,7 @@ vnfd:vnfd-catalog:
         vdu:
         -   id: mgmtVM
             name: mgmtVM
-            image: hackfest3-mgmt
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
@@ -55,7 +80,7 @@ vnfd:vnfd-catalog:
             cloud-init-file: cloud-config.txt
         -   id: dataVM
             name: dataVM
-            image: hackfest3-mgmt
+            image: ubuntu1604
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
index 160b1a3..8dc677e 100755 (executable)
@@ -14,7 +14,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-PKG_DIRECTORIES="jenkins installers systest charms descriptor-packages tools docker"
+PKG_DIRECTORIES="jenkins installers systest charms descriptor-packages tools docker robot-systest"
 MDG_NAME=devops
 DEB_INSTALL=debian/osm-$MDG_NAME.install
 export DEBEMAIL="mmarchetti@sandvine.com"
index 3bf5fb3..6afddbb 100644 (file)
@@ -1,6 +1,8 @@
 ##
 # Copyright 2019 ETSI
 #
+# All Rights Reserved.
+#
 # 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
@@ -14,7 +16,6 @@
 # under the License.
 ##
 
-########################################################################
 
 FROM ubuntu:16.04
 
@@ -25,6 +26,7 @@ RUN apt-get update && apt-get -y install curl software-properties-common
 RUN apt-get update && apt-get -y install python \
     libcurl4-gnutls-dev libgnutls-dev iputils-ping python-pip \
     python-openstackclient wget
+
 RUN pip install -U pip && python -m pip install python-magic pyangbind pytest==4.6.3
 
 ARG REPOSITORY_BASE=http://osm-download.etsi.org/repository/osm/debian
index dd2f22b..99ba600 100644 (file)
@@ -19,7 +19,9 @@
  * 1. Bug 745 : Jayant Madavi, Mrityunjay Yadav : JM00553988@techmahindra.com : 23-july-2019 : Improvement to the code, typically we have 2 *    or more branches whose build gets triggered, ex master & release branch, the previous code was removing any/all docker. 
  *       Now removing previous docker of the same branch, so that the other branch failed docker should not be removed. It also 
  *    acts as clean-up for previous docker remove failure.
+ * 2. Feature 7829 : Mrityunjay Yadav, Jayant Madavi: MY00514913@techmahindra.com : 19-Aug-2019 : Added a parameters & function to invoke Robot test.
  */
+
 properties([
     parameters([
         string(defaultValue: env.GERRIT_BRANCH, description: '', name: 'GERRIT_BRANCH'),
@@ -47,6 +49,9 @@ properties([
         booleanParam(defaultValue: true, description: '', name: 'DO_DOCKERPUSH'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_ARTIFACTS_OVERRIDE'),
         string(defaultValue: '/home/jenkins/hive/openstack-etsi.rc', description: '', name: 'HIVE_VIM_1'),
+        booleanParam(defaultValue: true, description: '', name: 'DO_ROBOT'),
+        string(defaultValue: 'sanity', description: 'smoke/vim/sanity/comprehensive are the options', name: 'TEST_NAME'),
+        string(defaultValue: '/home/jenkins/hive/robot-systest.cfg', description: '', name: 'ROBOT_VIM'),
     ])
 ])
 
@@ -70,6 +75,30 @@ def run_systest(stackName,tagName,testName,envfile=null) {
     junit  '*.xml'
 }
 
+def run_robot_systest(stackName,tagName,testName,envfile=null) {
+    tempdir = sh(returnStdout: true, script: "mktemp -d").trim()
+    if ( !envfile )
+    {
+        sh(script: "touch ${tempdir}/env")
+        envfile="${tempdir}/env"
+    }
+    sh "docker run --network net${stackName} --env-file ${envfile} -v ${tempdir}:/usr/share/osm-devops/robot-systest/reports opensourcemano/osmclient:${tagName} bash -C /usr/share/osm-devops/robot-systest/run_test.sh --do_install -t ${testName}"
+    sh "cp ${tempdir}/* ."
+    outputDirectory = sh(returnStdout: true, script: "pwd").trim()
+    println ("Present Directory is : ${outputDirectory}")
+    step([
+        $class : 'RobotPublisher',
+        outputPath : "${outputDirectory}",
+        outputFileName : "*.xml",
+        disableArchiveOutput : false,
+        reportFileName : "report.html",
+        logFileName : "log.html",
+        passThreshold : 80,
+        unstableThreshold: 60.0,
+        otherFiles : "*.png",
+    ])
+}
+
 node("${params.NODE}") {
 
     sh 'env'
@@ -278,8 +307,16 @@ node("${params.NODE}") {
             if ( params.DO_STAGE_4 ) {
                 // override stage_archive to only archive on stable
                 stage_archive = false
-                stage("stage_4") {
-                    run_systest(container_name,container_name,"openstack_stage_4",params.HIVE_VIM_1)
+                stage("System Integration Test") {
+                    if ( params.DO_ROBOT ) {
+                        steps {
+                            run_robot_systest(container_name,container_name,params.TEST_NAME,params.ROBOT_VIM)
+                        }
+                    } else {
+                        steps{
+                            run_systest(container_name,container_name,"openstack_stage_4",params.HIVE_VIM_1)
+                        }
+                    }
 
                     if ( ! currentBuild.result.equals('UNSTABLE') ) {
                         stage_archive = keep_artifacts
@@ -314,8 +351,6 @@ node("${params.NODE}") {
             currentBuild.result = 'FAILURE'
         }
         finally {
-
-
             if ( params.DO_INSTALL ) {
                 if (error) {
                     if ( !params.SAVE_CONTAINER_ON_FAIL ) {
diff --git a/robot-systest/README_Robot_Test.md b/robot-systest/README_Robot_Test.md
new file mode 100644 (file)
index 0000000..7067946
--- /dev/null
@@ -0,0 +1,86 @@
+<!--
+Copyright 2019 Tech Mahindra Limited
+
+All Rights Reserved.
+
+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.
+-->
+
+
+# Step to run robot framework test standalone linux environment
+
+All installation commands run using root user(`sudo su`)
+## Step 1: Install python packages
+Install below python packages using pip
+>pip install python-magic pyangbind haikunator requests pyvcloud progressbar pathlib robotframework robotframework-seleniumlibrary robotframework-requests
+
+## Step 2: Install linux packages
+Install below linux packages
+>curl http://osm-download.etsi.org/repository/osm/debian/ReleaseSIX/OSM%20ETSI%20Release%20Key.gpg | apt-key add -
+
+>add-apt-repository -y "deb http://osm-download.etsi.org/repository/osm/debian/ReleaseSIX stable devops osmclient IM" && apt update
+
+>curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
+
+>echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
+
+> apt-get install -y python-osmclient python-osm-im google-chrome-stable chromium-chromedriver
+
+>./git-repo/devops/tools/OVF_converter/install.sh
+
+## Step 3: checkout robot seed code
+Checkout devops from gerrit
+> git clone "https://osm.etsi.org/gerrit/osm/devops"
+
+If robot seed code not merged to to master, pull it
+> git pull "https://osm.etsi.org/gerrit/osm/devops" refs/changes/52/7852/4
+
+## Step 4: Set environmet
+for build test need to create env-file and provide below details and for Standalone testing export them
+```
+export OSM_HOSTNAME=<OSM server IP>
+```
+
+OpenStack Details
+```
+export OS_AUTH_URL=<auth url>
+export OS_PASSWORD=<password>
+export OS_PROJECT_NAME=<project name>
+export OS_VIM_CONFIG=<config value>
+```
+
+VCD Details
+```
+export VCD_AUTH_URL=<VCD auth url>
+export VCD_USERNAME=<VCD username>
+export VCD_PASSWORD=<VCD password>
+export VCD_TENANT_NAME=<VCD Tenant name>
+export VCD_ORGANIZATION=<VCD Org name>
+export VCD_VIM_CONFIG=<config value>
+```
+
+Note:- Optional
+```
+export NS_CONFIG=<NS Config Details>
+e.g. export NS_CONFIG="'{vld: [ {name: mgmtnet, vim-network-name: mgmt}]}'"
+```
+
+## Step 5: Run Test
+There are two ways to run the test-case:
+* use `devops/robot-systest/run_test.sh` file and provide test-name(vim/smoke/sanity/comprehensive).
+  > ./devops/robot-systest/run_test.sh -t smoke
+
+* use `robot` command
+  > robot -d path/to/report/dir -i test-tag-to-be-included -e test-tag-to-be-excluded path/to/testsuiet
+  
+  > robot -d devops/robot-systest/reports -i comprehensive devops/robot-systest/testsuite
\ No newline at end of file
diff --git a/robot-systest/lib/api/common.robot b/robot-systest/lib/api/common.robot
new file mode 100644 (file)
index 0000000..4724016
--- /dev/null
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com
+##
+
+
+*** Variables ***
+${token}=  ${EMPTY}
+${HOST}=  ${EMPTY}
+
+
+*** Keywords ***
+Get Auth Token
+    [Tags]  auth_token
+
+    ${nbi_host}=    Get Environment Variable    OSM_HOSTNAME
+    ${passed}=    Run Keyword And Return Status    Should Contain    ${nbi_host}    :
+    Run Keyword If    ${passed}    Set Dockerized Host    ${nbi_host}
+    ...    ELSE    Set Standalone Host    ${nbi_host}
+
+    Create Session    osmhit    ${HOST}    verify=${FALSE}    debug=1    headers=${HEADERS}
+
+    Log Many    ${auth_token_uri}    @{data}    ${data}
+
+    ${resp}=    Post Request    osmhit    ${auth_token_uri}    data=${data}
+    log    ${resp}
+
+    Pass Execution If   ${resp.status_code} in ${success_status_code_list}   Get Auth Token completed
+
+    ${content}=     To Json   ${resp.content}
+    ${t}=    Get From Dictionary       ${content}          _id
+
+    Set Suite Variable     ${token}   ${t}
+
+
+Set Dockerized Host
+    [Arguments]  ${env_host}
+
+    Set Suite Variable     ${HOST}   https://${env_host}
+
+
+Set Standalone Host
+    [Arguments]  ${env_host}
+
+    Set Suite Variable     ${HOST}   https://${env_host}:9999
diff --git a/robot-systest/lib/api/vim_lib.robot b/robot-systest/lib/api/vim_lib.robot
new file mode 100644 (file)
index 0000000..a52354f
--- /dev/null
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+
+*** Keywords ***
+Create Vim
+    [Arguments]  ${vim_name}     ${account_type}     ${auth_url}     ${user}     ${password}     ${tenant}       ${description}
+
+    &{request_data}=        Create Dictionary      vim_user=${user}    vim_password=${password}    vim_url=${auth_url}     vim_tenant_name=${tenant}   vim_type=${account_type}    description=${description}  name=${vim_name}
+
+    &{headers}=    Create Dictionary     Authorization=Bearer ${token}      Content-Type=application/json   Accept=application/json
+
+    Create Session    osmvim    ${HOST}    verify=${FALSE}    headers=${headers}
+
+    LOG   ${request_data}
+    ${res}=     Post Request    osmvim  ${create_vim_uri}   data=${request_data}
+    log    ${res.content}
+    Pass Execution If   ${res.status_code} in ${success_status_code_list}   Create Vim Request completed
+    Get Vim ID      ${res.content}
+
+
+Delete Vim
+    [Arguments]  ${vim_id}
+
+    ${uri} =   Catenate        SEPARATOR=/     ${create_vim_uri}      ${vim_id}
+    ${resp}=    Delete Request   osmvim   ${uri}
+
+    log   ${resp.content}
+    Pass Execution If      ${resp.status_code} in ${success_status_code_list}   Delete Vim Request completed
+
+
+Get Vim ID
+    [Arguments]  ${res}
+
+#    log to console      ${res}
+    ${content}=     To Json     ${res}
+    ${id}=      Get From Dictionary     ${content}         id
+    Set Suite Variable     ${vim_id}   ${id}
+    log   Vim Id is ${vim_id}
diff --git a/robot-systest/lib/cli/ns_lib.robot b/robot-systest/lib/cli/ns_lib.robot
new file mode 100644 (file)
index 0000000..e3e3a02
--- /dev/null
@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+*** Variables ***
+${success_return_code}    0
+${ns_launch_max_wait_time}    5min
+${ns_launch_pol_time}    30sec
+${ns_delete_max_wait_time}    1min
+${ns_delete_pol_time}    15sec
+
+
+*** Keywords ***
+Get NS List
+    [Documentation]  Get ns instance list
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-list
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+
+
+Launch Network Services and Return
+    [Arguments]  ${vim_name}
+       
+       Should Not Be Empty    ${nsd_ids}    There are no NS descriptors to launch the NS
+    :FOR    ${nsd}    IN    @{nsd_ids}
+    \    ${ns_name}=    GENERATE NAME
+    \    Append To List     ${ns_ids}       ${ns_name}
+    \    Create Network Service    ${nsd}   ${vim_name}    ${ns_name}
+    \    Delete NS   ${ns_name}
+
+       
+Create Network Service
+    [Documentation]  Create ns at osm
+    [Arguments]  ${nsd}   ${vim_name}    ${ns_name}
+
+    ${ns_config}=   Get Environment Variable    NS_CONFIG    ${EMPTY}
+       Run Keyword If   ${ns_config}!='${EMPTY}'   Create Network Service With Config    ${nsd}    ${vim_name}    ${ns_name}    ${ns_config}
+       ...    ELSE    Create Network Service Without Config    ${nsd}   ${vim_name}    ${ns_name}
+       
+    WAIT UNTIL KEYWORD SUCCEEDS     ${ns_launch_max_wait_time}   ${ns_launch_pol_time}   Check For NS Instance To Configured   ${ns_name}
+    Check For NS Instance For Failure    ${ns_name}
+       
+
+Create Network Service Without Config
+    [Documentation]  Create ns at osm
+    [Arguments]  ${nsd}   ${vim_name}    ${ns_name}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+
+
+Create Network Service With Config
+    [Documentation]  Create ns at osm
+    [Arguments]  ${nsd}   ${vim_name}    ${ns_name}    ${ns_config}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name} --config ${ns_config}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+
+       
+Delete NS
+    [Documentation]  Delete ns
+    [Arguments]  ${ns}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-delete ${ns}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+
+    WAIT UNTIL KEYWORD SUCCEEDS  ${ns_delete_max_wait_time}   ${ns_delete_pol_time}   Check For NS Instance To Be Delete   ${ns}
+
+
+Check For NS Instance To Configured
+    [Arguments]  ${ns_name}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-list --filter name="${ns_name}"
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+    Should Contain Any      ${stdout}   configured    failed
+
+
+Check For NS Instance For Failure
+    [Arguments]  ${ns_name}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-list --filter name="${ns_name}"
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+    Should Not Contain      ${stdout}   failed
+
+
+Check For NS Instance To Be Delete
+    [Arguments]  ${ns}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-list
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+    Should Not Contain      ${stdout}   ${ns}
+
+
+Force Delete NS
+    [Documentation]  Forcely Delete ns
+    [Arguments]  ${ns}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm ns-delete ${ns}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS    ${ns_delete_max_wait_time}   ${ns_delete_pol_time}   Check For NS Instance To Be Delete   ${ns}
diff --git a/robot-systest/lib/cli/nsd_lib.robot b/robot-systest/lib/cli/nsd_lib.robot
new file mode 100644 (file)
index 0000000..6a4ccbf
--- /dev/null
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+*** Variables ***
+${success_return_code}    0
+${delete_max_wait_time}    1min
+${delete_pol_time}    15sec
+
+
+*** Keywords ***
+Get NSDs List
+    [Documentation]  Get nsds list
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm nsd-list
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+
+
+Create NSD
+    [Documentation]  Create nsd at osm
+    [Arguments]  ${nsd_pkg}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm nsd-create ${nsd_pkg}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    [Return]  ${stdout}
+
+
+Delete NSD
+    [Documentation]  Delete nsd
+    [Arguments]  ${nsd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm nsd-delete ${nsd_id}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS    ${delete_max_wait_time}   ${delete_pol_time}   Check For NSD   ${nsd_id}
+
+
+Check For NSD
+    [Arguments]  ${nsd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm nsd-list
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    Should Not Contain      ${stdout}   ${nsd_id}
+
+
+Force Delete NSD
+    [Documentation]  Forcely Delete nsd
+    [Arguments]  ${nsd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm nsd-delete ${nsd_id}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
+
+
+Build NS Descriptor
+    [Documentation]  Build NS Descriptor from the descriptor-packages
+    [Arguments]  ${nsd path}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           make -C '${CURDIR}${/}../../..${nsd path}'
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}   ${success_return_code}
diff --git a/robot-systest/lib/cli/vim_account_lib.robot b/robot-systest/lib/cli/vim_account_lib.robot
new file mode 100644 (file)
index 0000000..699d199
--- /dev/null
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+
+*** Variables ***
+${success_return_code}    0
+${name}     "helloworld-os"
+${user}     "robottest"
+${password}     "fred"
+${authurl}      "https://169.254.169.245/"
+${type}     "openstack"
+${desc}     "a test vim"
+${tenant}   "robottest2"
+
+
+*** Keywords ***
+Create Vim Account
+    [Documentation]   Create a new vim account
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-create --name ${name} --user ${user} --password ${password} --auth_url ${authurl} --tenant ${tenant} --account_type ${type} --description ${desc}
+    log  ${stdout}
+    Should Be Equal As Integers        ${rc}    ${success_return_code}
+
+
+Get Vim List
+    [Documentation]  Get a vim account list
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-list
+    log     ${stdout}
+    Log To Console  ${stdout}
+    Should Be Equal As Integers        ${rc}    ${success_return_code}
+
+
+Delete Vim Account
+    [Documentation]  delete vim account details
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-delete ${name}
+    log  ${stdout}
+    Should Be Equal As Integers        ${rc}    ${success_return_code}
+
+
+VIM Setup To Launch Network Services
+    [Documentation]  Setup a VIM to launch network services
+
+    ${vmware_url}=  Get Environment Variable    VCD_AUTH_URL   ${EMPTY}
+    ${openstack_url}=   Get Environment Variable    OS_AUTH_URL   ${EMPTY}
+    ${vmware_vim}=    Run Keyword And Return If   '${vmware_url}'!='${EMPTY}'   Setup Vmware Vim   ${vmware_url}   'vmware'      'pytest system test'
+    ${openstack_vim}=    Run Keyword And Return If   '${openstack_url}'!='${EMPTY}'   Setup Openstack Vim    ${openstack_url}    'openstack'   'pytest system test'
+
+    Log Many   @{vim}
+
+
+Setup Openstack Vim
+    [Documentation]  Openstack Vim Account Setup
+    [Arguments]  ${authurl}  ${type}     ${desc}
+
+    ${user}=  Get Environment Variable    OS_USERNAME   ''
+    ${password}=  Get Environment Variable    OS_PASSWORD   ''
+    ${tenant}=  Get Environment Variable    OS_PROJECT_NAME   ''
+    ${vim-config}=  Get Environment Variable    OS_VIM_CONFIG   ''
+    ${vim_name}=    GENERATE NAME
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-create --name ${vim_name} --user ${user} --password ${password} --auth_url ${authurl} --tenant ${tenant} --account_type ${type} --description ${desc} --config ${vim-config}
+    log  ${stdout}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
+    Append To List     ${vim}       ${stdout}
+    [Return]  ${stdout}
+
+
+Setup Vmware Vim
+    [Documentation]  Vmware Vim Account Setup
+    [Arguments]  ${authurl}  ${type}     ${desc}
+
+    ${user}=  Get Environment Variable    VCD_USERNAME   ''
+    ${password}=  Get Environment Variable    VCD_PASSWORD   ''
+    ${tenant}=  Get Environment Variable    VCD_TENANT_NAME   ''
+    ${vcd-org}=  Get Environment Variable    VCD_ORGANIZATION   ''
+    ${vim-config}=  Get Environment Variable    VCD_VIM_CONFIG   ''
+    ${vim_name}=    GENERATE NAME
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-create --name ${vim_name} --user ${user} --password ${password} --auth_url ${authurl} --tenant ${tenant} --account_type ${type} --description ${desc} --config ${vim-config}
+    log  ${stdout}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
+    Append To List     ${vim}       ${stdout}
+    [Return]  ${stdout}
+
+
+Force Delete Vim Account
+    [Documentation]  delete vim account details
+    [Arguments]  ${vim_name}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vim-delete ${vim_name}
+    log  ${stdout}
+    Should Be Equal As Integers        ${rc}    ${success_return_code}
diff --git a/robot-systest/lib/cli/vnfd_lib.robot b/robot-systest/lib/cli/vnfd_lib.robot
new file mode 100644 (file)
index 0000000..1b99f43
--- /dev/null
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+*** Variables ***
+${success_return_code}    0
+${delete_max_wait_time}    1min
+${delete_pol_time}    15sec
+
+
+*** Keywords ***
+Get VNFDs List
+    [Documentation]  Get vnfds list
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vnfd-list
+    log     ${stdout}
+    log     ${rc}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+
+
+Create VNFD
+    [Documentation]  Create vnfd at osm
+    [Arguments]  ${vnfd_pkg}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vnfd-create ${vnfd_pkg}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    [Return]  ${stdout}
+
+
+Delete VNFD
+    [Documentation]  Delete vnfd
+    [Arguments]  ${vnfd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vnfd-delete ${vnfd_id}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    WAIT UNTIL KEYWORD SUCCEEDS    ${delete_max_wait_time}   ${delete_pol_time}   Check For VNFD   ${vnfd_id}
+
+
+Check For VNFD
+    [Arguments]  ${vnfd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vnfd-list
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+    Should Not Contain      ${stdout}   ${vnfd_id}
+
+
+Force Delete VNFD
+    [Documentation]  Forcely Delete vnfd
+    [Arguments]  ${vnfd_id}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           osm vnfd-delete ${vnfd_id}
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
+
+
+Build VNF Descriptor
+    [Documentation]  Build VNF Descriptor from the descriptor-packages
+    [Arguments]  ${vnfd path}
+
+    ${rc}   ${stdout}=      Run and Return RC and Output           make -C '${CURDIR}${/}../../..${vnfd path}'
+    log     ${stdout}
+    Should Be Equal As Integers        ${rc}     ${success_return_code}
diff --git a/robot-systest/lib/client_lib/client_lib.py b/robot-systest/lib/client_lib/client_lib.py
new file mode 100644 (file)
index 0000000..c9390ae
--- /dev/null
@@ -0,0 +1,69 @@
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+
+from osmclient import client
+from robot.api import logger
+import json
+
+
+class ClientLib:
+    def __init__(self, host="127.0.0.1", user=None, password=None, project=None):
+
+        kwargs = {}
+        if user is not None:
+            kwargs['user'] = user
+        if password is not None:
+            kwargs['password'] = password
+        if project is not None:
+            kwargs['project'] = project
+        self.client = client.Client(host=host, sol005=True, **kwargs)
+
+    def get_vim_list(self):
+        resp = self.client.vim.list()
+        logger.info('VIM List: {}'.format(resp))
+        return json.dumps(resp)
+
+    def create_vim_account(self, name, vim_type, user, password, auth_url, tenant, desc='', config=None):
+        vim_access = {}
+        if config is not None:
+            vim_access['config'] = config
+        vim_access['vim-type'] = vim_type
+        vim_access['vim-username'] = user
+        vim_access['vim-password'] = password
+        vim_access['vim-url'] = auth_url
+        vim_access['vim-tenant-name'] = tenant
+        vim_access['description'] = desc
+
+        resp = self.client.vim.create(name, vim_access)
+        logger.info('Create VIM Account: {}'.format(resp))
+        return json.dumps(resp)
+
+    def delete_vim_account(self, name):
+        resp = self.client.vim.delete(name)
+        return json.dumps(resp)
+
+    def get_vnfd_list(self):
+        resp = self.client.vnfd.list()
+        logger.info('VNF Descriptor List: {}'.format(resp))
+        return json.dumps(resp)
+
+    def get_nsd_list(self):
+        resp = self.client.nsd.list()
+        logger.info('NS Descriptor List: {}'.format(resp))
+        return json.dumps(resp)
diff --git a/robot-systest/lib/custom_lib.py b/robot-systest/lib/custom_lib.py
new file mode 100644 (file)
index 0000000..5eb162f
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+from haikunator import Haikunator
+
+
+def generate_name():
+    haikunator = Haikunator()
+    name = haikunator.haikunate(delimiter='_', token_length=2)
+    return name
diff --git a/robot-systest/lib/gui/login_gui.robot b/robot-systest/lib/gui/login_gui.robot
new file mode 100644 (file)
index 0000000..c125664
--- /dev/null
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+*** Variables ***
+${DESIRED_CAPABILITIES}    desired_capabilities
+${BROWSER}        Chrome
+${DELAY}          0
+${VALID USER}     admin
+${VALID PASSWORD}    admin
+${LOGIN URL}      /auth/
+${WELCOME URL}    /projects/
+${NS LIST URL}    /packages/ns/list
+${VNF LIST URL}    /packages/vnf/list
+
+
+*** Keywords ***
+Set Server URL
+    ${env_host}=    Get Environment Variable    OSM_HOSTNAME
+    ${passed}=    Run Keyword And Return Status    Should Contain    ${env_host}    :
+    Run Keyword If    ${passed}    Set Dockerized Host
+    ...    ELSE    Set Standalone Host    ${env_host}
+
+
+Open Browser To Login Page
+    ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
+    Call Method    ${chrome_options}   add_argument    headless
+    Call Method    ${chrome_options}   add_argument    disable-gpu
+    Call Method    ${chrome_options}   add_argument    no-sandbox
+    ${options}=     Call Method     ${chrome_options}    to_capabilities
+    Open Browser    ${SERVER}${LOGIN URL}    ${BROWSER}    desired_capabilities=${options}
+    Maximize Browser Window
+    Set Selenium Speed    ${DELAY}
+    Login Page Should Be Open
+
+
+Login Page Should Be Open
+    Element Text Should Be    //*[@id="main_content"]/div/div[2]/p    Sign in to start your session
+
+
+Enter Credentials
+    [Arguments]    ${username}    ${password}
+    Input Text    name:username    ${username}
+    Input Password    name:password    ${password}
+
+
+Submit Credentials
+    Click Button    //*[@id="main_content"]/div/div[2]/form/div[3]/div[2]/button
+
+
+Home Page Should Be Open
+    Location Should Be    ${SERVER}${WELCOME URL}
+#    Element Should Contain    id:title_header    6e3a8415-9014-4100-9727-90e0150263be    ignore_case=True
+    Element Attribute Value Should Be    //*[@id="main_content"]/div/div[2]/div[1]/div[1]/div/a    href    ${SERVER}${NS LIST URL}
+    Element Attribute Value Should Be    //*[@id="main_content"]/div/div[2]/div[1]/div[2]/div/a    href    ${SERVER}${VNF LIST URL}
+
+
+Set Dockerized Host
+
+    Set Suite Variable     ${SERVER}   http://light-ui
+
+
+Set Standalone Host
+    [Arguments]  ${env_host}
+
+    Set Suite Variable     ${SERVER}   http://${env_host}
diff --git a/robot-systest/resource/api/common.robot b/robot-systest/resource/api/common.robot
new file mode 100644 (file)
index 0000000..9342316
--- /dev/null
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com
+##
+
+
+*** Variables ***
+&{HEADERS}     Content-Type=application/json       Accept=application/json
+&{data}        username=admin      password=admin      project-id=admin
+@{success_status_code_list}     200     201     202    204
+
+${descriptor_content_type_gzip}   application/gzip
+
+${auth_token_uri}   /osm/admin/v1/tokens
+
+${get_all_vnfd_uri}   /osm/vnfpkgm/v1/vnf_packages
+${create_vnfd_uri}   /osm/vnfpkgm/v1/vnf_packages_content
+${delete_vnfd_uri}   /osm/vnfpkgm/v1/vnf_packages
+
+${get_all_nsd_uri}   /osm/nsd/v1/ns_descriptors
+${create_nsd_uri}   /osm/nsd/v1/ns_descriptors_content
+${delete_nsd_uri}   /osm/nsd/v1/ns_descriptors
+
+${base_ns_uri}   /osm/nslcm/v1/ns_instances_content
+${create_ns_uri}   /osm/nslcm/v1/ns_instances_content
+
+${create_vim_uri}   /osm/admin/v1/vim_accounts
diff --git a/robot-systest/resource/api/variables.py b/robot-systest/resource/api/variables.py
new file mode 100644 (file)
index 0000000..a97763a
--- /dev/null
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+
+# Create/Delete Vim Account
+vim_name = 'API-TEST-VIM'
+account_type = 'openstack'
+auth_url = 'http://127.0.0.1:5000/v3'
+user = 'admin'
+password = 'admin'
+tenant = 'admin'
+description = 'Test OpenStack Vim Account'
diff --git a/robot-systest/resource/cli/hackfest_basic_ns_data.py b/robot-systest/resource/cli/hackfest_basic_ns_data.py
new file mode 100644 (file)
index 0000000..8b8054b
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/hackfest_basic_vnf"
+vnfdPckg = '/build/hackfest_basic_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/hackfest_basic_ns"
+nsdPckg = '/build/hackfest_basic_ns.tar.gz'
diff --git a/robot-systest/resource/cli/hackfest_cloudinit_ns_data.py b/robot-systest/resource/cli/hackfest_cloudinit_ns_data.py
new file mode 100644 (file)
index 0000000..d725a36
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/hackfest_cloudinit_vnf"
+vnfdPckg = '/build/hackfest_cloudinit_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/hackfest_cloudinit_ns"
+nsdPckg = '/build/hackfest_cloudinit_ns.tar.gz'
diff --git a/robot-systest/resource/cli/hackfest_epa_ns_data.py b/robot-systest/resource/cli/hackfest_epa_ns_data.py
new file mode 100644 (file)
index 0000000..8975e31
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/hackfest_epasriov_vnf"
+vnfdPckg = '/build/hackfest_epasriov_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/hackfest_epasriov_ns"
+nsdPckg = '/build/hackfest_epasriov_ns.tar.gz'
diff --git a/robot-systest/resource/cli/hackfest_multivdu_ns_data.py b/robot-systest/resource/cli/hackfest_multivdu_ns_data.py
new file mode 100644 (file)
index 0000000..5ecb9e8
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/hackfest_multivdu_vnf"
+vnfdPckg = '/build/hackfest_multivdu_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/hackfest_multivdu_ns"
+nsdPckg = '/build/hackfest_multivdu_ns.tar.gz'
diff --git a/robot-systest/resource/cli/hackfest_simplecharm_ns_data.py b/robot-systest/resource/cli/hackfest_simplecharm_ns_data.py
new file mode 100644 (file)
index 0000000..5ffcd35
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/hackfest_simplecharm_vnf"
+vnfdPckg = '/build/hackfest_simplecharm_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/hackfest_simplecharm_ns"
+nsdPckg = '/build/hackfest_simplecharm_ns.tar.gz'
diff --git a/robot-systest/resource/cli/test_vnf_data.py b/robot-systest/resource/cli/test_vnf_data.py
new file mode 100644 (file)
index 0000000..02ee065
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com
+##
+
+
+# VNFD Details
+vnfdPckgPath = "/descriptor-packages/vnfd/cirros_vnf"
+vnfdPckg = '/build/cirros_vnf.tar.gz'
+
+# NSD Details
+nsdPckgPath = "/descriptor-packages/nsd/cirros_ns"
+nsdPckg = '/build/cirros_ns.tar.gz'
diff --git a/robot-systest/run_test.sh b/robot-systest/run_test.sh
new file mode 100644 (file)
index 0000000..74f8aa1
--- /dev/null
@@ -0,0 +1,108 @@
+#!/usr/bin/env bash
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+#   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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-Sep-2019
+# Entry script to start the vim, smoke, openstack_stage_4 and comprehensive test using Robot Framework as a Automation Test Framework
+##
+
+BASEDIR=$(dirname "$0")
+TOPDIR=$(dirname "$BASEDIR")
+DESCRIPTOR_DIR=$TOPDIR/descriptor-packages
+
+
+robot_prerequisite(){
+    echo -e "\nInstalling robot requirements"
+    # installing python packages
+    pip install haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests
+
+    # installing chrome driver and chrome for UI testing
+    curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
+    echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
+    apt-get update && apt-get -y install google-chrome-stable chromium-chromedriver
+}
+
+while getopts ":t:-:" o; do
+    case "${o}" in
+        t)
+            TEST=${OPTARG}
+            ;;
+        -)
+            [[ "${OPTARG}" == "do_install" ]] && robot_prerequisite && continue
+            ;;
+        \?)
+            echo -e "Invalid option: '-$OPTARG'\n" >&2
+            exit 1
+            ;;
+    esac
+done
+
+if [[ -z $TEST ]]; then
+    printf "Test not provided. \nRunning default test: smoke\n"
+    TEST="smoke"
+fi
+
+if [[ "$TEST" == "vim" ]]; then
+    echo "Robot Framework Vim Test"
+    robot -d $BASEDIR/reports -i vim $BASEDIR/testsuite/
+    exit 0
+elif [[ "$TEST" == "smoke" ]]; then
+    echo "Robot Framework SMOKE test"
+    robot -d $BASEDIR/reports -i smoke $BASEDIR/testsuite/
+    exit 0
+elif [[ "$TEST" == "sanity" ]]; then
+    echo "Robot Framework Cirros VNF Test"
+    mkdir -p $BASEDIR/images/cache
+    if [[ ! -z $OS_AUTH_URL ]]; then
+        (openstack image show cirros-0.3.5-x86_64-disk.img) || (wget -r -nc http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img && make $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img && openstack image create --file $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img cirros-0.3.5-x86_64-disk.img)
+    fi
+    if [[ ! -z $VCD_AUTH_URL ]]; then
+#        TODO: Check for image over VIM before downloading
+        if [[ ! -s $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img ]]; then
+            wget -r -nc http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img -O $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img
+        fi
+        ovf_converter $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img -n cirros
+        python $TOPDIR/tools/vmware_ovf_upload.py $VCD_AUTH_URL $VCD_USERNAME $VCD_PASSWORD $VCD_ORGANIZATION $BASEDIR/images/cache/cirros.ovf
+    fi
+    robot -d $BASEDIR/reports -i sanity $BASEDIR/testsuite/
+    exit 0
+elif [[ "$TEST" == "comprehensive" ]]; then
+    echo "Robot Framework Comprehensive Test"
+    mkdir -p $BASEDIR/images/cache
+    if [[ ! -z $OS_AUTH_URL ]]; then
+        (openstack image show ubuntu1604) || (wget -r -nc https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -O $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && make $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && openstack image create --file $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img ubuntu1604)
+        (openstack image show hackfest3-mgmt) || (wget -r -nc https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -O $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && make $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && openstack image create --file $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img hackfest3-mgmt)
+    fi
+    if [[ ! -z $VCD_AUTH_URL ]]; then
+#        TODO: Check for image over VIM before downloading
+        if [[ ! -s $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img ]]; then
+            wget -r -nc https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -O $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img
+        fi
+        ovf_converter $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img -n ubuntu1604
+        python $TOPDIR/tools/vmware_ovf_upload.py $VCD_AUTH_URL $VCD_USERNAME $VCD_PASSWORD $VCD_ORGANIZATION $BASEDIR/images/cache/ubuntu1604.ovf
+    fi
+    robot -d $BASEDIR/reports -i comprehensive $BASEDIR/testsuite/
+    exit 0
+else
+    echo "wrong test provided"
+    exit 1
+fi
+
+exit 1
diff --git a/robot-systest/testsuite/api/TS01__Vim_Account.robot b/robot-systest/testsuite/api/TS01__Vim_Account.robot
new file mode 100644 (file)
index 0000000..be04c3f
--- /dev/null
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create and delete vim account
+Library     Collections
+Library     RequestsLibrary
+Library     OperatingSystem
+Resource    ../../lib/api/common.robot
+Resource    ../../lib/api/vim_lib.robot
+Resource    ../../resource/api/common.robot
+Variables   ../../resource/api/variables.py
+
+Suite Setup     Get Auth Token
+Suite Teardown  Delete All Sessions
+
+
+*** Variables ***
+${vim_id}   ${EMPTY}
+
+
+*** Test Cases ***
+Create Vim Account
+    [Tags]    comprehensive   api_vim_test
+    [Template]  Create Vim
+    ${vim name}     ${account type}     ${auth url}     ${user}     ${password}     ${tenant}       ${description}
+
+
+Delete Vim Account
+    [Tags]    comprehensive   api_vim_test
+    [Template]  Delete Vim
+    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS01__Test_VNF.robot b/robot-systest/testsuite/cli/TS01__Test_VNF.robot
new file mode 100644 (file)
index 0000000..08a4e0e
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to test basic cirros VNF and NS using osm-client
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/test_vnf_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+#${vim_name}     robot_test
+
+
+*** Test Cases ***
+Create VNF Descriptor Test
+    [Tags]    sanity    smoke
+
+    Build VNF Descriptor    ${vnfdPckgPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create NS Descriptor Test
+    [Tags]    sanity     smoke
+
+    Build NS Descriptor    ${nsdPckgPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]    sanity
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]    sanity     smoke
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]    sanity    smoke
+
+    :FOR    ${vnfd}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd}
+
+    :FOR    ${vnfd}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS02__Test_Vim.robot b/robot-systest/testsuite/cli/TS02__Test_Vim.robot
new file mode 100644 (file)
index 0000000..18f2a50
--- /dev/null
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-aug-2019 : Improvement to the code, robot framework initial seed code.
+##
+
+
+*** Settings ***
+Documentation    Test suiet to create/delete vim account via osmclient
+Library     OperatingSystem
+Library     Collections
+Resource    ../../lib/cli/vim_account_lib.robot
+
+
+*** Test Cases ***
+Create Vim Account Test
+    [Tags]  smoke    vim
+
+    Create Vim Account
+
+
+Get Vim Accounts List Test
+    [Tags]  vim
+
+    Get Vim List
+
+
+Delete Vim Account Test
+    [Tags]  smoke    vim
+
+    Delete Vim Account
diff --git a/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot b/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot
new file mode 100644 (file)
index 0000000..d55540a
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create hackfest basic nestwork service
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/hackfest_basic_ns_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+${nsd_id}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+
+
+*** Test Cases ***
+Create Hackfest Basic VNF Descriptor
+    [Tags]   comprehensive   hackfest_basic_ns
+
+    Build VNF Descriptor    ${vnfdPckgPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create Hackfest Basic NS Descriptor
+    [Tags]   comprehensive   hackfest_basic_ns
+
+    Build NS Descriptor    ${nsdPckgPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]   comprehensive   hackfest_basic_ns
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]   comprehensive   hackfest_basic_ns
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]   comprehensive   hackfest_basic_ns
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd_id}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd_id}
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd_id}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns_id}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns_id}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot b/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot
new file mode 100644 (file)
index 0000000..7439259
--- /dev/null
@@ -0,0 +1,114 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create hackfest simplecharm ns
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/hackfest_simplecharm_ns_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+${nsd_id}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+${vnfdftpPath}    https://osm-download.etsi.org/ftp/osm-6.0-six/7th-hackfest/packages/hackfest_simplecharm_vnf.tar.gz
+${nsdftpPath}    https://osm-download.etsi.org/ftp/osm-6.0-six/7th-hackfest/packages/hackfest_simplecharm_ns.tar.gz
+
+
+*** Test Cases ***
+Create Hackfest Simple Charm VNF Descriptor
+    [Tags]   hackfest_simplecharm    comprehensive
+
+    #Build VNF Descriptor    ${vnfdPckgPath}
+    #Workarround for charm build issue
+    ${rc}   ${stdout}=      Run and Return RC and Output           wget -P '${CURDIR}${/}../../..${vnfdPckgPath}${/}build/' ${vnfdftpPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create Hackfest Simple Charm NS Descriptor
+    [Tags]   hackfest_simplecharm    comprehensive
+
+    #Build NS Descriptor    ${nsdPckgPath}
+       ${rc}   ${stdout}=      Run and Return RC and Output        wget -P '${CURDIR}${/}../../..${nsdPckgPath}${/}build/' ${nsdftpPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]   hackfest_simplecharm    comprehensive
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]   hackfest_simplecharm    comprehensive
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]   hackfest_simplecharm    comprehensive
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd_id}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd_id}
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd_id}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns_id}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns_id}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot b/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot
new file mode 100644 (file)
index 0000000..7fa6c24
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create hackfest multivdu ns
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/hackfest_multivdu_ns_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+${nsd_id}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+
+
+*** Test Cases ***
+Create Hackfest Multivdu VNF Descriptor
+    [Tags]   comprehensive   hackfest_multivdu
+
+    Build VNF Descriptor    ${vnfdPckgPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create Hackfest Multivdu NS Descriptor
+    [Tags]   comprehensive   hackfest_multivdu
+
+    Build NS Descriptor    ${nsdPckgPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]   comprehensive   hackfest_multivdu
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]   comprehensive   hackfest_multivdu
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]   comprehensive   hackfest_multivdu
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd_id}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd_id}
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd_id}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns_id}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns_id}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot b/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot
new file mode 100644 (file)
index 0000000..a43f3a2
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create hackfest cloudinit ns
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/hackfest_cloudinit_ns_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+${nsd_id}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+
+
+*** Test Cases ***
+Create Hackfest Cloudinit VNF Descriptor
+    [Tags]   comprehensive   hackfest_cloudinit
+
+    Build VNF Descriptor    ${vnfdPckgPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create Hackfest Cloudinit NS Descriptor
+    [Tags]   comprehensive   hackfest_cloudinit
+
+    Build NS Descriptor    ${nsdPckgPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]   comprehensive   hackfest_cloudinit
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]   comprehensive   hackfest_cloudinit
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]   comprehensive   hackfest_cloudinit
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd_id}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd_id}
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd_id}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns_id}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns_id}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot b/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot
new file mode 100644 (file)
index 0000000..2d8d3be
--- /dev/null
@@ -0,0 +1,109 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Mrityunjay Yadav, Jayant Madavi : MY00514913@techmahindra.com : 06-aug-2019
+##
+
+
+*** Settings ***
+Documentation    Test Suite to create hackfest epa ns
+Library     OperatingSystem
+Library     String
+Library     Collections
+Resource    ../../lib/cli/vnfd_lib.robot
+Resource    ../../lib/cli/nsd_lib.robot
+Resource    ../../lib/cli/ns_lib.robot
+Resource    ../../lib/cli/vim_account_lib.robot
+Library     ../../lib/custom_lib.py
+Variables   ../../resource/cli/hackfest_epa_ns_data.py
+
+Suite Teardown     Run Keyword And Ignore Error    Test Cleanup
+
+
+*** Variables ***
+@{vnfd_ids}
+${nsd_id}
+@{nsd_ids}
+@{ns_ids}
+@{vim}
+
+
+*** Test Cases ***
+Create Hackfest EPA VNF Descriptor
+    [Tags]     hackfest_epa
+
+    Build VNF Descriptor    ${vnfdPckgPath}
+    ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
+    Append To List     ${vnfd_ids}       ${vnfd_id}
+
+
+Create Hackfest EPA NS Descriptor
+    [Tags]     hackfest_epa
+
+    Build NS Descriptor    ${nsdPckgPath}
+    ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
+    Append To List     ${nsd_ids}       ${nsd_id}
+
+
+Network Service Instance Test
+    [Documentation]  Launch and terminate network services
+    [Tags]    hackfest_epa
+    [Setup]  VIM Setup To Launch Network Services
+    [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
+
+    Should Not Be Empty    ${vim}    VIM details not provided
+    :FOR    ${vim_name}    IN    @{vim}
+    \    Launch Network Services and Return    ${vim_name}
+
+
+Delete NS Descriptor Test
+    [Tags]    hackfest_epa
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Delete NSD      ${nsd}
+
+
+Delete VNF Descriptor Test
+    [Tags]    hackfest_epa
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Delete VNFD     ${vnfd_id}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suit Cleanup: Forcefully delete NSD and VNFD
+
+    :FOR    ${nsd}  IN   @{nsd_ids}
+    \   Force Delete NSD      ${nsd_id}
+
+    :FOR    ${vnfd_id}  IN   @{vnfd_ids}
+    \   Force Delete VNFD     ${vnfd_id}
+
+
+Network Service Instance Cleanup
+    [Documentation]  Forcefully delete created network service instances and vim account
+
+    :FOR    ${ns_id}  IN   @{ns_ids}
+    \   Force Delete NS   ${ns_id}
+
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot b/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot
new file mode 100644 (file)
index 0000000..42b455a
--- /dev/null
@@ -0,0 +1,82 @@
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+
+*** Settings ***
+Documentation    Test suite to test osmclient python library
+Library     OperatingSystem
+
+Suite Setup    Setup OSM Client
+
+
+*** Variables ***
+${name}     helloworld-os
+${user}     robottest
+${password}     fred
+${authurl}      https://169.254.169.245/
+${type}     openstack
+${desc}     a test vim
+${tenant}    robottest
+
+
+*** Test Cases ***
+Get VIM Account List Test
+    [Tags]    comprehensive    osmclient_lib
+    [Documentation]    Using python's osmclient library to get vim account list
+
+    ${vim_list}=    osmclient.get_vim_list
+    log to console    ${vim_list}
+    log  ${vim_list}
+
+
+Get VNF Descriptor List Test
+    [Tags]    comprehensive    osmclient_lib
+    [Documentation]    Using python's osmclient library to get vnfd list
+
+    ${vnfd_list}=    osmclient.get_vnfd_list
+    log to console    ${vnfd_list}
+    log  ${vnfd_list}
+
+
+Get NS Descriptor List Test
+    [Tags]    comprehensive    osmclient_lib
+    [Documentation]    Using python's osmclient library to get nsd list
+
+    ${nsd_list}=    osmclient.get_nsd_list
+    log to console    ${nsd_list}
+    log  ${nsd_list}
+
+
+Create Vim Account Test
+    [Tags]    comprehensive    osmclient_lib
+    [Documentation]    Using python's osmclient library to create vim account
+    [Template]    osmclient.create_vim_account
+    ${name}  ${type}  ${user}  ${password}  ${authurl}  ${tenant}  ${desc}
+
+
+Delete Vim Account Test
+    [Tags]    comprehensive    osmclient_lib
+    [Documentation]    Using python's osmclient library to delete vim account
+    osmclient.delete_vim_account    ${name}
+
+
+*** Keywords ***
+Setup OSM Client
+    evaluate    sys.path.append('${CURDIR}${/}../../lib/client_lib')    modules=sys
+    ${host}=    Get Environment Variable    OSM_HOSTNAME    127.0.0.1
+    Import Library    ClientLib    host=${host}    WITH NAME    osmclient
diff --git a/robot-systest/testsuite/gui/TS01__Test_GUI_Login.robot b/robot-systest/testsuite/gui/TS01__Test_GUI_Login.robot
new file mode 100644 (file)
index 0000000..4f20a18
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com
+##
+
+
+*** Settings ***
+Documentation    Suite description
+Library          SeleniumLibrary
+Library          OperatingSystem
+Resource         ../../lib/gui/login_gui.robot
+
+
+*** Test Cases ***
+Valid Login
+    [Tags]    comprehensive   gui_login_test
+    [Setup]    Set Server URL
+    Open Browser To Login Page
+    Enter Credentials    admin    admin
+    Submit Credentials
+    Home Page Should Be Open
+    [Teardown]    Close Browser