CLOUDSTACK-2237: Automation - Adding new test cases for security group in advanced zone feature

This commit is contained in:
Ashutosh K 2013-12-27 15:55:41 +05:30 committed by Girish Shilamkar
parent cdf2a1161b
commit 4d9b95e13d
5 changed files with 1997 additions and 639 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,159 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# Use the common configs added such as account, network_offerings, domain, project,
# or add your own data if required separately for any test case
{
"domain":
{
"name": "domain"
}
,
"project":
{
"name": "Project",
"displaytext": "Test project"
},
"account": {
"email": "test-account@test.com",
"firstname": "test",
"lastname": "test",
"username": "test-account",
"password": "password"
},
"service_offering": {
"name": "Tiny Instance",
"displaytext": "Tiny Instance",
"cpunumber": 1,
"cpuspeed": 100,
"memory": 128
},
"isolated_network_offering": {
"name": "Network offering-DA services",
"displaytext": "Network offering-DA services",
"guestiptype": "Isolated",
"supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Firewall,Lb,UserData,StaticNat",
"traffictype": "GUEST",
"availability": "Optional'",
"serviceProviderList": {
"Dhcp": "VirtualRouter",
"Dns": "VirtualRouter",
"SourceNat": "VirtualRouter",
"PortForwarding": "VirtualRouter",
"Vpn": "VirtualRouter",
"Firewall": "VirtualRouter",
"Lb": "VirtualRouter",
"UserData": "VirtualRouter",
"StaticNat": "VirtualRouter"
}
},
"isolated_network": {
"name": "Isolated Network",
"displaytext": "Isolated Network"
},
"virtual_machine": {
"displayname": "Test VM",
"username": "root",
"password": "password",
"ssh_port": 22,
"privateport": 22,
"publicport": 22,
"protocol": "TCP"
},
"shared_network": {
"name": "MySharedNetwork - Test",
"displaytext": "MySharedNetwork",
"vlan" : "",
"gateway" :"",
"netmask" :"",
"startip" :"",
"endip" :"",
"acltype" : "Domain",
"scope":"all"
},
"shared_network_offering_sg": {
"name": "MySharedOffering-sg",
"displaytext": "MySharedOffering-sg",
"guestiptype": "Shared",
"supportedservices": "Dhcp,Dns,UserData,SecurityGroup",
"specifyVlan" : "False",
"specifyIpRanges" : "False",
"traffictype": "GUEST",
"serviceProviderList" : {
"Dhcp": "VirtualRouter",
"Dns": "VirtualRouter",
"UserData": "VirtualRouter",
"SecurityGroup": "SecurityGroupProvider"
}
},
"shared_network_sg": {
"name": "Shared-Network-SG-Test",
"displaytext": "Shared-Network_SG-Test",
"networkofferingid":"1",
"vlan" : "",
"gateway" :"",
"netmask" :"255.255.255.0",
"startip" :"",
"endip" :"",
"acltype" : "Domain",
"scope":"all"
},
"vpc_offering": {
"name": "VPC off",
"displaytext": "VPC off",
"supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Lb,UserData,StaticNat,NetworkACL"
},
"vpc": {
"name": "TestVPC",
"displaytext": "TestVPC",
"cidr": "10.0.0.1/24"
},
"shared_network_offering": {
"name": "MySharedOffering",
"displaytext": "MySharedOffering",
"guestiptype": "Shared",
"supportedservices": "Dhcp,Dns,UserData",
"specifyVlan" : "False",
"specifyIpRanges" : "False",
"traffictype": "GUEST",
"serviceProviderList" : {
"Dhcp": "VirtualRouter",
"Dns": "VirtualRouter",
"UserData": "VirtualRouter"
}
},
"security_group" : { "name": "custom_Sec_Grp" },
"ingress_rule": {
"protocol": "TCP",
"startport": "22",
"endport": "22",
"cidrlist": "0.0.0.0/0"
},
"ostype": "CentOS 5.3 (64-bit)",
"sleep": 90,
"timeout": 10,
"advanced_sg": {
"zone": {
"name": "",
"dns1": "8.8.8.8",
"internaldns1": "192.168.100.1",
"networktype": "Advanced",
"securitygroupenabled": "true"
},
"securitygroupenabled": "true"
}
}

View File

@ -330,7 +330,10 @@ class ConfigManager(object):
'''
def __init__(self):
self.filePath = "config/config.cfg"
# Joining path with current directory will avoid relative path issue
# It will take correct path irrespective of from where the test case is run
dirPath = os.path.dirname(__file__)
self.filePath = os.path.join(dirPath, 'config/config.cfg')
self.parsedDict = None
if self.__verifyFile(self.filePath) is not False:
self.parsedDict = self.__parseConfig(self.filePath)

View File

@ -2262,6 +2262,8 @@ class Zone:
cmd.internaldns2 = services["internaldns2"]
if domainid:
cmd.domainid = domainid
if "securitygroupenabled" in services:
cmd.securitygroupenabled = services["securitygroupenabled"]
return Zone(apiclient.createZone(cmd).__dict__)

View File

@ -799,35 +799,45 @@ def get_free_vlan(apiclient, zoneid):
assert len(list_physical_networks_response) > 0, "No physical networks found in zone %s" % zoneid
physical_network = list_physical_networks_response[0]
vlans = xsplit(physical_network.vlan, ['-', ','])
assert len(vlans) > 0
assert int(vlans[0]) < int(vlans[-1]), "VLAN range %s was improperly split" % physical_network.vlan
usedVlanIds = []
networks = list_networks(apiclient, zoneid= zoneid, type='Shared')
usedVlanIds = []
if isinstance(networks, list) and len(networks) > 0:
usedVlanIds = [int(nw.vlan) for nw in networks]
usedVlanIds = [int(nw.vlan) for nw in networks if nw.vlan!="untagged"]
retriesCount = 20 #Assuming random function will give different integer each time
if hasattr(physical_network, "vlan") is False:
while True:
shared_ntwk_vlan = random.randrange(1,4095)
if shared_ntwk_vlan in usedVlanIds:
continue
else:
break
else:
vlans = xsplit(physical_network.vlan, ['-', ','])
shared_ntwk_vlan = None
assert len(vlans) > 0
assert int(vlans[0]) < int(vlans[-1]), "VLAN range %s was improperly split" % physical_network.vlan
while True:
retriesCount = 20 #Assuming random function will give different integer each time
if retriesCount == 0:
break
shared_ntwk_vlan = None
free_vlan = int(vlans[-1]) + random.randrange(1, 20)
while True:
if free_vlan > 4095:
free_vlan = int(vlans[0]) - random.randrange(1, 20)
if free_vlan < 0 or (free_vlan in usedVlanIds):
retriesCount -= 1
continue
else:
shared_ntwk_vlan = free_vlan
break
if retriesCount == 0:
break
free_vlan = int(vlans[-1]) + random.randrange(1, 20)
if free_vlan > 4095:
free_vlan = int(vlans[0]) - random.randrange(1, 20)
if free_vlan < 0 or (free_vlan in usedVlanIds):
retriesCount -= 1
continue
else:
shared_ntwk_vlan = free_vlan
break
return physical_network, shared_ntwk_vlan