3 from StringIO import StringIO
6 from importCommon import *
7 from importNormativeTypes import *
12 ################################################################################################################################################################################################
14 # Upgrades all Heat and Normative types confiugred in "typesToUpgrade.json" file #
17 # 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> ] #
19 # shortest activation (be host = localhost, be port = 8080): #
20 # python upgradeHeatAndNormativeTypes.py [-f <input file> | --ifile=<input file> ] #
22 ################################################################################################################################################################################################
23 def upgradeTypesPerConfigFile(scheme, beHost, bePort, adminUser, baseDir, updateversion):
24 responseCodes = [200, 201]
25 if (updateversion == 'false'):
26 responseCodes = [200, 201, 409]
27 with open("typesToUpgrade.json", 'r') as stream:
29 types = json.load(stream)
30 heatTypes = types["heat"]
32 normativeTypes = types["normative"]
34 heatFileDir = baseDir + "heat-types/"
36 normativeFileDir = baseDir + "normative-types/"
37 debug(normativeFileDir)
39 for heatType in heatTypes:
40 result = createNormativeType(scheme, beHost, bePort, adminUser, heatFileDir, heatType.encode('ascii', 'ignore'), updateversion)
41 results.append(result)
42 if (result[1] == None or result[1] not in responseCodes):
43 print "Failed creating heat type " + heatType + ". " + str(result[1])
44 for normativeType in normativeTypes:
45 result = createNormativeType(scheme, beHost, bePort, adminUser, normativeFileDir, normativeType.encode('ascii', 'ignore'), updateversion)
46 results.append(result)
47 if (result[1] == None or result[1] not in responseCodes):
48 print "Failed creating normative type " + normativeType + ". " + str(result[1])
50 except yaml.YAMLError as exc:
56 print 'Number of arguments:', len(sys.argv), 'arguments.'
61 updateversion = 'true'
65 opts, args = getopt.getopt(argv, "i:p:u:v:h:s:", ["ip=", "port=", "user=", "updateversion=","scheme="])
66 except getopt.GetoptError:
68 errorAndExit(2, 'Invalid input')
75 elif opt in ("-i", "--ip"):
77 elif opt in ("-p", "--port"):
79 elif opt in ("-u", "--user"):
81 elif opt in ("-s", "--scheme"):
83 elif opt in ("-v", "--updateversion"):
84 if (arg.lower() == "false" or arg.lower() == "no"):
85 updateversion = 'false'
87 print 'scheme =',scheme,', be host =',beHost, ', be port =', bePort, ', user =', adminUser
93 results = upgradeTypesPerConfigFile(scheme, beHost, bePort, adminUser, "../../../import/tosca/", updateversion)
95 print "-----------------------------"
96 for result in results:
97 print "{0:20} | {1:6}".format(result[0], result[1])
98 print "-----------------------------"
100 responseCodes = [200, 201]
102 if (updateversion == 'false'):
103 responseCodes = [200, 201, 409]
105 failedNormatives = filter(lambda x: x[1] == None or x[1] not in responseCodes, results)
106 if (len(failedNormatives) > 0):
107 errorAndExit(1, None)
109 errorAndExit(0, None)
112 if __name__ == "__main__":