Decouple TXT Report file writing and formatting logic (6/6)
[sdc.git] / catalog-be / src / main / resources / scripts / import / tosca / importNfvTypes.py
1 from importNormativeTypes import *
2
3
4 #####################################################################################################################################################################################################
5 #                                                                                                                                                                                                                                                                                                                                                                                               #
6 # Import Nfv Types from a given file                                                                                                                                                                                                                                                                                                                            #
7 #                                                                                                                                                                                                                                                                                                                                                                                                       #
8 # activation :                                                                                                                                                                                                                                                                                                                                                                          #
9 #       python importNfvTypes.py [optional -s <scheme> | --scheme=<scheme>, default http] [-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 def importNfvTypes(scheme, be_host, be_port, admin_user, file_dir, update_version):
17     nfv_types = ["underlayVpn",
18                  "overlayTunnel",
19                  "genericNeutronNet",
20                  "allottedResource",
21                  "extImageFile",
22                  "extLocalStorage",
23                  "extZteCP",
24                  "extZteVDU",
25                  "extZteVL",
26                  "NSD",
27                  "VDU",
28                  "vduCompute",
29                  "Cp",
30                  "vduVirtualStorage",
31                  "vduVirtualBlockStorage",
32                  "vduVirtualFileStorage",
33                  "vduVirtualObjectStorage",
34                  "vduVirtualStorage",
35                  "vnfVirtualLink",
36                  "vnfExtCp",
37                  "vduCp",
38                  "VNF",
39                  "PonUni",
40                  "OltNni",
41                  "OntNni"]
42
43     response_codes = [200, 201]
44
45     if update_version == 'false':
46         response_codes = [200, 201, 409]
47
48     results = []
49     for nfv_type in nfv_types:
50         result = createNormativeType(scheme, be_host, be_port, admin_user, file_dir, nfv_type, update_version)
51         results.append(result)
52         if result[1] is None or result[1] not in response_codes:
53             print "Failed creating heat type " + nfv_type + ". " + str(result[1])
54     return results
55
56
57 def main(argv):
58     print 'Number of arguments:', len(sys.argv), 'arguments.'
59
60     be_host = 'localhost'
61     be_port = '8080'
62     admin_user = 'jh0003'
63     update_version = 'true'
64     scheme = 'http'
65
66     try:
67         opts, args = getopt.getopt(argv, "i:p:u:v:h:", ["ip=", "port=", "user=", "updateversion="])
68     except getopt.GetoptError:
69         usage()
70         error_and_exit(2, 'Invalid input')
71
72     for opt, arg in opts:
73         # print opt, arg
74         if opt == '-h':
75             usage()
76             sys.exit(3)
77         elif opt in ("-i", "--ip"):
78             be_host = arg
79         elif opt in ("-p", "--port"):
80             be_port = arg
81         elif opt in ("-u", "--user"):
82             admin_user = arg
83         elif opt in ("-s", "--scheme"):
84             scheme = arg
85         elif opt in ("-v", "--updateversion"):
86             if arg.lower() == "false" or arg.lower() == "no":
87                 update_version = 'false'
88
89     print 'scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', user =', admin_user
90
91     if be_host is None:
92         usage()
93         sys.exit(3)
94
95     results = importNfvTypes(scheme, be_host, be_port, admin_user, "../../../import/tosca/nfv-types/", update_version)
96
97     print "-----------------------------"
98     for result in results:
99         print "{0:20} | {1:6}".format(result[0], result[1])
100     print "-----------------------------"
101
102     response_codes = [200, 201]
103
104     if update_version == 'false':
105         response_codes = [200, 201, 409]
106
107     failed_normatives = filter(lambda x: x[1] is None or x[1] not in response_codes, results)
108     if len(list(failed_normatives)) > 0:
109         error_and_exit(1, None)
110     else:
111         error_and_exit(0, None)
112
113
114 if __name__ == "__main__":
115     main(sys.argv[1:])