blob: 28bb872ac7983323a3ea1cc5ea262e534196eefd [file] [log] [blame]
# Copyright 2020 Atos
#
# 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 ***
Library Collections
*** Variables ***
${success_return_code} 0
${slice_launch_max_wait_time} 5min
${slice_launch_pol_time} 30sec
${slice_delete_max_wait_time} 1min
${slice_delete_pol_time} 15sec
*** Keywords ***
Create Network Slice
[Documentation] Instantiates a NST and returns an instantiation id (nsi), verifying the slice is successfully instantiated
... Parameters:
... nst: Name of the slice template
... vim_name: Name of the VIM entry already in OSM
... slice_name: Name of the slice instance
... slice_config: Extra parameters that might require the slice instantiation i.e. configuration attributes
... publickey: SSH public key of the local machine
... Execution example:
... \${nsi}= Create Network Slice \${nst} \${vim_name} \${slice_name} \${slice_config} \${publickey}
[Arguments] ${nst} ${vim_name} ${slice_name} ${slice_config} ${publickey}
${config_attr} Set Variable If '${slice_config}'!='${EMPTY}' --config '${slice_config}' \
${sshkeys_attr} Set Variable If '${publickey}'!='${EMPTY}' --ssh_keys ${publickey} \
${nsi_id}= Instantiate Network Slice ${slice_name} ${nst} ${vim_name} ${config_attr} #${sshkeys_attr}
log ${nsi_id}
WAIT UNTIL KEYWORD SUCCEEDS ${slice_launch_max_wait_time} ${slice_launch_pol_time} Check For Network Slice Instance To Configured ${slice_name}
Check For Network Slice Instance For Failure ${slice_name}
[Return] ${nsi_id}
Instantiate Network Slice
[Documentation] Instantiates a NST and returns an instantiation id (nsi)
... Parameters:
... slice_name: Name of the slice instance
... nst: Name of the slice template
... vim_name: Name of the VIM entry already in OSM
... slice_extra_args: Extra parameters that might require the slice instantiation i.e. configuration attributes
... Execution example:
... \${nsi}= Instantiate Network Slice \${slice_name} \${nst} \${vim_name} \${config_attr}
[Arguments] ${slice_name} ${nst} ${vim_name} ${slice_extra_args}
${rc} ${stdout}= Run and Return RC and Output osm nsi-create --nsi_name ${slice_name} --nst_name ${nst} --vim_account ${vim_name} ${slice_extra_args}
log ${stdout}
Should Be Equal As Integers ${rc} ${success_return_code}
[Return] ${stdout}
Get Slice Ns List
[Documentation] Retrieves the list of NS in a slice
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... \@{slice_ns_list}= Get Slice Ns List \${slice_name}
[Arguments] ${slice_name}
Should Not Be Empty ${slice_name}
@{ns_list_string}= Run and Return RC and Output osm ns-list | grep ${slice_name} | awk '{print $4}' 2>&1
# Returns a String of ns_id and needs to be converted into a list
@{ns_list} = Split String ${ns_list_string}[1]
Log List ${ns_list}
[Return] @{ns_list}
Get Slice Ns List Except One
[Documentation] Retrieves the list of NS in a slice removing one from the list. This is done to save time in the tests, avoiding one VNF to ping itself.
... Parameters:
... slice_name: Name of the slice instance
... exception_ns: Name of the ns that will not appear in the final list
... Execution example:
... \@{slice_ns_list}= Get Slice Ns List Except One \${slice_name} \${exception_ns}
[Arguments] ${slice_name} ${exception_ns}
Should Not Be Empty ${slice_name}
Should Not Be Empty ${exception_ns}
@{ns_list_string}= Run and Return RC and Output osm ns-list | grep ${slice_name} | awk '!/${exception_ns}/' | awk '{print $4}' 2>&1
# Returns a String of ns_id and needs to be converted into a list
@{ns_list} = Split String ${ns_list_string}[1]
Log List ${ns_list}
[Return] @{ns_list}
Get Slice Ns Count
[Documentation] Returns the count of all the NS in a slice
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... \${slice_ns_count}= Get Slice Ns Count \${slice_name}
[Arguments] ${slice_name}
Should Not Be Empty ${slice_name}
${rc} ${stdout}= Run and Return RC and Output osm ns-list | grep ${slice_name} | wc -l 2>&1
log ${stdout}
Should Be Equal As Integers ${rc} ${success_return_code}
[Return] ${stdout}
Get Slice Vnf Ip Addresses
[Documentation] Retrieves the list of IP addresses that belong to each of the VNFs in the slice
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... \@{slice_ip_address_list}= Get Slice Vnf Ip Addresses \${slice_name}
[Arguments] ${slice_name}
# Get all the ns_id in the slice
@{slice_ns_list} Get Slice Ns List ${slice_name}
log many @{slice_ns_list}
@{temp_list}= Create List
# For each ns_id in the list, get all the vnf_id and their IP addresses
FOR ${ns_id} IN @{slice_ns_list}
log ${ns_id}
@{vnf_id_list} Get Ns Vnf List ${ns_id}
# For each vnf_id in the list, get all its IP addresses
@{ns_ip_list} Get Ns Ip List @{vnf_id_list}
@{temp_list}= Combine Lists ${temp_list} ${ns_ip_list}
END
Log List ${temp_list}
[Return] @{temp_list}
Check For Network Slice Instance To Configured
[Documentation] Verify the slice has been instantiated
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... Check For Network Slice Instance To Configured \${slice_name}
[Arguments] ${slice_name}
${rc} ${stdout}= Run and Return RC and Output osm nsi-list --filter name="${slice_name}"
log ${stdout}
Should Be Equal As Integers ${rc} ${success_return_code}
Should Contain Any ${stdout} READY BROKEN configured
Check For Network Slice Instance For Failure
[Documentation] Verify the slice instance is not in failure
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... Check For Network Slice Instance For Failure \${slice_name}
[Arguments] ${slice_name}
${rc} ${stdout}= Run and Return RC and Output osm nsi-list --filter name="${slice_name}"
log ${stdout}
Should Be Equal As Integers ${rc} ${success_return_code}
Should Not Contain ${stdout} BROKEN
Delete NSI
[Documentation] Delete Network Slice Instance (NSI)
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... Delete NST \${slice_name}
[Arguments] ${slice_name}
${rc} ${stdout}= Run and Return RC and Output osm nsi-delete ${slice_name}
log ${stdout}
Should Be Equal As Integers ${rc} ${success_return_code}
WAIT UNTIL KEYWORD SUCCEEDS ${slice_delete_max_wait_time} ${slice_delete_pol_time} Check For Network Slice Instance To Be Deleted ${slice_name}
Check For Network Slice Instance To Be Deleted
[Documentation] Verify the slice instance is not present
... Parameters:
... slice_name: Name of the slice instance
... Execution example:
... Check For Network Slice Instance \${slice_name}
[Arguments] ${slice_name}
${rc} ${stdout}= Run and Return RC and Output osm nsi-list | awk '{print $2}' | grep ${slice_name}
Should Not Be Equal As Strings ${stdout} ${slice_name}