def update(id, _org_label, _prj_label, _payload): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = nxs.resources.fetch(org_label=_org_label, project_label=_prj_label, schema_id='_', resource_id=id) data_md5_before = utils.generate_nexus_payload_checksum(data) current_revision = data["_rev"] if _payload is not None: data = json.loads(_payload) else: # If no payload given, load up the entry in a text file and open default editor new_file, filename = tempfile.mkstemp() print("Opening an editor: %s" % filename) f = open(filename, "w") f.write(json.dumps(data, indent=2)) f.close() click.edit(filename=filename) f = open(filename, "r") data = json.loads(f.read()) f.close() os.remove(filename) data_md5_after = utils.generate_nexus_payload_checksum(data) if data_md5_before == data_md5_after: print("No change in resource, aborting update.") else: nxs.resources.update(resource=data, rev=current_revision) print("Resource updated.") except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def create(_org_label, _prj_label, id, _projects, _identities, _priority, _resources_types, _type, _payload, file, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = {} if _payload is not None and file is not None: utils.error("--data and --file are mutually exclusive.") if _priority is not None and _identities is not None and _projects is not None: response = nxs.resolvers.create(org_label=_org_label, project_label=_prj_label, projects=_projects, identities=_identities, _priority=_priority, _id=id, resources_types=_resources_types) else: if _payload is not None: data = json.loads(_payload) if file is not None: with open(file) as f: data = json.load(f) if len(data) == 0: utils.error( "The provided file %s should contain a non empty json payload" % file) if not data: # If no payload given, load up the entry in a text file and open default editor new_file, filename = tempfile.mkstemp() print("Opening an editor: %s" % filename) f = open(filename, "w") f.write(json.dumps(data, indent=2)) f.close() click.edit(filename=filename) f = open(filename, "r") data = json.loads(f.read()) f.close() os.remove(filename) if data: full_url = nexussdk_http._full_url( path=[nxs.resolvers.SEGMENT, _org_label, _prj_label], use_base=False) response = nxs.resolvers.create_(path=full_url, payload=data, id=id) else: utils.error( "--data, --file or (--priority, --identities, --projects) are required for creating a resolver." ) print("Resolver created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def make_public(_org_label, _prj_label, _replace, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: path = _org_label + '/' + _prj_label utils.warn("You are about to make the data in your project public to the world.") input("Press <ENTER> to continue, CTRL+C to cancel...") response = nxs.acls.fetch(subpath=path) count = len(response["_results"]) if count > 1: utils.error("More than one ACL matching: %d" % count) elif count == 0: utils.warn("No ACL found specifically for this organization '%s' and project '%s'." % (_org_label, _prj_label)) current_rev = 0 else: current_rev = response["_results"][0]['_rev'] _identities = [_ANONYMOUS_] _permissions = [_PROJECTS_READ_, _RESOURCES_READ_, _VIEWS_QUERY_] if _replace: print("Replacing existing ACLs on project '%s' in organization '%s'" % (_prj_label, _org_label)) response = nxs.acls.replace(subpath=path, identities=_identities, permissions=[_permissions], rev=current_rev) else: print("Adding to existing ACLs on project '%s' in organization '%s'" % (_prj_label, _org_label)) response = nxs.acls.append(subpath=path, identities=_identities, permissions=[_permissions], rev=current_rev) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def _list(_org_label, _prj_label, deprecated, _from, size, _type, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.views.list(org_label=_org_label, project_label=_prj_label, pagination_from=_from, pagination_size=size, deprecated=deprecated, type=_type) if _json: utils.print_json(response, colorize=pretty) else: table = PrettyTable(['Id', 'Type', 'Revision', 'Deprecated']) table.align["Id"] = "l" table.align["Type"] = "l" table.align["Revision"] = "l" table.align["Deprecated"] = "l" for r in response["_results"]: types = utils.format_json_field(r, "@type") table.add_row([r["@id"], types, r["_rev"], r["_deprecated"]]) print(table) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def create(label, _org_label, description, base, vocab, _api_mapping, _json, pretty): _org_label = utils.get_organization_label(_org_label) try: mappings = None if _api_mapping is not None: mappings = [] for am in _api_mapping: if "=" not in am: utils.error( "Invalid API Mapping, it should be in the format <prefix>=<URL>: %s" % am) key, value = am.split("=", 1) entry = {"prefix": key, "namespace": value} mappings.append(entry) nxs = utils.get_nexus_client() response = nxs.projects.create(org_label=_org_label, project_label=label, description=description, api_mappings=mappings, vocab=vocab, base=base) print("Project created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def create(_org_label, _prj_label, id, file, _type, _payload, format, idcolumn, idnamespace, mergewith, mergeon, max_connections, schema, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = {} if _payload is not None and file is not None: utils.error("--data and --file are mutually exclusive.") if _payload is not None: data = json.loads(_payload) if file is not None: if format == "json": with open(file) as f: data = json.load(f) if len(data) == 0: utils.error("You must give a non empty payload") response = nxs.resources.create(org_label=_org_label, project_label=_prj_label, data=data, schema_id=schema, resource_id=id) print("Resource created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) elif format == "csv": utils.load_csv(_org_label, _prj_label, schema, file_path=file, merge_with=mergewith, merge_on=mergeon, _type=_type, id_colum=idcolumn, id_namespace=idnamespace, max_connections=max_connections) print("Finished loading.") except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def _list(_org_label, _from, size, _json, pretty): _org_label = utils.get_organization_label(_org_label) try: nxs = utils.get_nexus_client() response = nxs.projects.list(org_label=_org_label, pagination_from=_from, pagination_size=size) if _json: utils.print_json(response, colorize=pretty) else: table = PrettyTable(['Label', 'Description', 'Id', 'Deprecated']) table.align["Label"] = "l" table.align["Description"] = "l" table.align["Id"] = "l" table.align["Deprecated"] = "l" for r in response["_results"]: if "description" in r: table.add_row([ r["_label"], r["description"], r["@id"], r["_deprecated"] ]) else: table.add_row( [r["_label"], "", r["@id"], r["_deprecated"]]) print(table) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def query_sparql(_org_label, _prj_label, id, _payload, file, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: default_query = "SELECT * WHERE { ?s ?p ?o } LIMIT 10" data = get_query_from_payload_xor_data_otherwise_editor( _payload, file, default_query, file_prefix="query-sparql") response = nxs.views.query_sparql(org_label=_org_label, project_label=_prj_label, query=data, view_id=id) if _json: utils.print_json(response, colorize=pretty) else: vars = response["head"]["vars"] table = PrettyTable(vars) for v in vars: table.align[v] = "l" for b in response["results"]["bindings"]: cells = [] for v in vars: cells.append(b[v]["value"]) table.add_row(cells) print(table) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def update(id, _org_label, _prj_label, _payload): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: view = nxs.views.fetch(org_label=_org_label, project_label=_prj_label, view_id=id) view_md5_before = utils.generate_nexus_payload_checksum(view, debug=True) current_revision = view["_rev"] if _payload is not None: view = json.loads(_payload) else: # If no payload given, load up the entry in a text file and open default editor new_file, filename = tempfile.mkstemp() print("Opening an editor: %s" % filename) f = open(filename, "w") f.write(json.dumps(view, indent=2)) f.close() click.edit(filename=filename) f = open(filename, "r") view = json.loads(f.read()) f.close() os.remove(filename) view_md5_after = utils.generate_nexus_payload_checksum(view, debug=True) if view_md5_before == view_md5_after: print("No change in view, aborting update.") else: nxs.views.update_es(esview=view, rev=current_revision) print("View updated.") except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def _get_resource_from_nexus(source_url): # The resource is taken from Nexus nxs = utils.get_nexus_client() _org_label = utils.get_organization_label(None) _prj_label = utils.get_project_label(None) source = nxs.schemas.fetch(org_label=_org_label, project_label=_prj_label, schema_id=source_url) return source
def _list(_org_label, _prj_label, deprecated, _from, size, search, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.schemas.list(org_label=_org_label, project_label=_prj_label, pagination_from=_from, pagination_size=size, deprecated=deprecated, full_text_search_query=search) if _json: utils.print_json(response, colorize=pretty) else: columns = [ 'Id', 'Types', 'Label', 'Imports', 'NodeShapes', 'PropertyShapes', 'Revision', 'Deprecated' ] table = PrettyTable(columns) for c in columns: table.align[c] = "l" for r in response["_results"]: types = utils.format_json_field(r, "@type") # Get extra info from the schema itself schema = nxs.schemas.fetch(org_label=_org_label, project_label=_prj_label, schema_id=r["@id"]) imports = utils.format_json_field(schema, "imports") node_shapes = get_shapes_id_by_node_kind( schema, ["sh:NodeShape", "NodeShape"]) property_shapes = get_shapes_id_by_node_kind( schema, ["sh:PropertyShapes", "PropertyShapes"]) dummy_payload = { "nodes": node_shapes, "properties": property_shapes } nodes = utils.format_json_field(dummy_payload, "nodes") properties = utils.format_json_field(dummy_payload, "properties") label = "" if "label" in schema: label = schema["label"] table.add_row([ r["@id"], types, label, imports, nodes, properties, r["_rev"], r["_deprecated"] ]) print(table) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def fetch(id, _org_label, _prj_label, schema, revision, tag, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.resources.fetch(org_label=_org_label, project_label=_prj_label, schema_id=schema, resource_id=id, rev=revision, tag=tag) utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def fetch(label, _org_label, revision, pretty): _org_label = utils.get_organization_label(_org_label) try: nxs = utils.get_nexus_client() response = nxs.projects.fetch(org_label=_org_label, project_label=label, rev=revision) if revision is not None and response["_rev"] != revision: utils.error("Revision '%s' does not exist" % revision) utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def statistics(_org_label, _prj_label, id, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.views.stats(org_label=_org_label, project_label=_prj_label, view_id=id) utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def update(id, _org_label, _prj_label, _projects, _identities, _priority, _resources_types, _type, _payload): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = nxs.resolvers.fetch(org_label=_org_label, project_label=_prj_label, id=id) current_revision = data["_rev"] data_md5_before = utils.generate_nexus_payload_checksum(data) if _priority is not None and _identities is not None and _projects is not None: response = nxs.resolvers.update(org_label=_org_label, project_label=_prj_label, projects=_projects, identities=_identities, _priority=_priority, id=id, rev=current_revision, resources_types=_resources_types) else: if _payload is not None: data = json.loads(_payload) else: # If no payload given, load up the entry in a text file and open default editor new_file, filename = tempfile.mkstemp() print("Opening an editor: %s" % filename) f = open(filename, "w") f.write(json.dumps(data, indent=2)) f.close() click.edit(filename=filename) f = open(filename, "r") data = json.loads(f.read()) f.close() os.remove(filename) data_md5_after = utils.generate_nexus_payload_checksum(data) if data_md5_before == data_md5_after: print("No change in resolver, aborting update.") else: encoded_id = encode_url(id) nxs.resolvers.update_(path=[ nxs.resolvers.SEGMENT, _org_label, _prj_label, encoded_id ], payload=data, rev=current_revision) print("Resolver updated.") except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def deprecate(label, _org_label, _json, pretty): _org_label = utils.get_organization_label(_org_label) try: nxs = utils.get_nexus_client() response = nxs.projects.fetch(org_label=_org_label, project_label=label) if _json: utils.print_json(response, colorize=pretty) response = nxs.projects.deprecate(project=response, rev=response["_rev"]) if _json: utils.print_json(response, colorize=pretty) print("Project '%s' under organization '%s' was deprecated." % (label, _org_label)) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def deprecate(id, _org_label, _prj_label, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.views.fetch(org_label=_org_label, project_label=_prj_label, view_id=id) if _json: utils.print_json(response, colorize=pretty) response = nxs.views.deprecate_es(esview=response, rev=response["_rev"]) if _json: utils.print_json(response, colorize=pretty) print("View '%s' was deprecated." % id) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def select(label, _org_label): _org_label = utils.get_organization_label(_org_label) try: nxs = utils.get_nexus_client() nxs.projects.fetch(org_label=_org_label, project_label=label) except nxs.HTTPError as e: if e.response.status_code == 404: utils.error("Could not find project with label '%s' under organization '%s'." % (label, _org_label)) else: # unexpected error utils.print_json(e.response.json(), colorize=True) utils.error(str(e)) utils.set_default_project(label) print("Project selected.")
def create(_org_label, _prj_label, id, _payload, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = {} if _payload is not None: data = json.loads(_payload) response = nxs.views.create_es(org_label=_org_label, project_label=_prj_label, view_data=data, view_id=id) print("View created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def deprecate(id, _org_label, _prj_label, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: response = nxs.resources.fetch(org_label=_org_label, project_label=_prj_label, schema_id='_', resource_id=id) if _json: utils.print_json(response, colorize=pretty) response = nxs.resources.deprecate(resource=response, rev=response["_rev"]) if _json: utils.print_json(response, colorize=pretty) print("Resource '%s' was deprecated." % (id)) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def create(_org_label, _prj_label, id, _payload, file, dir, _schemas_base_dir, _schemas_ns, _strategy, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = {} if _payload is not None and file is not None: utils.error("--data and --file are mutually exclusive.") if _payload is not None: data = json.loads(_payload) if file is not None: with open(file) as f: data = json.load(f) if dir is not None: if _schemas_base_dir: print(_schemas_base_dir) _schemas_base_dir = json.loads(_schemas_base_dir) imported, not_imported = schemahelper.import_schemas( dir, _org_label, _prj_label, _schemas_base_dir, _schemas_ns, _strategy) if len(not_imported) > 0: with open("schema-import-errors.log", "w") as file: for (schema_file_path, exception_name, error_message) in not_imported: file.write( "schema={} exception_name={} message={}\n".format( schema_file_path, exception_name, error_message)) utils.error( "\nFailed to import {} schemas. See 'schema-import-errors.log' for details." .format(len(not_imported))) if data: response = nxs.schemas.create(org_label=_org_label, project_label=_prj_label, schema_obj=data, schema_id=id) print("Schema created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def query_es(_org_label, _prj_label, id, _payload, file, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: default_query = {"query": {"query_string": {"query": "*"}}} data = get_query_from_payload_xor_data_otherwise_editor( _payload, file, default_query, file_prefix="query-es") response = nxs.views.query_es(org_label=_org_label, project_label=_prj_label, view_id=id, query=data) if _json: utils.print_json(response, colorize=pretty) else: table = PrettyTable(['Id', 'Type', 'Revision', 'Deprecated']) table.align["Id"] = "l" table.align["Type"] = "l" table.align["Revision"] = "l" table.align["Deprecated"] = "l" for r in response["hits"]["hits"]: types = "" if "_source" in r and "@type" in r["_source"]: if type(r["_source"]["@type"]) is str: types = r["_source"]["@type"] elif isinstance(r["_source"]["@type"], collections.Sequence): for t in r["_source"]["@type"]: types += t + "\n" else: utils.warn("Unsupported type: " + type(r["_source"]["@type"])) types = r["_source"]["@type"] else: types = '-' table.add_row([ r["_source"]["@id"], types, r["_source"]["_rev"], r["_source"]["_deprecated"] ]) print(table) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def _list(_org_label, _prj_label, subpath, _ancestor, _self, _json, pretty, verbose): if _org_label != '*': _org_label = utils.get_organization_label(_org_label) if _prj_label != '*': _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: path = _org_label + '/' + _prj_label if subpath is not None: path += '/' + subpath if verbose: print("subpath: %s" % path) print("self: %s" % _self) print("ancestors: %s" % _ancestor) response = nxs.acls.list(subpath=path, ancestors=_ancestor, self=_self) if _json: utils.print_json(response, colorize=pretty) else: columns = ['Path', 'Identity', 'Permissions'] table = PrettyTable(columns) for c in columns: table.align[c] = "l" for _acl in response["_results"]: for entry in _acl["acl"]: i = entry["identity"] _type = i["@type"] printed_identity = _type if _type == "User": printed_identity = "%s: %s (realm: %s)" % (_type, i["subject"], i["realm"]) elif _type == "Group": printed_identity = "%s: %s (realm: %s)" % (_type, i["group"], i["realm"]) elif _type == "Authenticated": printed_identity = "%s (realm: %s)" % (_type, i["realm"]) _permissions = "\n".join(entry["permissions"]) table.add_row([_acl["_path"], printed_identity, _permissions]) print(table) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def deprecate(id, _org_label, _prj_label, revision, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: if revision is None: revision = get_current_rev(org_label=_org_label, project_label=_prj_label, id=id, nxs=nxs) response = nxs.resolvers.deprecate(org_label=_org_label, project_label=_prj_label, id=id, rev=revision) if _json: utils.print_json(response, colorize=pretty) print("Resolver '%s' was deprecated." % id) except nxs.HTTPError as e: utils.error(str(e)) utils.print_json(e.response.json(), colorize=True)
def create(_org_label, _prj_label, id, _payload, file, _json, pretty): _org_label = utils.get_organization_label(_org_label) _prj_label = utils.get_project_label(_prj_label) nxs = utils.get_nexus_client() try: data = {} if _payload is not None and file is not None: utils.error("--data and --file are mutually exclusive.") if _payload is not None: data = json.loads(_payload) if file is not None: with open(file) as f: data = json.load(f) response = nxs.schemas.create(org_label=_org_label, project_label=_prj_label, schema_obj=data, schema_id=id) print("Schema created (id: %s)" % response["@id"]) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))
def create(label, _org_label, description, base, vocab, _api_mapping, _data_context_payload, _data_context_id, _resolver_payload, _resolver_id, _json, pretty): _org_label = utils.get_organization_label(_org_label) try: mappings = None if _api_mapping is not None: mappings = [] for am in _api_mapping: if "=" not in am: utils.error("Invalid API Mapping, it should be in the format <prefix>=<URL>: %s" % am) key, value = am.split("=", 1) entry = { "prefix": key, "namespace": value } mappings.append(entry) nxs = utils.get_nexus_client() response = nxs.projects.create(org_label=_org_label, project_label=label, description=description, api_mappings=mappings, vocab=vocab, base=base) print("Project created (id: %s)" % response["@id"]) if _resolver_payload is not None: print("Initializing a resolver within the project (id: %s)" % response["@id"]) resolver_data = json.loads(_resolver_payload) full_url = nexussdk_http._full_url(path=[nxs.resolvers.SEGMENT, _org_label, label], use_base=False) resolver_response = nxs.resolvers.create_(path=full_url, payload=resolver_data, id=_resolver_id) print("Resolver created (id: %s) in %s project" % (resolver_response["@id"], label)) if _data_context_payload is not None: print("Initializing a context within the project (id: %s)" % response["@id"]) context = {} context_obj = {} if vocab: context_obj["@vocab"] = vocab if base: context_obj["@base"] = base try: data_context = json.loads(_data_context_payload) if data_context is list: # _data_context_payload = ["http://schema.org",{"prefix_name":"prefix_mapping"}] if not context_obj: context["@context"] = data_context else: context["@context"] = data_context.append(context_obj) else: # _data_context_payload = {"prefix_name":"prefix_mapping"} if not context_obj: context["@context"] = data_context else: context["@context"] = [data_context, context_obj] except Exception as e: if isinstance(_data_context_payload, str): # _data_context_payload = "http://schema.org" if not context_obj: context["@context"] = _data_context_payload else: context["@context"] = [_data_context_payload, context_obj] else: utils.error(str(e)) context_response = nxs.resources.create(org_label=_org_label, project_label=label, data=context,schema_id="_",resource_id=_data_context_id) print("Context created (id: %s) in %s project" % (context_response["@id"], label)) if _json: utils.print_json(response, colorize=pretty) except nxs.HTTPError as e: utils.print_json(e.response.json(), colorize=True) utils.error(str(e))