blob: d93756f250aad7f80f5348e2c807135f0bc5bdd8 [file] [log] [blame]
zhanghaoyu7474d8c62015-08-26 14:53:28 +08001"""
Jeremy Ronquillob27ce4c2017-07-17 12:41:28 -07002Copyright 2015 Open Networking Foundation (ONF)
3
4Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
5the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
6or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
7
8 TestON is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 2 of the License, or
11 (at your option) any later version.
12
13 TestON is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with TestON. If not, see <http://www.gnu.org/licenses/>.
20"""
21
22"""
zhanghaoyu7474d8c62015-08-26 14:53:28 +080023This file provide the data
24lanqinglong@huawei.com
25"""
26import json
27
Jon Hall8638b562017-05-24 16:39:59 -070028
zhanghaoyu7474d8c62015-08-26 14:53:28 +080029class NetworkData:
30
Jon Hall8638b562017-05-24 16:39:59 -070031 def __init__( self ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +080032 self.id = ''
33 self.state = 'ACTIVE'
34 self.name = 'onosfw-1'
35 self.physicalNetwork = 'none'
36 self.admin_state_up = True
37 self.tenant_id = ''
38 self.routerExternal = False
Jon Hall8638b562017-05-24 16:39:59 -070039 self.type = 'LOCAL'
zhanghaoyu7474d8c62015-08-26 14:53:28 +080040 self.segmentationID = '6'
41 self.shared = False
42
Jon Hall8638b562017-05-24 16:39:59 -070043 def DictoJson( self ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +080044
Jon Hall8638b562017-05-24 16:39:59 -070045 if self.id == '' or self.tenant_id == '':
zhanghaoyu7474d8c62015-08-26 14:53:28 +080046 print 'Id and tenant id is necessary!'
47
48 Dicdata = {}
Jon Hall8638b562017-05-24 16:39:59 -070049 if self.id != '':
50 Dicdata[ 'id' ] = self.id
zhanghaoyu7474d8c62015-08-26 14:53:28 +080051 if self.state != '':
Jon Hall8638b562017-05-24 16:39:59 -070052 Dicdata[ 'status' ] = self.state
53 if self.name != '':
54 Dicdata[ 'name' ] = self.name
55 if self.physicalNetwork != '':
56 Dicdata[ 'provider:physical_network' ] = self.physicalNetwork
57 if self.admin_state_up != '':
58 Dicdata[ 'admin_state_up' ] = self.admin_state_up
59 if self.tenant_id != '':
60 Dicdata[ 'tenant_id' ] = self.tenant_id
61 if self.routerExternal != '':
62 Dicdata[ 'router:external' ] = self.routerExternal
63 if self.type != '':
64 Dicdata[ 'provider:network_type' ] = self.type
65 if self.segmentationID != '':
66 Dicdata[ 'provider:segmentation_id' ] = self.segmentationID
67 if self.shared != '':
68 Dicdata[ 'shared' ] = self.shared
zhanghaoyu7474d8c62015-08-26 14:53:28 +080069
Jon Hall8638b562017-05-24 16:39:59 -070070 Dicdata = { 'network': Dicdata }
zhanghaoyu7474d8c62015-08-26 14:53:28 +080071
Jon Hall8638b562017-05-24 16:39:59 -070072 return json.dumps( Dicdata, indent=4 )
zhanghaoyu7474d8c62015-08-26 14:53:28 +080073
Jon Hall8638b562017-05-24 16:39:59 -070074 def Ordered( self, obj ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +080075
Jon Hall8638b562017-05-24 16:39:59 -070076 if isinstance( obj, dict ):
77 return sorted( ( k, self.Ordered( v ) ) for k, v in obj.items() )
78 if isinstance( obj, list ):
79 return sorted( self.Ordered( x ) for x in obj )
zhanghaoyu7474d8c62015-08-26 14:53:28 +080080 else:
81 return obj
82
Jon Hall8638b562017-05-24 16:39:59 -070083 def JsonCompare( self, SourceData, DestiData, FirstPara, SecondPara ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +080084
85 try:
Jon Hall8638b562017-05-24 16:39:59 -070086 SourceCompareDataDic = json.loads( SourceData )
87 DestiCompareDataDic = json.loads( DestiData )
zhanghaoyu7474d8c62015-08-26 14:53:28 +080088 except ValueError:
89 print "SourceData or DestData is not JSON Type!"
90 return False
91
92 try:
Jon Hall8638b562017-05-24 16:39:59 -070093 Socom = SourceCompareDataDic[ FirstPara ][ SecondPara ]
94 Decom = DestiCompareDataDic[ FirstPara ][ SecondPara ]
95 except KeyError as error:
96 print "Key error ,This key is not found:%s" % error
zhanghaoyu7474d8c62015-08-26 14:53:28 +080097 return False
98
Jon Hall8638b562017-05-24 16:39:59 -070099 if str( Socom ).lower() == str( Decom ).lower():
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800100 return True
101 else:
Jon Hall8638b562017-05-24 16:39:59 -0700102 print "Source Compare data:" + FirstPara + "." + SecondPara + "=" + str( Socom )
103 print "Dest Compare data: " + FirstPara + "." + SecondPara + "=" + str( Decom )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800104 return False
105
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800106
Jon Hall8638b562017-05-24 16:39:59 -0700107class SubnetData( NetworkData ):
108
109 def __init__( self ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800110 self.id = ''
111 self.tenant_id = ''
112 self.network_id = ''
113 self.nexthop = '192.168.1.1'
114 self.destination = '192.168.1.1/24'
115 self.start = '192.168.2.2'
116 self.end = '192.168.2.254'
117 self.ipv6_address_mode = 'DHCPV6_STATELESS'
118 self.ipv6_ra_mode = 'DHCPV6_STATELESS'
119 self.cidr = '192.168.1.1/24'
120 self.enable_dhcp = True
121 self.dns_nameservers = 'aaa'
122 self.gateway_ip = '192.168.2.1'
123 self.ip_version = '4'
124 self.shared = False
125 self.name = 'demo-subnet'
126
Jon Hall8638b562017-05-24 16:39:59 -0700127 def DictoJson( self ):
128 if self.id == '' or self.tenant_id == '':
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800129 print 'Id and tenant id is necessary!'
130
131 Dicdata = {}
132 host_routesdata = []
Jon Hall8638b562017-05-24 16:39:59 -0700133 host_routesdata.append( { 'nexthop': self.nexthop, 'destination': self.destination } )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800134 allocation_pools = []
Jon Hall8638b562017-05-24 16:39:59 -0700135 allocation_pools.append( { 'start': self.start, 'end': self.end } )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800136
137 if self.id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700138 Dicdata[ 'id' ] = self.id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800139 if self.network_id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700140 Dicdata[ 'network_id' ] = self.network_id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800141 if self.name != '':
Jon Hall8638b562017-05-24 16:39:59 -0700142 Dicdata[ 'name' ] = self.name
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800143 if self.nexthop != '':
Jon Hall8638b562017-05-24 16:39:59 -0700144 Dicdata[ 'host_routes' ] = host_routesdata
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800145 if self.tenant_id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700146 Dicdata[ 'tenant_id' ] = self.tenant_id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800147 if self.start != '':
Jon Hall8638b562017-05-24 16:39:59 -0700148 Dicdata[ 'allocation_pools' ] = allocation_pools
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800149 if self.shared != '':
Jon Hall8638b562017-05-24 16:39:59 -0700150 Dicdata[ 'shared' ] = self.shared
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800151 if self.ipv6_address_mode != '':
Jon Hall8638b562017-05-24 16:39:59 -0700152 Dicdata[ 'ipv6_address_mode' ] = self.ipv6_address_mode
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800153 if self.ipv6_ra_mode != '':
Jon Hall8638b562017-05-24 16:39:59 -0700154 Dicdata[ 'ipv6_ra_mode' ] = self.ipv6_ra_mode
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800155 if self.cidr != '':
Jon Hall8638b562017-05-24 16:39:59 -0700156 Dicdata[ 'cidr' ] = self.cidr
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800157 if self.enable_dhcp != '':
Jon Hall8638b562017-05-24 16:39:59 -0700158 Dicdata[ 'enable_dhcp' ] = self.enable_dhcp
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800159 if self.dns_nameservers != '':
Jon Hall8638b562017-05-24 16:39:59 -0700160 Dicdata[ 'dns_nameservers' ] = self.dns_nameservers
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800161 if self.gateway_ip != '':
Jon Hall8638b562017-05-24 16:39:59 -0700162 Dicdata[ 'gateway_ip' ] = self.gateway_ip
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800163 if self.ip_version != '':
Jon Hall8638b562017-05-24 16:39:59 -0700164 Dicdata[ 'ip_version' ] = self.ip_version
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800165
Jon Hall8638b562017-05-24 16:39:59 -0700166 Dicdata = { 'subnet': Dicdata }
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800167
Jon Hall8638b562017-05-24 16:39:59 -0700168 return json.dumps( Dicdata, indent=4 )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800169
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800170
Jon Hall8638b562017-05-24 16:39:59 -0700171class VirtualPortData( NetworkData ):
172
173 def __init__( self ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800174 self.id = ''
175 self.state = 'ACTIVE'
176 self.bindingHostId = 'fa:16:3e:76:8e:88'
Jon Hall8638b562017-05-24 16:39:59 -0700177 self.allowedAddressPairs = [ { 'mac_address': 'fa:16:3e:76:8e:88', 'ip_address': '192.168.1.1' } ]
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800178 self.deviceOwner = 'none'
179 self.fixedIp = []
Jon Hall8638b562017-05-24 16:39:59 -0700180 self.securityGroups = [ { 'securityGroup': 'asd' } ]
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800181 self.adminStateUp = True
182 self.network_id = ''
183 self.tenant_id = ''
184 self.subnet_id = ''
185 self.bindingvifDetails = 'port_filter'
186 self.bindingvnicType = 'normal'
187 self.bindingvifType = 'ovs'
188 self.macAddress = 'fa:16:3e:76:8e:88'
189 self.deviceId = 'a08aa'
190 self.name = 'u'
191
Jon Hall8638b562017-05-24 16:39:59 -0700192 def DictoJson( self ):
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800193 if self.id == '' or self.tenant_id == ' ' or \
194 self.network_id == '' or self.subnet_id == '':
195 print 'Id/tenant id/networkid/subnetId is necessary!'
196
197 Dicdata = {}
Jon Hall8638b562017-05-24 16:39:59 -0700198 fixedIp = []
199 fixedIp.append( { 'subnet_id': self.subnet_id, 'ip_address': '192.168.1.4' } )
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800200 allocation_pools = []
201
202 if self.id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700203 Dicdata[ 'id' ] = self.id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800204 if self.state != '':
Jon Hall8638b562017-05-24 16:39:59 -0700205 Dicdata[ 'status' ] = self.state
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800206 if self.bindingHostId != '':
Jon Hall8638b562017-05-24 16:39:59 -0700207 Dicdata[ 'binding:host_id' ] = self.bindingHostId
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800208 if self.allowedAddressPairs != '':
Jon Hall8638b562017-05-24 16:39:59 -0700209 Dicdata[ 'allowed_address_pairs' ] = self.allowedAddressPairs
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800210 if self.deviceOwner != '':
Jon Hall8638b562017-05-24 16:39:59 -0700211 Dicdata[ 'device_owner' ] = self.deviceOwner
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800212 if self.securityGroups != '':
Jon Hall8638b562017-05-24 16:39:59 -0700213 Dicdata[ 'security_groups' ] = self.securityGroups
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800214 if self.adminStateUp != '':
Jon Hall8638b562017-05-24 16:39:59 -0700215 Dicdata[ 'admin_state_up' ] = self.adminStateUp
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800216 if self.network_id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700217 Dicdata[ 'network_id' ] = self.network_id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800218 if self.tenant_id != '':
Jon Hall8638b562017-05-24 16:39:59 -0700219 Dicdata[ 'tenant_id' ] = self.tenant_id
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800220 if self.bindingvifDetails != '':
Jon Hall8638b562017-05-24 16:39:59 -0700221 Dicdata[ 'binding:vif_details' ] = self.bindingvifDetails
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800222 if self.bindingvnicType != '':
Jon Hall8638b562017-05-24 16:39:59 -0700223 Dicdata[ 'binding:vnic_type' ] = self.bindingvnicType
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800224 if self.bindingvifType != '':
Jon Hall8638b562017-05-24 16:39:59 -0700225 Dicdata[ 'binding:vif_type' ] = self.bindingvifType
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800226 if self.macAddress != '':
Jon Hall8638b562017-05-24 16:39:59 -0700227 Dicdata[ 'mac_address' ] = self.macAddress
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800228 if self.deviceId != '':
Jon Hall8638b562017-05-24 16:39:59 -0700229 Dicdata[ 'device_id' ] = self.deviceId
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800230 if self.name != '':
Jon Hall8638b562017-05-24 16:39:59 -0700231 Dicdata[ 'name' ] = self.name
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800232
Jon Hall8638b562017-05-24 16:39:59 -0700233 Dicdata[ 'fixed_ips' ] = fixedIp
234 Dicdata = { 'port': Dicdata }
zhanghaoyu7474d8c62015-08-26 14:53:28 +0800235
Jon Hall8638b562017-05-24 16:39:59 -0700236 return json.dumps( Dicdata, indent=4 )