diff options
Diffstat (limited to 'catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py')
-rw-r--r-- | catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py | 305 |
1 files changed, 156 insertions, 149 deletions
diff --git a/catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py b/catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py index 1418722dff..55521997f5 100644 --- a/catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py +++ b/catalog-be/src/main/resources/scripts/import/tosca/importNodeType.py @@ -1,163 +1,170 @@ -import pycurl -import sys, getopt, os -from StringIO import StringIO import json -import copy -from importCommon import * -import importCommon +import os import zipfile +from StringIO import StringIO + +import pycurl + +import importCommon +from importCommon import * + + ################################################################################################################################################ # # ################################################################################################################################################ + def createZipFromYml(ymlFile, zipFile): - zip = zipfile.ZipFile(zipFile, 'w', zipfile.ZIP_DEFLATED) - - zip.write(ymlFile, os.path.basename(ymlFile)) - zip.close() - -def createUserNormativeType(scheme, beHost, bePort, adminUser, fileDir, ELEMENT_NAME): - - try: - log("in create normative type ", ELEMENT_NAME) - debug("userId", adminUser) - debug("fileDir", fileDir) - - buffer = StringIO() - c = pycurl.Curl() - - url = scheme + '://' + beHost + ':' + bePort + '/sdc2/rest/v1/catalog/upload/multipart' - c.setopt(c.URL, url) - c.setopt(c.POST, 1) - - adminHeader = 'USER_ID: ' + adminUser - #c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json', 'Accept: application/json', adminHeader]) - c.setopt(pycurl.HTTPHEADER, [adminHeader]) - - ymlFile = fileDir + ELEMENT_NAME + "/normative-types-new-" + ELEMENT_NAME + ".yml" - zipFile = fileDir + ELEMENT_NAME + "/normative-types-new-" + ELEMENT_NAME + ".zip" - debug(ymlFile) - debug(zipFile) - path = zipFile - debug("path=" + path) - CURRENT_JSON_FILE=fileDir + ELEMENT_NAME + "/" + ELEMENT_NAME + ".json" - debug(CURRENT_JSON_FILE) - jsonFile = open(CURRENT_JSON_FILE) - - debug("before load json") - json_data = json.load(jsonFile, strict=False) - debug(json_data) - - jsonAsStr = json.dumps(json_data) - debug(path) - send = [('resourceMetadata', jsonAsStr), ('resourceZip', (pycurl.FORM_FILE, path))] - debug(send) - c.setopt(pycurl.HTTPPOST, send) - - c.setopt(c.WRITEFUNCTION, buffer.write) - if scheme == 'https': - c.setopt(pycurl.SSL_VERIFYPEER, 0) - c.setopt(pycurl.SSL_VERIFYHOST, 0) - - res = c.perform() - - #print("Before get response code") - httpRes = c.getinfo(c.RESPONSE_CODE) - if (httpRes != None): - debug("http response=", httpRes) - #print('Status: ' + str(responseCode)) - debug(buffer.getvalue()) - c.close() - - return (ELEMENT_NAME, httpRes, buffer.getvalue()) - - except Exception as inst: - print("ERROR=" + str(inst)) - return (ELEMENT_NAME, None, None) + zip = zipfile.ZipFile(zipFile, 'w', zipfile.ZIP_DEFLATED) + + zip.write(ymlFile, os.path.basename(ymlFile)) + zip.close() + + +def createUserNormativeType(scheme, be_host, be_port, admin_user, file_dir, element_name): + try: + log("in create normative type ", element_name) + debug("userId", admin_user) + debug("fileDir", file_dir) + + _buffer = StringIO() + c = pycurl.Curl() + + url = scheme + '://' + be_host + ':' + be_port + '/sdc2/rest/v1/catalog/upload/multipart' + c.setopt(c.URL, url) + c.setopt(c.POST, 1) + + admin_header = 'USER_ID: ' + admin_user + # c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json', 'Accept: application/json', adminHeader]) + c.setopt(pycurl.HTTPHEADER, [admin_header]) + + ymlFile = file_dir + element_name + "/normative-types-new-" + element_name + ".yml" + zipFile = file_dir + element_name + "/normative-types-new-" + element_name + ".zip" + debug(ymlFile) + debug(zipFile) + path = zipFile + debug("path=" + path) + current_json_file = file_dir + element_name + "/" + element_name + ".json" + debug(current_json_file) + json_file = open(current_json_file) + + debug("before load json") + json_data = json.load(json_file, strict=False) + debug(json_data) + + json_as_str = json.dumps(json_data) + debug(path) + send = [('resourceMetadata', json_as_str), ('resourceZip', (pycurl.FORM_FILE, path))] + debug(send) + c.setopt(pycurl.HTTPPOST, send) + + c.setopt(c.WRITEFUNCTION, _buffer.write) + if scheme == 'https': + c.setopt(pycurl.SSL_VERIFYPEER, 0) + c.setopt(pycurl.SSL_VERIFYHOST, 0) + + c.perform() + + # print("Before get response code") + http_res = c.getinfo(c.RESPONSE_CODE) + if http_res is not None: + debug("http response=", http_res) + # print('Status: ' + str(responseCode)) + debug(_buffer.getvalue()) + c.close() + + return element_name, http_res, _buffer.getvalue() + + except Exception as inst: + print("ERROR=" + str(inst)) + return element_name, None, None def usage(): - print sys.argv[0], '[optional -s <scheme> | --scheme=<scheme>, default http] [-i <be host> | --ip=<be host>] [-p <be port> | --port=<be port> ] [-u <user userId> | --user=<user userId> ] [-l <directory base location> | --location=<directory base location>] [-e <element name> | --element=<element name>]' - print "----------------- Example -------------------" - print "python importNodeType.py -d false -l /home/vagrant/catalog-be-1604.0.2.15.6-SNAPSHOT/scripts/import/tosca/../../../import/tosca/user-normative-types/ -e root1" + print sys.argv[0], \ + '[optional -s <scheme> | --scheme=<scheme>, default http] [-i <be host> | --ip=<be host>] [-p <be port> | --port=<be port> ] [-u <user userId> | --user=<user userId> ] [-l <directory base location> | --location=<directory base location>] [-e <element name> | --element=<element name>]' + print "----------------- Example -------------------" + print "python importNodeType.py -d false -l /home/vagrant/catalog-be-1604.0.2.15.6-SNAPSHOT/scripts/import/tosca/../../../import/tosca/user-normative-types/ -e root1" + def main(argv): - print 'Number of arguments:', len(sys.argv), 'arguments.' - - beHost = 'localhost' - bePort = '8080' - adminUser = 'jh0003' - debugf = None - location = None - element = None - scheme = 'http' - - try: - opts, args = getopt.getopt(argv,"i:p:u:d:l:e:h:s:",["ip=","port=","user=","location=","element=", "debug=","scheme="]) - except getopt.GetoptError: - usage() - error_and_exit(2, 'Invalid input') - - for opt, arg in opts: - #print opt, arg - if opt == '-h': - usage() - sys.exit(3) - elif opt in ("-i", "--ip"): - beHost = arg - elif opt in ("-p", "--port"): - bePort = arg - elif opt in ("-u", "--user"): - adminUser = arg - elif opt in ("-l", "--location"): - location = arg - elif opt in ("-e", "--element"): - element = arg - elif opt in ("-s", "--scheme"): - scheme = arg - elif opt in ("-d", "--debug"): - print arg - debugf = bool(arg.lower() == "true" or arg.lower() == "yes") - - print 'scheme =',scheme,', be host =',beHost,', be port =', bePort,', user =', adminUser - - if ( beHost == None ): - usage() - sys.exit(3) - - if (debugf != None): - print 'set debug mode to ' + str(debugf) - importCommon.debugFlag = debugf - - if (location == None): - print 'Missing file location' - usage() - sys.exit(3) - - if (element == None): - print 'Missing element name. E.g. root, compute, ...' - usage() - sys.exit(3) - - #pathdir = os.path.dirname(os.path.realpath(sys.argv[0])) - - #baseFileLocation = pathdir + "/../../../import/tosca/" - #fileDir = baseFileLocation + "user-normative-types/" - - #normativeType = "root1" - - result = createUserNormativeType(scheme, beHost, bePort, adminUser, location, element) - #result = createUserNormativeType(beHost, bePort, adminUser, fileDir, normativeType) - print "---------------------------------------" - print "{0:30} | {1:6}".format(result[0], result[1]) - print "---------------------------------------" - - if ( result[1] == None or result[1] not in [200, 201] ) : - print "Failed creating normative type " + element + ". " + str(result[1]) - error_and_exit(1, None) - - error_and_exit(0, None) + print 'Number of arguments:', len(sys.argv), 'arguments.' + + be_host = 'localhost' + be_port = '8080' + admin_user = 'jh0003' + debug_f = None + location = None + element = None + scheme = 'http' + + try: + opts, args = getopt.getopt(argv, "i:p:u:d:l:e:h:s:", + ["ip=", "port=", "user=", "location=", "element=", "debug=", "scheme="]) + except getopt.GetoptError: + usage() + error_and_exit(2, 'Invalid input') + + for opt, arg in opts: + # print opt, arg + if opt == '-h': + usage() + sys.exit(3) + elif opt in ("-i", "--ip"): + be_host = arg + elif opt in ("-p", "--port"): + be_port = arg + elif opt in ("-u", "--user"): + admin_user = arg + elif opt in ("-l", "--location"): + location = arg + elif opt in ("-e", "--element"): + element = arg + elif opt in ("-s", "--scheme"): + scheme = arg + elif opt in ("-d", "--debug"): + print arg + debug_f = bool(arg.lower() == "true" or arg.lower() == "yes") + + print 'scheme =', scheme, ', be host =', be_host, ', be port =', be_port, ', user =', admin_user + + if be_host is None: + usage() + sys.exit(3) + + if debug_f is not None: + print 'set debug mode to ' + str(debug_f) + importCommon.debugFlag = debug_f + + if location is None: + print 'Missing file location' + usage() + sys.exit(3) + + if element is None: + print 'Missing element name. E.g. root, compute, ...' + usage() + sys.exit(3) + + # pathdir = os.path.dirname(os.path.realpath(sys.argv[0])) + + # baseFileLocation = pathdir + "/../../../import/tosca/" + # fileDir = baseFileLocation + "user-normative-types/" + + # normativeType = "root1" + + result = createUserNormativeType(scheme, be_host, be_port, admin_user, location, element) + # result = createUserNormativeType(beHost, bePort, adminUser, fileDir, normativeType) + print "---------------------------------------" + print "{0:30} | {1:6}".format(result[0], result[1]) + print "---------------------------------------" + + if result[1] is None or result[1] not in [200, 201]: + print "Failed creating normative type " + element + ". " + str(result[1]) + error_and_exit(1, None) + + error_and_exit(0, None) -if __name__ == "__main__": - main(sys.argv[1:]) +if __name__ == "__main__": + main(sys.argv[1:]) |