+*** Settings ***
+Documentation Verify SMO succeeds to query inventory with O2ims APIs and correct token
+# Library REST ssl_verify=False loglevel=DEBUG
+Library REST ssl_verify=False
+Variables ${EXECDIR}${/}test_configs.yaml
+
+Suite Setup Set REST Headers
+
+*** Variables ***
+${ORAN_HOST_EXTERNAL_IP} ${ocloud.oran_o2_app.api.host}
+${ORAN_SERVICE_NODE_PORT} ${ocloud.oran_o2_app.api.node_port}
+${GLOBAL_OCLOUD_ID1} ${ocloud.oran_o2_app.g_ocloud_id}
+${SMO_TOKEN_DATA} ${ocloud.oran_o2_app.smo_token_data}
+${globalLocationId} ${ocloud.oran_o2_app.g_location_id}
+
+${ORAN_O2IMS_ENDPOINT} ${ocloud.oran_o2_app.api.protocol}://${ORAN_HOST_EXTERNAL_IP}:${ORAN_SERVICE_NODE_PORT}
+
+*** Test Cases ***
+s1, query o-cloud detail
+ [documentation] This test case verifies Query OCloud Detail
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS
+ # Builtin.Set Log Level DEBUG
+ # Set SSL Verify False
+ # Set Headers {"accept": "application/json"}
+ # Set Headers {"Authorization": "Bearer ${SMO_TOKEN_DATA}"}
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/ocloud_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/
+ # Output Schema response body ${CURDIR}/schemas/.output/ocloud_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ # Object response body
+ String $.globalcloudId ${GLOBAL_OCLOUD_ID1}
+ String $.serviceUri ${ORAN_O2IMS_ENDPOINT}
+
+ # all_fields
+ Expect Response Body ${CURDIR}/schemas/ocloud_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/ocloud_allfields_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+
+s2, query resource type list without filter
+ [documentation] This test case verifies Query OCloud resourceTypes without filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourceTypes_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes
+ # Output Schema response body ${CURDIR}/schemas/.output/resourceTypes_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+
+ # all_fields
+ Expect Response Body ${CURDIR}/schemas/resourceTypes_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/resourceTypes_allfields_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+
+
+s3, query resource type list with filters
+ [documentation] This test case verifies Query OCloud resourceTypes with filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourceTypes_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 maxItems=1
+ # String $[0].resourceTypeId
+ # String $[0].name
+ # String $[0].resourceKind
+ # String $[0].resourceClass
+ # String $[0].resourceTypeId
+
+s4, query resource type list with selectors
+ [documentation] This test case verifies query resource type list with selectors
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourceTypes_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?fields=name,description
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+
+s5, query Resource Type detail
+ [documentation] This test case verifies Query OCloud resourceTypes detail
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+ ${resourceTypeId} output $[0].resourceTypeId
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourceType_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes/${resourceTypeId}
+ # Output Schema response body ${CURDIR}/schemas/.output/resourceType_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+
+ # all_fields
+ Expect Response Body ${CURDIR}/schemas/resourceType_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes/${resourceTypeId}?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/resourceType_allfields_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ String $.alarmDictionary.managementInterfaceId "O2IMS"
+
+s6, query Resource Pool list without filter
+ [documentation] This test case verifies Query OCloud resourcePools without filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourcePools_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePools_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+
+ # # all_fields
+ # # Expect Response Body ${CURDIR}/schemas/resourcePools_allfields_properties.json
+ # ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePools_allfields_properties.json
+ # Clear Expectations
+ # log ${res} level=DEBUG
+ # Integer response status 200
+
+s7, query Resource Pool list with filter
+ [documentation] This test case verifies Query OCloud resourcePools with filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ ${resourcePoolId} output $[0].resourcePoolId
+
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourcePools_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools?filter=(eq,resourcePoolId,${resourcePoolId})
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePools_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 maxItems=1
+
+s8, query Resource Pool list with selector
+ [documentation] This test case verifies query Resource Pool list with selector
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourcePools_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePools_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+
+s9, query Resource Pool detail
+ [documentation] This test case verifies Query OCloud resourcePools detail
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ ${resourcePoolId} output $[0].resourcePoolId
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resourcePool_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePool_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+
+ # all_fields
+ Expect Response Body ${CURDIR}/schemas/resourcePool_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/resourcePool_allfields_properties.json
+ Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+
+
+s10, query Resource list of a Resource Pool without filter
+ [documentation] This test case verifies Query OCloud Resource list without filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resources_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources
+ # Output Schema response body ${CURDIR}/schemas/.output/resources_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+ END
+
+
+s11, query Resource list of a Resource Pool with filter
+ [documentation] This test case verifies Query OCloud Resource list with filter
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+ ${resourceTypeId} output $[0].resourceTypeId
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resources_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ # Output Schema response body ${CURDIR}/schemas/.output/resources_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+ END
+
+
+s12, query Resource list of a Resource Pool with selector
+ [documentation] This test case verifies query Resource list of a Resource Pool with selector
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+ ${resourceTypeId} output $[0].resourceTypeId
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+ # Clear Expectations
+ Expect Response Body ${CURDIR}/schemas/resources_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?exclude_default
+ # Output Schema response body ${CURDIR}/schemas/.output/resources_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Array response body
+ Array $ minItems=1 uniqueItems=true
+ END
+
+s13, query Resource detail
+ [documentation] This test case verifies Query OCloud Resource Detail of pserver
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+
+ # all_fields
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_allfields_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ ${description} output $.description
+ should contain ${description} hostname:
+ should contain ${description} id:
+ should contain ${description} personality:
+ should contain ${description} subfunctions:
+ should contain ${description} max_cpu_mhz_allowed:
+ should contain ${description} install_state:
+ should contain ${description} operational:
+ should contain ${description} availability:
+ should contain ${description} administrative:
+ should contain ${description} boot_device:
+ should contain ${description} mgmt_mac:
+ should contain ${description} clock_synchronization:
+ should contain ${description} rootfs_device:
+ Object $.extensions
+ String $.extensions['hostname']
+ Integer $.extensions['id']
+ String $.extensions['personality']
+ # String $.extensions['max_cpu_mhz_allowed']
+ # String $.extensions['install_state']
+ String $.extensions['operational']
+ String $.extensions['availability']
+ String $.extensions['administrative']
+ String $.extensions['boot_device']
+ String $.extensions['rootfs_device']
+ String $.extensions['subfunctions']
+ String $.extensions['mgmt_mac']
+ String $.extensions['clock_synchronization']
+
+ BREAK
+ END
+
+
+s14, query Resource detail of an accelerator
+ [documentation] This test case verifies Query OCloud Resource Detail of an accelerator
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver_acc)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource of accelerator"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ ${description} output $.description
+ should contain ${description} name:
+ should contain ${description} pdevice:
+ should contain ${description} pciaddr:
+ should contain ${description} pvendor_id:
+ should contain ${description} pvendor:
+ should contain ${description} pclass_id:
+ should contain ${description} pclass:
+ should contain ${description} psvendor:
+ should contain ${description} psdevice:
+ should contain ${description} sriov_totalvfs:
+ should contain ${description} sriov_numvfs:
+ should contain ${description} numa_node:
+ # should contain ${description} name:
+ # should contain ${description} class:
+ # should contain ${description} vendor:
+ Object $.extensions
+ String $.extensions['name']
+ String $.extensions['pdevice']
+ String $.extensions['pciaddr']
+ String $.extensions['pvendor_id']
+ String $.extensions['pvendor']
+ String $.extensions['pclass_id']
+ String $.extensions['pclass']
+ String $.extensions['psvendor']
+ String $.extensions['psdevice']
+ # Integer $.extensions['sriov_totalvfs']
+ Integer $.extensions['sriov_numvfs']
+ Integer $.extensions['numa_node']
+
+ BREAK
+ END
+
+s15, query Resource detail of an cpu
+ [documentation] This test case verifies Query OCloud Resource Detail of an cpu
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver_cpu)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource of accelerator"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ ${description} output $.description
+ should contain ${description} core:
+ should contain ${description} thread:
+ should contain ${description} allocated_function:
+ should contain ${description} numa_node:
+ should contain ${description} cpu_model:
+ should contain ${description} cpu_family:
+ should contain ${description} cpu:
+ Object $.extensions
+ Integer $.extensions['cpu']
+ Integer $.extensions['core']
+ Integer $.extensions['thread']
+ String $.extensions['allocated_function']
+ Integer $.extensions['numa_node']
+ String $.extensions['cpu_model']
+ String $.extensions['cpu_family']
+
+ BREAK
+ END
+
+
+s16, query Resource detail of an interface
+ [documentation] This test case verifies Query OCloud Resource Detail of an interface
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver_if)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource of accelerator"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ ${description} output $.description
+ should contain ${description} ifname:
+ should contain ${description} iftype:
+ should contain ${description} imac:
+ should contain ${description} vlan_id:
+ should contain ${description} imtu:
+ should contain ${description} ifclass:
+ should contain ${description} uses:
+ should contain ${description} max_tx_rate:
+ should contain ${description} sriov_vf_driver:
+ should contain ${description} sriov_numvfs:
+ should contain ${description} ptp_role:
+ Object $.extensions
+ String $.extensions['ifname']
+ String $.extensions['iftype']
+ String $.extensions['imac']
+ # Integer $.extensions['vlan_id']
+ Integer $.extensions['imtu']
+ # String $.extensions['ifclass']
+ # String $.extensions['uses']
+ # Integer $.extensions['max_tx_rate']
+ # String $.extensions['sriov_vf_driver']
+ # Integer $.extensions['sriov_numvfs']
+ # String $.extensions['ptp_role']
+
+ BREAK
+ END
+
+
+s17, query Resource detail of a memory
+ [documentation] This test case verifies Query OCloud Resource Detail of a memory
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver_mem)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource of accelerator"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ ${description} output $.description
+ should contain ${description} memtotal_mib:
+ should contain ${description} memavail_mib:
+ should contain ${description} vm_hugepages_use_1G:
+ should contain ${description} vm_hugepages_possible_1G:
+ should contain ${description} hugepages_configured:
+ should contain ${description} vm_hugepages_avail_1G:
+ should contain ${description} vm_hugepages_nr_1G:
+ should contain ${description} vm_hugepages_nr_4K:
+ should contain ${description} vm_hugepages_nr_2M:
+ should contain ${description} numa_node:
+ should contain ${description} vm_hugepages_possible_2M:
+ should contain ${description} vm_hugepages_avail_2M:
+ should contain ${description} platform_reserved_mib:
+ Object $.extensions
+ Integer $.extensions['memtotal_mib']
+ Integer $.extensions['memavail_mib']
+ # String $.extensions['vm_hugepages_use_1G']
+ Integer $.extensions['vm_hugepages_possible_1G']
+ # String $.extensions['hugepages_configured']
+ Integer $.extensions['vm_hugepages_avail_1G']
+ Integer $.extensions['vm_hugepages_nr_1G']
+ Integer $.extensions['vm_hugepages_nr_4K']
+ Integer $.extensions['vm_hugepages_nr_2M']
+ Integer $.extensions['vm_hugepages_possible_2M']
+ Integer $.extensions['vm_hugepages_avail_2M']
+ Integer $.extensions['platform_reserved_mib']
+ Integer $.extensions['numa_node']
+
+ BREAK
+ END
+
+s18, query Resource detail of an ethernet port
+ [documentation] This test case verifies Query OCloud Resource Detail of an ethernet port
+ [tags] ORAN_Compliance ORAN_O2 ORAN_O2IMS ORAN_O2IMS_Inventory
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourceTypes?filter=(eq,name,pserver_ethernet)
+ ${resourceTypeId} output $[0].resourceTypeId
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools
+ @{resourcePools} output $
+ FOR ${resourcePool} IN @{resourcePools}
+ # ${resourcePoolId} output $[0].resourcePoolId
+ ${resourcePoolId} input ${resourcePool}[resourcePoolId]
+
+ Clear Expectations
+ GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources?filter=(eq,resourceTypeId,${resourceTypeId})
+ @{resources} output $
+ ${length1}= Get Length ${resources}
+ IF ${length1} == 0
+ log "resourcePool with id: ${resourcePoolId} has no resource of accelerator"
+ CONTINUE
+ END
+ ${resourceId} output $[0].resourceId
+
+ Expect Response Body ${CURDIR}/schemas/resource_allfields_properties.json
+ ${res} GET ${ORAN_O2IMS_ENDPOINT}/o2ims-infrastructureInventory/v1/resourcePools/${resourcePoolId}/resources/${resourceId}?all_fields
+
+ # Output Schema response body ${CURDIR}/schemas/.output/resource_properties.json
+ # Clear Expectations
+ log ${res} level=DEBUG
+ Integer response status 200
+ Object response body
+ ${description} output $.description
+ should contain ${description} name:
+ should contain ${description} pdevice:
+ should contain ${description} pciaddr:
+ should contain ${description} mac:
+ should contain ${description} dev_id:
+ should contain ${description} pclass:
+ should contain ${description} psvendor:
+ should contain ${description} psdevice:
+ should contain ${description} sriov_totalvfs:
+ should contain ${description} sriov_numvfs:
+ should contain ${description} numa_node:
+ should contain ${description} capabilities:
+ should contain ${description} type:
+ should contain ${description} driver:
+ Object $.extensions
+ String $.extensions['name']
+ String $.extensions['pdevice']
+ String $.extensions['pciaddr']
+ String $.extensions['mac']
+ Integer $.extensions['dev_id']
+ String $.extensions['pclass']
+ String $.extensions['psvendor']
+ String $.extensions['psdevice']
+ # Integer $.extensions['sriov_totalvfs']
+ Integer $.extensions['sriov_numvfs']
+ Integer $.extensions['numa_node']
+ # Integer $.extensions['capabilities']
+ String $.extensions['type']
+ String $.extensions['driver']
+
+ BREAK
+ END
+
+*** Keywords ***
+Set REST Headers
+ Set Headers {"accept": "application/json"}
+ Set Headers {"Authorization": "Bearer ${SMO_TOKEN_DATA}"}