X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2Fciotdm.py;h=6f56bf936b9157f81cb6642aaff536f6e57dfad8;hb=575c20b1d6354e03e3f6baa072bc6d622ca70f5f;hp=a342c4e9ab6c9a7d4473548c6bec0fbbcb9f562b;hpb=9f074b03bf384dcb18179e76a1a1fe642a47900c;p=integration%2Ftest.git diff --git a/csit/libraries/ciotdm.py b/csit/libraries/ciotdm.py index a342c4e9ab..6f56bf936b 100644 --- a/csit/libraries/ciotdm.py +++ b/csit/libraries/ciotdm.py @@ -24,18 +24,62 @@ cse_payload = ''' resourcepayload = ''' { - any: - [ - {%s} - ] + %s } ''' +ae_payload = ''' +{ + "m2m:ae":{%s} +} +''' + +con_payload = ''' +{ + "m2m:cnt":{%s} +} +''' + +cin_payload = ''' +{ + "m2m:cin":{%s} +} +''' + +sub_payload = ''' +{ + "m2m:sub":{%s} +} +''' + +acp_payload = ''' +{ + "m2m:acp":{%s} +} +''' + +nod_payload = ''' +{ + "m2m:nod":{%s} +} +''' + +resources = {"m2m:ae", "m2m:cnt", "m2m:cin", "m2m:sub", + "m2m:acp", "m2m:nod", "m2m:grp"} + +payload_map = {1: acp_payload, 2: ae_payload, 3: con_payload, + 4: cin_payload, 14: nod_payload, 23: sub_payload} + def find_key(response, key): """Deserialize response, return value for key or None.""" - val = response.json() - return val.get(key, None) + dic = response.json() + key1 = list(dic.keys()) + if len(key1) != 1: + raise ValueError("The response should be json object") + if key1[0] not in resources: + raise ValueError("The resource is not recognized") + return dic.get(key1[0], None).get(key, None) def name(response): @@ -92,12 +136,12 @@ def error(response): return None -def normalize(resourceURI): +def normalize(resource_uri): """Remove the first / of /InCSE1/ae1.""" - if resourceURI is not None: - if resourceURI[0] == "/": - return resourceURI[1:] - return resourceURI + if resource_uri is not None: + if resource_uri[0] == "/": + return resource_uri[1:] + return resource_uri class connect: @@ -116,141 +160,145 @@ class connect: # Admittedly these are "magic values" but are required # and until a proper defaulting initializer is in place # are hard-coded. - 'content-type': 'application/json', + 'content-type': 'application/vnd.onem2m-res+json', 'X-M2M-Origin': '//localhost:10000', 'X-M2M-RI': '12345', 'X-M2M-OT': 'NOW' } self.server = "%s://" % (protocol) + server - if base is not None: - self.url = self.server + op_provision - self.response = self.session.post( - self.url, data=self.payload, timeout=self.timeout) - print(self.response.text) - - def create(self, parent, restype, attr=None, name=None): - """Create resource.""" + self.url = self.server + op_provision + self.response = self.session.post( + self.url, data=self.payload, timeout=self.timeout) + + def modify_headers_origin(self, new_origin): + """Modify the headers to test ACP.""" + self.headers['X-M2M-Origin'] = new_origin + + def create(self, parent, restype, attr=None): + """Create certain resource with attributes under parent URI. + + Args: + :param parent: the target URI + :param restype: the resourceType of the resource + :param attr: the payload of the resource + """ if parent is None: return None - payload = resourcepayload % (attr) - print payload - self.headers['X-M2M-NM'] = name + restype = int(restype) + payload = payload_map[restype] + payload = payload % (attr) + self.headers['content-type'] = 'application/\ + vnd.onem2m-res+json;ty=%s' % (restype) parent = normalize(parent) - self.url = self.server + ":8282/%s?ty=%s&rcn=1" % ( - parent, restype) + self.url = self.server + ":8282/%s?&rcn=1" % ( + parent) self.response = self.session.post( self.url, payload, timeout=self.timeout, headers=self.headers) - return self.response - def createWithCommand(self, parent, restype, - command, attr=None, name=None): - """Create resource.""" + def create_with_command(self, parent, restype, + command, attr=None): + """Create certain resource with attributes under parent URI. + + Args: + :param parent: the target URI + :param restype: the resourceType of the resource + :param command: the command would be in the URI after & + :param attr: the payload of the resource + """ if parent is None: return None - payload = resourcepayload % (attr) - print payload - if name is None: - self.headers['X-M2M-NM'] = None - else: - self.headers['X-M2M-NM'] = name + restype = int(restype) + payload = payload_map[restype] + payload = payload % (attr) + self.headers['content-type'] = 'application/\ + vnd.onem2m-res+json;ty=%s' % (restype) parent = normalize(parent) - self.url = self.server + ":8282/%s?ty=%s&%s" % ( - parent, restype, command) + self.url = self.server + ":8282/%s?%s" % ( + parent, command) self.response = self.session.post( self.url, payload, timeout=self.timeout, headers=self.headers) - return self.response - def retrieve(self, resourceURI): - """Retrieve resource.""" - if resourceURI is None: + def retrieve(self, resource_uri): + """Retrieve resource using resource_uri.""" + if resource_uri is None: return None - resourceURI = normalize(resourceURI) - self.url = self.server + ":8282/%s?rcn=5&drt=2" % (resourceURI) + resource_uri = normalize(resource_uri) + self.url = self.server + ":8282/%s?rcn=5" % (resource_uri) self.headers['X-M2M-NM'] = None + self.headers['content-type'] = 'application/vnd.onem2m-res+json' self.response = self.session.get( self.url, timeout=self.timeout, headers=self.headers ) - return self.response - def retrieveWithCommand(self, resourceURI, command): - """Retrieve resource with command.""" - if resourceURI is None: + def retrieve_with_command(self, resource_uri, command): + """Retrieve resource using resource_uri with command.""" + if resource_uri is None: return None if command is None: return None - resourceURI = normalize(resourceURI) - self.url = self.server + ":8282/%s?%s" % (resourceURI, command) + resource_uri = normalize(resource_uri) + self.url = self.server + ":8282/%s?%s" % (resource_uri, command) self.headers['X-M2M-NM'] = None + self.headers['content-type'] = 'application/vnd.onem2m-res+json' self.response = self.session.get( self.url, timeout=self.timeout, headers=self.headers ) - return self.response - def update(self, resourceURI, restype, attr=None, name=None): - """Update resource attr.""" - if resourceURI is None: + def update(self, resource_uri, restype, attr=None): + """Update resource at resource_uri with new attributes.""" + if resource_uri is None: return None - resourceURI = normalize(resourceURI) - # print(payload) - payload = resourcepayload % (attr) - print payload - if name is None: - self.headers['X-M2M-NM'] = None - else: - self.headers['X-M2M-NM'] = name - self.url = self.server + ":8282/%s" % (resourceURI) + resource_uri = normalize(resource_uri) + restype = int(restype) + payload = payload_map[restype] + payload = payload % (attr) + self.headers['content-type'] = 'application/vnd.onem2m-res+json' + self.url = self.server + ":8282/%s" % (resource_uri) self.response = self.session.put( self.url, payload, timeout=self.timeout, headers=self.headers) - return self.response - def updateWithCommand(self, resourceURI, restype, - command, attr=None, name=None): - """Update resource attr.""" - if resourceURI is None: + def update_with_command(self, resource_uri, restype, + command, attr=None): + """Update resource at resource_uri with new attributes.""" + if resource_uri is None: return None - resourceURI = normalize(resourceURI) - # print(payload) - payload = resourcepayload % (attr) - print payload - if name is None: - self.headers['X-M2M-NM'] = None - else: - self.headers['X-M2M-NM'] = name - self.url = self.server + ":8282/%s?%s" % (resourceURI, command) + resource_uri = normalize(resource_uri) + restype = int(restype) + payload = payload_map[restype] + payload = payload % (attr) + self.headers['content-type'] = 'application/vnd.onem2m-res+json' + self.url = self.server + ":8282/%s?%s" % (resource_uri, command) self.response = self.session.put( self.url, payload, timeout=self.timeout, headers=self.headers) - return self.response - def delete(self, resourceURI): - """Delete the resource with the provresourceURIed resourceURI.""" - if resourceURI is None: + def delete(self, resource_uri): + """Delete the resource at the resource_uri.""" + if resource_uri is None: return None - resourceURI = normalize(resourceURI) - self.url = self.server + ":8282/%s" % (resourceURI) + resource_uri = normalize(resource_uri) + self.url = self.server + ":8282/%s" % (resource_uri) self.headers['X-M2M-NM'] = None + self.headers['content-type'] = 'application/vnd.onem2m-res+json' self.response = self.session.delete(self.url, timeout=self.timeout, headers=self.headers) - return self.response - def deleteWithCommand(self, resourceURI, command): - """Delete the resource with the provresourceURIed resourceURI.""" - if resourceURI is None: + def delete_with_command(self, resource_uri, command): + """Delete the resource at the resource_uri.""" + if resource_uri is None: return None - resourceURI = normalize(resourceURI) - self.url = self.server + ":8282/%s?%s" % (resourceURI, command) + resource_uri = normalize(resource_uri) + self.url = self.server + ":8282/%s?%s" % (resource_uri, command) self.headers['X-M2M-NM'] = None + self.headers['content-type'] = 'application/vnd.onem2m-res+json' self.response = self.session.delete(self.url, timeout=self.timeout, headers=self.headers) - return self.response def tree(self): """Get the resource tree.""" self.url = self.server + op_tree self.response = self.session.get(self.url) - return self.response def kill(self): """Kill the tree.""" self.url = self.server + op_cleanup self.response = self.session.post(self.url) - return self.response