From 870060400cacf0aaa511fca035937544173237f0 Mon Sep 17 00:00:00 2001 From: tierno Date: Wed, 24 Oct 2018 12:50:20 +0200 Subject: [PATCH] bug565 fixing getting file content from descriptors Fixing some flake8 Change-Id: I1542898c739bf9f281fb61f6a6b9777f232eb79d Signed-off-by: tierno --- osm_nbi/descriptor_topics.py | 11 +++++++---- osm_nbi/engine.py | 14 ++++++++++++++ osm_nbi/html_public/version | 4 ++-- osm_nbi/tests/upload.py | 2 +- osm_nbi/validation.py | 12 ++++++------ tox.ini | 2 +- 6 files changed, 31 insertions(+), 14 deletions(-) diff --git a/osm_nbi/descriptor_topics.py b/osm_nbi/descriptor_topics.py index b59b4f8..dea2413 100644 --- a/osm_nbi/descriptor_topics.py +++ b/osm_nbi/descriptor_topics.py @@ -282,17 +282,20 @@ class DescriptorTopic(BaseTopic): """ Return the file content of a vnfd or nsd :param session: contains the used login username and working project - :param _id: Identity of the vnfd, ndsd + :param _id: Identity of the vnfd, nsd :param path: artifact path or "$DESCRIPTOR" or None :param accept_header: Content of Accept header. Must contain applition/zip or/and text/plain - :return: opened file or raises an exception + :return: opened file plus Accept format or raises an exception """ accept_text = accept_zip = False if accept_header: if 'text/plain' in accept_header or '*/*' in accept_header: accept_text = True if 'application/zip' in accept_header or '*/*' in accept_header: - accept_zip = True + accept_zip = 'application/zip' + elif 'application/gzip' in accept_header: + accept_zip = 'application/gzip' + if not accept_text and not accept_zip: raise EngineException("provide request header 'Accept' with 'application/zip' or 'text/plain'", http_code=HTTPStatus.NOT_ACCEPTABLE) @@ -330,7 +333,7 @@ class DescriptorTopic(BaseTopic): # TODO generate zipfile if not present raise EngineException("Only allowed 'text/plain' Accept header for this descriptor. To be solved in " "future versions", http_code=HTTPStatus.NOT_ACCEPTABLE) - return self.fs.file_open((storage['folder'], storage['zipfile']), "rb"), "application/zip" + return self.fs.file_open((storage['folder'], storage['zipfile']), "rb"), accept_zip class VnfdTopic(DescriptorTopic): diff --git a/osm_nbi/engine.py b/osm_nbi/engine.py index ab7eec0..1946189 100644 --- a/osm_nbi/engine.py +++ b/osm_nbi/engine.py @@ -153,6 +153,20 @@ class Engine(object): raise EngineException("Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR) return self.map_topic[topic].show(session, _id) + def get_file(self, session, topic, _id, path=None, accept_header=None): + """ + Get descriptor package or artifact file content + :param session: contains the used login username and working project + :param topic: it can be: users, projects, vnfds, nsds, + :param _id: server id of the item + :param path: artifact path or "$DESCRIPTOR" or None + :param accept_header: Content of Accept header. Must contain applition/zip or/and text/plain + :return: opened file plus Accept format or raises an exception + """ + if topic not in self.map_topic: + raise EngineException("Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR) + return self.map_topic[topic].get_file(session, _id, path, accept_header) + def del_item_list(self, session, topic, _filter=None): """ Delete a list of items diff --git a/osm_nbi/html_public/version b/osm_nbi/html_public/version index 332aeb5..b931c64 100644 --- a/osm_nbi/html_public/version +++ b/osm_nbi/html_public/version @@ -1,2 +1,2 @@ -0.1.21 -2018-10-09 +0.1.22 +2018-10-24 diff --git a/osm_nbi/tests/upload.py b/osm_nbi/tests/upload.py index 742f973..5fe4f07 100755 --- a/osm_nbi/tests/upload.py +++ b/osm_nbi/tests/upload.py @@ -95,5 +95,5 @@ if __name__ == "__main__": print("RX {}: {}".format(r.status_code, r.text)) if "id" in response: print("---\nid: {}".format(response["id"])) - except Exception as e: + except Exception: raise diff --git a/osm_nbi/validation.py b/osm_nbi/validation.py index fa812bf..292ec97 100644 --- a/osm_nbi/validation.py +++ b/osm_nbi/validation.py @@ -12,7 +12,7 @@ Validator of input data using JSON schemas for those items that not contains an # Basis schemas patern_name = "^[ -~]+$" -nameshort_schema = {"type": "string", "minLength": 1, "maxLength": 60, "pattern": "^[^,;()\.\$'\"]+$"} +nameshort_schema = {"type": "string", "minLength": 1, "maxLength": 60, "pattern": "^[^,;()\\.\\$'\"]+$"} passwd_schema = {"type": "string", "minLength": 1, "maxLength": 60} name_schema = {"type": "string", "minLength": 1, "maxLength": 255, "pattern": "^[^,;()'\"]+$"} string_schema = {"type": "string", "minLength": 1, "maxLength": 255} @@ -24,13 +24,13 @@ null_schema = {"type": "null"} # "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" id_schema = {"type": "string", "pattern": "^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$"} time_schema = {"type": "string", "pattern": "^[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]([0-5]:){2}"} -pci_schema = {"type": "string", "pattern": "^[0-9a-fA-F]{4}(:[0-9a-fA-F]{2}){2}\.[0-9a-fA-F]$"} +pci_schema = {"type": "string", "pattern": "^[0-9a-fA-F]{4}(:[0-9a-fA-F]{2}){2}\\.[0-9a-fA-F]$"} http_schema = {"type": "string", "pattern": "^https?://[^'\"=]+$"} bandwidth_schema = {"type": "string", "pattern": "^[0-9]+ *([MG]bps)?$"} memory_schema = {"type": "string", "pattern": "^[0-9]+ *([MG]i?[Bb])?$"} integer0_schema = {"type": "integer", "minimum": 0} integer1_schema = {"type": "integer", "minimum": 1} -path_schema = {"type": "string", "pattern": "^(\.){0,2}(/[^/\"':{}\(\)]+)+$"} +path_schema = {"type": "string", "pattern": "^(\\.){0,2}(/[^/\"':{}\\(\\)]+)+$"} vlan_schema = {"type": "integer", "minimum": 1, "maximum": 4095} vlan1000_schema = {"type": "integer", "minimum": 1000, "maximum": 4095} mac_schema = {"type": "string", @@ -38,9 +38,9 @@ mac_schema = {"type": "string", dpid_Schema = {"type": "string", "pattern": "^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}$"} # mac_schema={"type":"string", "pattern":"^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$"} ip_schema = {"type": "string", - "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"} + "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"} ip_prefix_schema = {"type": "string", - "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}" + "pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}" "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/(30|[12]?[0-9])$"} port_schema = {"type": "integer", "minimum": 1, "maximum": 65534} object_schema = {"type": "object"} @@ -52,7 +52,7 @@ size_schema = {"type": "integer", "minimum": 1, "maximum": 100} array_edition_schema = { "type": "object", "patternProperties": { - "^\$": "Any" + "^\\$": "Any" }, "additionalProperties": False, "minProperties": 1, diff --git a/tox.ini b/tox.ini index b864700..707a451 100644 --- a/tox.ini +++ b/tox.ini @@ -11,7 +11,7 @@ commands=nosetests basepython = python3 deps = flake8 commands = flake8 osm_nbi/ setup.py --max-line-length 120 \ - --exclude .svn,CVS,.gz,.git,__pycache__,.tox,local,temp,vnfd_catalog.py,nsd_catalog.py --ignore W291,W293,E226,E402 + --exclude .svn,CVS,.gz,.git,__pycache__,.tox,local,temp,vnfd_catalog.py,nsd_catalog.py --ignore W291,W293,E226,E402,W504 [testenv:build] basepython = python3 -- 2.17.1