Decouple TXT Report file writing and formatting logic (6/6)
[sdc.git] / catalog-be / src / main / resources / scripts / import / tosca / upgradeHeatTypes1707.py
1 from importNormativeTypes import *
2
3
4 #################################################################################################################################################################################
5 #                                                                                                                                                                                                                                                                                                                                                       #
6 # Import all users from a given file                                                                                                                                                                                                                                                                                    #
7 #                                                                                                                                                                                                                                                                                                                                                               #
8 # activation :                                                                                                                                                                                                                                                                                                                                  #
9 #       python importUsers.py [-s <scheme> | --scheme=<scheme> ] [-i <be host> | --ip=<be host>] [-p <be port> | --port=<be port> ] [-f <input file> | --ifile=<input file> ]   #
10 #                                                                                                                                                                                                                                                                                                                                                               #
11 # shortest activation (be host = localhost, be port = 8080):                                                                                                                                                                                                                                    #
12 #               python importUsers.py [-f <input file> | --ifile=<input file> ]                                                                                                                                                                                                         #
13 #                                                                                                                                                                                                                                                                                                                                                       #
14 #################################################################################################################################################################################
15
16
17 def upgradeHeatTypes1707(scheme, be_host, be_port, admin_user, file_dir, update_version):
18     heat_types = ["volume",
19                   "cinderVolume",
20                   "extVl",
21                   "extCp",
22                   "Generic_VFC",
23                   "Generic_VF",
24                   "Generic_PNF",
25                   "Generic_Service",
26                   "globalPort",
27                   "globalNetwork",
28                   "contrailV2VirtualMachineInterface",
29                   "contrailV2VLANSubInterface",
30                   "contrailPort",
31                   "contrailV2VirtualNetwork",
32                   "contrailVirtualNetwork",
33                   "neutronNet",
34                   "neutronPort",
35                   "multiFlavorVFC",
36                   "vnfConfiguration"]
37
38     response_codes = [200, 201]
39
40     if update_version == 'false':
41         response_codes = [200, 201, 409]
42
43     results = []
44     for heatType in heat_types:
45         result = createNormativeType(scheme, be_host, be_port, admin_user, file_dir, heatType, update_version)
46         results.append(result)
47         if result[1] is None or result[1] not in response_codes:
48             print "Failed creating heat type " + heatType + ". " + str(result[1])
49     return results
50
51
52 def main(argv):
53     print 'Number of arguments:', len(sys.argv), 'arguments.'
54
55     be_host = 'localhost'
56     be_port = '8080'
57     admin_user = 'jh0003'
58     update_version = 'true'
59     scheme = 'http'
60
61     try:
62         opts, args = getopt.getopt(argv, "i:p:u:v:h:s:", ["ip=", "port=", "user=", "updateversion=", "scheme="])
63     except getopt.GetoptError:
64         usage()
65         error_and_exit(2, 'Invalid input')
66
67     for opt, arg in opts:
68         # print opt, arg
69         if opt == '-h':
70             usage()
71             sys.exit(3)
72         elif opt in ("-i", "--ip"):
73             be_host = arg
74         elif opt in ("-p", "--port"):
75             be_port = arg
76         elif opt in ("-u", "--user"):
77             admin_user = arg
78         elif opt in ("-s", "--scheme"):
79             scheme = arg
80         elif opt in ("-v", "--updateversion"):
81             if arg.lower() == "false" or arg.lower() == "no":
82                 update_version = 'false'
83
84     print 'scheme =', scheme, ', be host =', be_host, ', be port =', be_port, ', user =', admin_user
85
86     if be_host is None:
87         usage()
88         sys.exit(3)
89
90     results = upgradeHeatTypes1707(scheme, be_host, be_port, admin_user, "../../../import/tosca/heat-types/",
91                                    update_version)
92
93     print "-----------------------------"
94     for result in results:
95         print "{0:20} | {1:6}".format(result[0], result[1])
96     print "-----------------------------"
97
98     response_codes = [200, 201]
99
100     if update_version == 'false':
101         response_codes = [200, 201, 409]
102
103     failed_normatives = filter(lambda x: x[1] is None or x[1] not in response_codes, results)
104     if len(list(failed_normatives)) > 0:
105         error_and_exit(1, None)
106     else:
107         error_and_exit(0, None)
108
109
110 if __name__ == "__main__":
111     main(sys.argv[1:])