1 from importNormativeTypes import *
4 ################################################################################################################################################################################################
6 # Upgrades all Heat and Normative types confiugred in "typesToUpgrade.json" file #
9 # python upgradeHeatAndNormativeTypes.py [-s <scheme> | --scheme=<scheme> ] [-i <be host> | --ip=<be host>] [-p <be port> | --port=<be port> ] [-f <input file> | --ifile=<input file> ] #
11 # shortest activation (be host = localhost, be port = 8080): #
12 # python upgradeHeatAndNormativeTypes.py [-f <input file> | --ifile=<input file> ] #
14 ################################################################################################################################################################################################
17 def upgradeTypesPerConfigFile(scheme, be_host, be_port, admin_user, base_dir, update_version):
18 response_codes = [200, 201]
19 if update_version == 'false':
20 response_codes = [200, 201, 409]
21 with open("typesToUpgrade.json", 'r') as stream:
23 types = json.load(stream)
24 heat_types = types["heat"]
26 normative_types = types["normative"]
27 debug(normative_types)
28 heat_file_dir = base_dir + "heat-types/"
30 normative_file_dir = base_dir + "normative-types/"
31 debug(normative_file_dir)
33 for heat_type in heat_types:
34 result = createNormativeType(scheme, be_host, be_port, admin_user, heat_file_dir,
35 heat_type.encode('ascii', 'ignore'), update_version)
36 results.append(result)
37 if result[1] is None or result[1] not in response_codes:
38 print "Failed creating heat type " + heat_type + ". " + str(result[1])
39 for normativeType in normative_types:
40 result = createNormativeType(scheme, be_host, be_port, admin_user, normative_file_dir,
41 normativeType.encode('ascii', 'ignore'), update_version)
42 results.append(result)
43 if result[1] is None or result[1] not in response_codes:
44 print "Failed creating normative type " + normativeType + ". " + str(result[1])
46 except Exception as exc:
51 print 'Number of arguments:', len(sys.argv), 'arguments.'
56 update_version = 'true'
60 opts, args = getopt.getopt(argv, "i:p:u:v:h:s:", ["ip=", "port=", "user=", "updateversion=", "scheme="])
61 except getopt.GetoptError:
63 error_and_exit(2, 'Invalid input')
70 elif opt in ("-i", "--ip"):
72 elif opt in ("-p", "--port"):
74 elif opt in ("-u", "--user"):
76 elif opt in ("-s", "--scheme"):
78 elif opt in ("-v", "--updateversion"):
79 if arg.lower() == "false" or arg.lower() == "no":
80 update_version = 'false'
82 print 'scheme =', scheme, ', be host =', be_host, ', be port =', be_port, ', user =', admin_user
88 results = upgradeTypesPerConfigFile(scheme, be_host, be_port, admin_user, "../../../import/tosca/", update_version)
90 print "-----------------------------"
91 for result in results:
92 print "{0:20} | {1:6}".format(result[0], result[1])
93 print "-----------------------------"
95 response_codes = [200, 201]
97 if update_version == 'false':
98 response_codes = [200, 201, 409]
100 failed_normatives = filter(lambda x: x[1] is None or x[1] not in response_codes, results)
101 if len(list(failed_normatives)) > 0:
102 error_and_exit(1, None)
104 error_and_exit(0, None)
107 if __name__ == "__main__":