Catalog alignment
[sdc.git] / catalog-be / src / main / resources / scripts / import / tosca / importHeatTypes.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 heat types                                                                                                                                                                                                                                                                                                                                     #
13 #                                                                                                                                                                                                                                                                                                                                                                       #
14 # activation :                                                                                                                                                                                                                                                                                                                                          #
15 #       python importHeatTypes.py [-s <scheme> | --scheme=<scheme> ] [-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 importHeatTypes.py [-f <input file> | --ifile=<input file> ]                                                                                                                                                                                                             #
19 #                                                                                                                                                                                                                                                                                                                                                               #
20 #####################################################################################################################################################################################
21
22 def importHeatTypes(scheme, beHost, bePort, adminUser, fileDir, updateversion):
23         
24         heatTypes = [ "globalNetwork",
25                                   "globalPort",
26                                   "globalCompute",
27                                   "volume",
28                                   "cinderVolume",
29                                   "contrailVirtualNetwork",
30                                   "neutronNet",
31                                   "neutronPort",
32                                   "novaServer",
33                                   "extVl",
34                                   "internalVl",
35                                   "extCp",
36                                   "vl",
37                                   "eline",
38                                   "abstractSubstitute",
39                                   "Generic_VFC", 
40                                   "Generic_VF",
41                                   "Generic_CR",
42                                   "Generic_PNF",
43                                   "Generic_Service",
44                                   "contrailNetworkRules",
45                                   "contrailPort",
46                                   "portMirroring",
47                                   "serviceProxy",
48                                   "contrailV2NetworkRules",
49                                   "contrailV2VirtualNetwork",
50                                   "securityRules",
51                                   "contrailAbstractSubstitute",
52                                   "contrailCompute",
53                                   "contrailV2VirtualMachineInterface",
54                                   "subInterface",
55                                   "contrailV2VLANSubInterface",
56                                   "multiFlavorVFC",
57                                   "vnfConfiguration",
58                                   "extCp2",
59                                   "extNeutronCP",
60                   "extContrailCP",
61                                   "portMirroringByPolicy",
62                                   "forwardingPath",
63                                   "configuration",
64                                   "VRFObject",
65                                   "extVirtualMachineInterfaceCP",
66                                   "VLANNetworkReceptor",
67                                   "VRFEntry",
68                   "subInterfaceV2",
69                   "contrailV2VLANSubInterfaceV2",
70                   "fabricConfiguration"
71                                   ]
72                 
73         responseCodes = [200, 201]
74                 
75         if(updateversion == 'false'):
76                 responseCodes = [200, 201, 409]
77                 
78         results = []
79         for heatType in heatTypes:
80                 result = createNormativeType(scheme, beHost, bePort, adminUser, fileDir, heatType, updateversion)
81                 results.append(result)
82                 if ( result[1] == None or result[1] not in responseCodes) :
83                         print "Failed creating heat type " + heatType + ". " + str(result[1])                           
84         return results  
85
86
87 def main(argv):
88         print 'Number of arguments:', len(sys.argv), 'arguments.'
89
90         beHost = 'localhost' 
91         bePort = '8080'
92         adminUser = 'jh0003'
93         updateversion = 'true'
94         scheme = 'http'
95         
96         try:
97                 opts, args = getopt.getopt(argv,"i:p:u:v:h:s:",["ip=","port=","user=","updateversion=","scheme="])
98         except getopt.GetoptError:
99                 usage()
100                 error_and_exit(2, 'Invalid input')
101                  
102         for opt, arg in opts:
103         #print opt, arg
104                 if opt == '-h':
105                         usage()                        
106                         sys.exit(3)
107                 elif opt in ("-i", "--ip"):
108                         beHost = arg
109                 elif opt in ("-p", "--port"):
110                         bePort = arg
111                 elif opt in ("-u", "--user"):
112                         adminUser = arg
113                 elif opt in ("-s", "--scheme"):
114                         scheme = arg
115                 elif opt in ("-v", "--updateversion"):
116                         if (arg.lower() == "false" or arg.lower() == "no"):
117                                 updateversion = 'false'
118
119         print 'scheme =',scheme,', be host =',beHost,', be port =', bePort,', user =', adminUser
120         
121         if ( beHost == None ):
122                 usage()
123                 sys.exit(3)
124
125         results = importHeatTypes(scheme, beHost, bePort, adminUser, "../../../import/tosca/heat-types/", updateversion)
126
127         print "-----------------------------"
128         for result in results:
129                 print "{0:20} | {1:6}".format(result[0], result[1])
130         print "-----------------------------"
131         
132         responseCodes = [200, 201]
133         
134         if(updateversion == 'false'):
135                 responseCodes = [200, 201, 409]
136         
137         failedNormatives = filter(lambda x: x[1] == None or x[1] not in responseCodes, results)
138         if (len(failedNormatives) > 0):
139                 error_and_exit(1, None)
140         else:
141                 error_and_exit(0, None)
142
143
144 if __name__ == "__main__":
145         main(sys.argv[1:])
146
147