Onap normatives are imported always
[sdc.git] / catalog-be / src / main / resources / scripts / import / tosca / upgradeONAPTypes.py
1 import pycurl
2 import sys, getopt
3 from StringIO import StringIO
4 import json
5 import copy
6 from importCommon import *
7 from importNormativeTypes import *
8 import importCommon
9 import json
10
11
12 ################################################################################################################################################################################################
13 #                                                                                                                                                                                                                                                                                                                                      #
14 # Upgrades all Heat and Normative types confiugred in "typesToUpgrade.json" file                                                                                                                                                                                                                       #
15 #                                                                                                                                                                                                                                                                                                                                          #
16 # activation                                                                                                                                                                                   #
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> ] #
18 #                                                                                                                                                                                                                                                                                                                                          #
19 # shortest activation (be host = localhost, be port = 8080):                                                                                                                                                                                                               #
20 #               python upgradeHeatAndNormativeTypes.py [-f <input file> | --ifile=<input file> ]                                                                                                                                                                       #
21 #                                                                                                                                                                                                                                                                                                                                      #
22 ################################################################################################################################################################################################
23 def upgradeOnapTypesPerConfigFile(scheme, beHost, bePort, adminUser, baseDir, updateversion):
24     responseCodes = [200, 201]
25     if (updateversion == 'false'):
26         responseCodes = [200, 201, 409]
27     with open("onapTypesToUpgrade.json", 'r') as stream:
28         try:
29             types = json.load(stream)
30             onapTypes = types["onap"]
31             debug(onapTypes)
32             onapFileDir = baseDir + "onap-types/"
33             debug(onapFileDir)
34             results = []
35             for onapType in onapTypes:
36                 result = createNormativeType(scheme, beHost, bePort, adminUser, onapFileDir, onapType.encode('ascii', 'ignore'), updateversion)
37                 results.append(result)
38                 if (result[1] == None or result[1] not in responseCodes):
39                     print "Failed creating onap type " + onapType + ". " + str(result[1])
40         except yaml.YAMLError as exc:
41             print(exc)
42
43
44
45 def main(argv):
46     print 'Number of arguments:', len(sys.argv), 'arguments.'
47
48     beHost = 'localhost'
49     bePort = '8080'
50     adminUser = 'jh0003'
51     updateversion = 'true'
52     scheme = 'http'
53
54     try:
55         opts, args = getopt.getopt(argv, "i:p:u:v:h:s:", ["ip=", "port=", "user=", "updateversion=","scheme="])
56     except getopt.GetoptError:
57         usage()
58         errorAndExit(2, 'Invalid input')
59
60     for opt, arg in opts:
61         # print opt, arg
62         if opt == '-h':
63             usage()
64             sys.exit(3)
65         elif opt in ("-i", "--ip"):
66             beHost = arg
67         elif opt in ("-p", "--port"):
68             bePort = arg
69         elif opt in ("-u", "--user"):
70             adminUser = arg
71         elif opt in ("-s", "--scheme"):
72             scheme = arg
73         elif opt in ("-v", "--updateversion"):
74             if (arg.lower() == "false" or arg.lower() == "no"):
75                 updateversion = 'false'
76
77     print 'scheme =',scheme,', be host =',beHost, ', be port =', bePort, ', user =', adminUser
78
79     if (beHost == None):
80         usage()
81         sys.exit(3)
82
83     results = upgradeOnapTypesPerConfigFile(scheme, beHost, bePort, adminUser, "../../../import/tosca/", updateversion)
84
85     print "-----------------------------"
86     for result in results:
87         print "{0:20} | {1:6}".format(result[0], result[1])
88     print "-----------------------------"
89
90     responseCodes = [200, 201]
91
92     if (updateversion == 'false'):
93         responseCodes = [200, 201, 409]
94
95     failedNormatives = filter(lambda x: x[1] == None or x[1] not in responseCodes, results)
96     if (len(failedNormatives) > 0):
97         errorAndExit(1, None)
98     else:
99         errorAndExit(0, None)
100
101
102 if __name__ == "__main__":
103     main(sys.argv[1:])
104