Support BBS Modeling in SDC
[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                                            "PonUni",
47                                            "OltNni",
48                                            "OntNni"
49                                      ]
50
51         responseCodes = [200, 201]
52
53         if(updateversion == 'false'):
54                 responseCodes = [200, 201, 409]
55
56         results = []
57         for nfvType in nfvTypes:
58                 result = createNormativeType(scheme, beHost, bePort, adminUser, fileDir, nfvType, updateversion)
59                 results.append(result)
60                 if ( result[1] == None or result[1] not in responseCodes) :
61                         print "Failed creating heat type " + nfvType + ". " + str(result[1])
62         return results
63
64
65 def main(argv):
66         print 'Number of arguments:', len(sys.argv), 'arguments.'
67
68         beHost = 'localhost'
69         bePort = '8080'
70         adminUser = 'jh0003'
71         updateversion = 'true'
72         scheme = 'http'
73
74         try:
75                 opts, args = getopt.getopt(argv,"i:p:u:v:h:",["ip=","port=","user=","updateversion="])
76         except getopt.GetoptError:
77                 usage()
78                 error_and_exit(2, 'Invalid input')
79
80         for opt, arg in opts:
81         #print opt, arg
82                 if opt == '-h':
83                         usage()
84                         sys.exit(3)
85                 elif opt in ("-i", "--ip"):
86                         beHost = arg
87                 elif opt in ("-p", "--port"):
88                         bePort = arg
89                 elif opt in ("-u", "--user"):
90                         adminUser = arg
91                 elif opt in ("-s", "--scheme"):
92                         scheme = arg
93                 elif opt in ("-v", "--updateversion"):
94                         if (arg.lower() == "false" or arg.lower() == "no"):
95                                 updateversion = 'false'
96
97         print 'scheme =',scheme,',be host =',beHost,', be port =', bePort,', user =', adminUser
98
99         if ( beHost == None ):
100                 usage()
101                 sys.exit(3)
102
103         results = importNfvTypes(scheme, beHost, bePort, adminUser, "../../../import/tosca/nfv-types/", updateversion)
104
105         print "-----------------------------"
106         for result in results:
107                 print "{0:20} | {1:6}".format(result[0], result[1])
108         print "-----------------------------"
109
110         responseCodes = [200, 201]
111
112         if(updateversion == 'false'):
113                 responseCodes = [200, 201, 409]
114
115         failedNormatives = filter(lambda x: x[1] == None or x[1] not in responseCodes, results)
116         if (len(failedNormatives) > 0):
117                 error_and_exit(1, None)
118         else:
119                 error_and_exit(0, None)
120
121
122 if __name__ == "__main__":
123         main(sys.argv[1:])