X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FClusterEntities.py;h=ad396a83d8a1e10e4b09baece72517c46d8957b7;hb=db9ad6fa42252ac73e36d8dad73223bf624e8d28;hp=b8023f105f2a3ff8ea7e58bdf237b053e1f81e0c;hpb=98aa061780a3c91ff90b01235b96fb776b3c8385;p=integration%2Ftest.git diff --git a/csit/libraries/ClusterEntities.py b/csit/libraries/ClusterEntities.py index b8023f105f..ad396a83d8 100644 --- a/csit/libraries/ClusterEntities.py +++ b/csit/libraries/ClusterEntities.py @@ -18,14 +18,47 @@ def get_entities(restconf_url): "User-Agent": "csit agent", }, auth=("admin", "admin"), + timeout=10.0, ) info( - "Response %s ", + "Response %s", resp, ) + info( + "Response JSON %s", + resp.json(), + ) - return resp.json() + if resp.status_code == status_codes["bad_request"]: + info( + "Status code is '%s' - trying operational data instead.", + resp.status_code, + ) + result = get_entities_data(restconf_url) + else: + result = resp.json() + + return result + + +def get_entity_name(e_type, e_name): + """ + Get the effective entity name for the given entity type. + If the entity type is not for odl-general-entity, entity name + should be the full instance identifier. + :param e_type: entity type + :param e_name: entity name + :return: updated entity name + """ + name_templates = { + "ovsdb": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='%s']", + } + + if e_type in name_templates: + return name_templates[e_type] % e_name + else: + return e_name def get_entity(restconf_url, e_type, e_name): @@ -43,7 +76,7 @@ def get_entity(restconf_url, e_type, e_name): } """ % ( e_type, - e_name, + get_entity_name(e_type, e_name), ) info("Data %s", data) @@ -57,10 +90,15 @@ def get_entity(restconf_url, e_type, e_name): }, data=data, auth=("admin", "admin"), + timeout=10.0, ) info( - "Entity json %s", + "Response %s", + resp, + ) + info( + "Response JSON %s", resp.json(), ) @@ -89,7 +127,7 @@ def get_entity_owner(restconf_url, e_type, e_name): } """ % ( e_type, - e_name, + get_entity_name(e_type, e_name), ) info("Data %s", data) @@ -103,12 +141,17 @@ def get_entity_owner(restconf_url, e_type, e_name): }, data=data, auth=("admin", "admin"), + timeout=10.0, ) info( - "Response %s ", + "Response %s", resp, ) + info( + "Response JSON %s", + resp.json(), + ) if resp.status_code == status_codes["bad_request"]: info( @@ -122,6 +165,34 @@ def get_entity_owner(restconf_url, e_type, e_name): return result +def get_entities_data(restconf_url): + """ + Get the entity information from the datastore for Silicon + or earlier versions. + :param restconf_url: RESTCONF URL up to the RESTCONF root + """ + resp = get( + url=restconf_url + "/data/entity-owners:entity-owners", + headers={ + "Accept": "application/yang-data+json", + "User-Agent": "csit agent", + }, + auth=("admin", "admin"), + timeout=10.0, + ) + + info( + "Response %s", + resp, + ) + info( + "Response JSON %s", + resp.json(), + ) + + return resp.json() + + def get_entity_type_data(restconf_url, e_type): """ Get the entity information for the given entity type from the datastore @@ -139,6 +210,16 @@ def get_entity_type_data(restconf_url, e_type): "User-Agent": "csit agent", }, auth=("admin", "admin"), + timeout=10.0, + ) + + info( + "Response %s", + resp, + ) + info( + "Response JSON %s", + resp.json(), ) return resp.json()["entity-owners:entity-type"][0] @@ -153,12 +234,15 @@ def get_entity_data(restconf_url, e_type, e_name): :param e_name: entity name :return: entity owner & candidates """ + id_templates = { + "org.opendaylight.mdsal.ServiceEntityType": "/odl-general-entity:entity[name='%s']", + "org.opendaylight.mdsal.AsyncServiceCloseEntityType": "/odl-general-entity:entity[name='%s']", + "ovsdb": "/network-topology:network-topology/topology[topology-id='ovsdb:1']/node[node-id='%s']", + } + id_template = id_templates[e_type] + entity_type = get_entity_type_data(restconf_url, e_type) - entity = [ - e - for e in entity_type["entity"] - if e["id"] == "/odl-general-entity:entity[name='%s']" % e_name - ][0] + entity = [e for e in entity_type["entity"] if e["id"] == id_template % e_name][0] result = { "candidates": [c["name"] for c in entity["candidate"]],