X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Ftests.git;a=blobdiff_plain;f=robot-systest%2Flib%2Fnsi_lib.resource;fp=robot-systest%2Flib%2Fnsi_lib.resource;h=74c67a6af155556b4de1d1840f487a4fc1c64330;hp=0000000000000000000000000000000000000000;hb=7a9e031926d2fa7ed5041485b3d41b0c1e85d2a9;hpb=23ff8f980f66ef57fb4d254336a018e3a697a187 diff --git a/robot-systest/lib/nsi_lib.resource b/robot-systest/lib/nsi_lib.resource new file mode 100644 index 0000000..74c67a6 --- /dev/null +++ b/robot-systest/lib/nsi_lib.resource @@ -0,0 +1,186 @@ +*** Comments *** +# 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 *** +Documentation Library providing keywords for CRUD operations over Network Slice Instances with OSM client. + +Library Collections +Library OperatingSystem +Library DateTime +Library String + +Resource ns_lib.resource + + +*** Variables *** +${SUCCESS_RETURN_CODE} 0 +${SLICE_LAUNCH_POL_TIME} 30sec +${SLICE_DELETE_POL_TIME} 15sec +${VIM_TIMEOUT_MULTIPLIER} %{OSM_VIM_MULTIPLIER_TIMEOUT=1.0} + + +*** 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} ${slice_launch_max_wait_time}=6min ${config_file}=${EMPTY} + ${slice_launch_max_wait_time}= Convert Time ${slice_launch_max_wait_time} result_format=number + ${slice_launch_max_wait_time}= Evaluate ${slice_launch_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER} + ${config_attr}= Set Variable If "${slice_config}" != "${EMPTY}" --config '${slice_config}' ${EMPTY} + ${sshkeys_attr}= Set Variable If "${publickey}" != "${EMPTY}" --ssh_keys ${publickey} ${EMPTY} + ${config_file_attr}= Set Variable If "${config_file}" != "${EMPTY}" --config_file '${config_file}' ${EMPTY} + ${nsi_id}= Instantiate Network Slice ${slice_name} ${nst} ${vim_name} ${config_attr} ${config_file_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} ${sshkeys_attr} + ${rc} ${stdout}= Run And Return Rc And Output osm nsi-create --nsi_name ${slice_name} --nst_name ${nst} --vim_account ${vim_name} ${sshkeys_attr} ${slice_extra_args} + Log ${rc},${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} failed + +Delete NSI + [Documentation] Delete Network Slice Instance (NSI) + ... Parameters: + ... slice_name: Name of the slice instance + ... slice_delete_max_wait_time: Delete operation timeout + ... Execution example: + ... Delete NST \${slice_name} + [Arguments] ${slice_name} ${slice_delete_max_wait_time}=4min + ${rc} ${stdout}= Run And Return Rc And Output osm nsi-delete ${slice_name} + Log ${stdout} + Should Be Equal As Integers ${rc} ${SUCCESS_RETURN_CODE} + ${slice_delete_max_wait_time}= Convert Time ${slice_delete_max_wait_time} result_format=number + ${slice_delete_max_wait_time}= Evaluate ${slice_delete_max_wait_time} * ${VIM_TIMEOUT_MULTIPLIER} + 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} + Log ${rc},${stdout} + Should Not Be Equal As Strings ${stdout} ${slice_name}