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