mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
4309 lines
223 KiB
Python
4309 lines
223 KiB
Python
# 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.
|
|
|
|
# Import Local Modules
|
|
from marvin.cloudstackTestCase import cloudstackTestCase, unittest
|
|
from marvin.lib.base import (PublicIPAddress,
|
|
NetworkOffering,
|
|
Autoscale,
|
|
Network,
|
|
NetworkServiceProvider,
|
|
Template,
|
|
VirtualMachine,
|
|
VPC,
|
|
VpcOffering,
|
|
StaticNATRule,
|
|
FireWallRule,
|
|
NATRule,
|
|
Vpn,
|
|
VpnUser,
|
|
LoadBalancerRule,
|
|
Account,
|
|
ServiceOffering,
|
|
PhysicalNetwork,
|
|
User)
|
|
from marvin.lib.common import (get_domain,
|
|
get_zone,
|
|
get_template)
|
|
from marvin.lib.utils import validateList, cleanup_resources
|
|
from marvin.codes import PASS
|
|
from nose.plugins.attrib import attr
|
|
|
|
class TestIpAddresses(cloudstackTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
try:
|
|
cls._cleanup = []
|
|
cls.testClient = super(TestIpAddresses, cls).getClsTestClient()
|
|
cls.api_client = cls.testClient.getApiClient()
|
|
cls.services = cls.testClient.getParsedTestDataConfig()
|
|
cls.hypervisor = cls.testClient.getHypervisorInfo()
|
|
# Get Domain, Zone, Template
|
|
cls.domain = get_domain(cls.api_client)
|
|
cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
|
|
cls.template = get_template(
|
|
cls.api_client,
|
|
cls.zone.id,
|
|
cls.services["ostype"]
|
|
)
|
|
if cls.zone.localstorageenabled:
|
|
cls.storagetype = 'local'
|
|
cls.services["service_offerings"]["tiny"]["storagetype"] = 'local'
|
|
else:
|
|
cls.storagetype = 'shared'
|
|
cls.services["service_offerings"]["tiny"]["storagetype"] = 'shared'
|
|
|
|
cls.services['mode'] = cls.zone.networktype
|
|
cls.services["virtual_machine"]["hypervisor"] = cls.testClient.getHypervisorInfo()
|
|
cls.services["virtual_machine"]["zoneid"] = cls.zone.id
|
|
cls.services["virtual_machine"]["template"] = cls.template.id
|
|
cls.service_offering = ServiceOffering.create(
|
|
cls.api_client,
|
|
cls.services["service_offerings"]["tiny"]
|
|
)
|
|
cls._cleanup.append(cls.service_offering)
|
|
cls.services['mode'] = cls.zone.networktype
|
|
|
|
except Exception as e:
|
|
cls.tearDownClass()
|
|
raise Exception("Warning: Exception in setup : %s" % e)
|
|
return
|
|
|
|
def setUp(self):
|
|
|
|
self.apiClient = self.testClient.getApiClient()
|
|
self.cleanup = []
|
|
self.account = Account.create(
|
|
self.apiClient,
|
|
self.services["account"],
|
|
domainid=self.domain.id
|
|
)
|
|
# Getting authentication for user in newly created Account
|
|
self.user = self.account.user[0]
|
|
self.userapiclient = self.testClient.getUserApiClient(self.user.username, self.domain.name)
|
|
# self.cleanup.append(self.account)
|
|
|
|
def tearDown(self):
|
|
# Clean up, terminate the created volumes
|
|
cleanup_resources(self.apiClient, self.cleanup)
|
|
return
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
try:
|
|
cleanup_resources(cls.api_client, cls._cleanup)
|
|
except Exception as e:
|
|
raise Exception("Warning: Exception during cleanup : %s" % e)
|
|
|
|
def __verify_values(self, expected_vals, actual_vals):
|
|
"""
|
|
@summary: Function to verify expected and actual values
|
|
Step1: Initializing return flag to True
|
|
Step1: Verifying length of expected and actual dictionaries is matching.
|
|
If not matching returning false
|
|
Step2: Listing all the keys from expected dictionary
|
|
Step3: Looping through each key from step2 and verifying expected and actual dictionaries have same value
|
|
If not making return flag to False
|
|
Step4: returning the return flag after all the values are verified
|
|
"""
|
|
return_flag = True
|
|
|
|
if len(expected_vals) != len(actual_vals):
|
|
return False
|
|
|
|
keys = expected_vals.keys()
|
|
for i in range(0, len(expected_vals)):
|
|
exp_val = expected_vals[keys[i]]
|
|
act_val = actual_vals[keys[i]]
|
|
if exp_val == act_val:
|
|
return_flag = return_flag and True
|
|
else:
|
|
return_flag = return_flag and False
|
|
self.debug("expected Value: %s, is not matching with actual value: %s" % (
|
|
exp_val,
|
|
act_val
|
|
))
|
|
return return_flag
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_01_list_ipaddresses_pagination(self):
|
|
"""
|
|
@summary: Test List IP Addresses pagination
|
|
@Steps:
|
|
Step1: Creating a network for the user
|
|
Step2: Listing all the IP Addresses for a user
|
|
Step3: Verifying that no IP Addresses are listed
|
|
Step4: Associating (pagesize + 1) number of IP Addresses
|
|
Step5: Listing all the IP Addresses again
|
|
Step6: Verifying the length of the IP Addresses is (page size + 1)
|
|
Step7: Listing all the IP Addresses in page1
|
|
Step8: Verifying that the length of the IP Addresses in page 1 is (page size)
|
|
Step9: Listing all the IP Addresses in page2
|
|
Step10: Verifying that the length of the IP Addresses in page 2 is 1
|
|
Step11: Dis-Associating the IP Addresses present in page 2
|
|
Step12: Listing for the IP Addresses on page 2
|
|
Step13: Verifying that no IP Addresses are listed
|
|
"""
|
|
# Listing all the networks available
|
|
networks_list_before = Network.list(
|
|
self.userapiclient,
|
|
forvpc="false",
|
|
domainid=self.domain.id,
|
|
account=self.account.name,
|
|
type="Isolated"
|
|
)
|
|
self.assertIsNone(
|
|
networks_list_before,
|
|
"Networks listed for newly created user"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the networks available
|
|
networks_list_after = Network.list(
|
|
self.userapiclient,
|
|
forvpc="false",
|
|
domainid=self.domain.id,
|
|
account=self.account.name,
|
|
type="Isolated"
|
|
)
|
|
status = validateList(networks_list_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Network Creation Failed"
|
|
)
|
|
self.assertEquals(
|
|
1,
|
|
len(networks_list_after),
|
|
"Network creation failed"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created user"
|
|
)
|
|
# Associating (pagesize + 1) number of IP Addresses
|
|
for i in range(0, (self.services["pagesize"] + 1)):
|
|
ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the volumes is (page size + 1)
|
|
self.assertEqual(
|
|
(self.services["pagesize"] + 1),
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing IP Address in page 1
|
|
list_ipaddress_page1 = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
page=1,
|
|
pagesize=self.services["pagesize"]
|
|
)
|
|
status = validateList(list_ipaddress_page1)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list IP Addresses in page1"
|
|
)
|
|
# Verifying that list size is equals to pagesize
|
|
self.assertEquals(
|
|
self.services["pagesize"],
|
|
len(list_ipaddress_page1),
|
|
"Failed to list pagesize number of IP Addresses in page1"
|
|
)
|
|
# Listing IP Address in page 2
|
|
list_ipaddress_page2 = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
page=2,
|
|
pagesize=self.services["pagesize"]
|
|
)
|
|
status = validateList(list_ipaddress_page2)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list IP Addresses in page2"
|
|
)
|
|
# Verifying that List size is equal to 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddress_page2),
|
|
"Failed to list IP Addresses in page2"
|
|
)
|
|
# Dis-associating an IP Address
|
|
ipaddress.delete(self.userapiclient)
|
|
# Listing IP Address in page 2
|
|
list_ipaddress_page2 = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
page=2,
|
|
pagesize=self.services["pagesize"]
|
|
)
|
|
# Verifying that no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddress_page2,
|
|
"Disassociation of IP Address Failed"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_02_list_ipaddresses_byid(self):
|
|
"""
|
|
@summary: Test List IP Addresses details by ID
|
|
@Steps:
|
|
Step1: Creating a network for the user
|
|
Step2: Listing all the IP Addresses for a user
|
|
Step3: Verifying that no IP Addresses are listed
|
|
Step4: Associating an IP Addresses for Network
|
|
Step5: Listing all the IP Addresses again
|
|
Step6: Verifying the length of the IP Addresses is 1
|
|
Step7: Listing the IP Addresses by Id
|
|
Step8: Verifying that the length of the IP Addresses list is 1
|
|
Step9: Verifying the details of the Listed IP Address
|
|
"""
|
|
# Listing all the networks available
|
|
networks_list_before = Network.list(
|
|
self.userapiclient,
|
|
forvpc="false",
|
|
domainid=self.domain.id,
|
|
account=self.account.name,
|
|
type="Isolated"
|
|
)
|
|
self.assertIsNone(
|
|
networks_list_before,
|
|
"Networks listed for newly created user"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the networks available
|
|
networks_list_after = Network.list(
|
|
self.userapiclient,
|
|
forvpc="false",
|
|
domainid=self.domain.id,
|
|
account=self.account.name,
|
|
type="Isolated"
|
|
)
|
|
status = validateList(networks_list_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Network Creation Failed"
|
|
)
|
|
self.assertEquals(
|
|
1,
|
|
len(networks_list_after),
|
|
"Network creation failed"
|
|
)
|
|
# Listing the Network By ID
|
|
network_list_byid = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
id=network.id
|
|
)
|
|
status = validateList(network_list_byid)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Network by Id"
|
|
)
|
|
self.assertEquals(
|
|
1,
|
|
len(network_list_byid),
|
|
"Failed to list Network by Id"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created user"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network_list_byid[0].id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing IP Address by id
|
|
list_ipaddress_byid = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_ipaddress_byid)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list IP Addresses by ID"
|
|
)
|
|
# Verifying that list size is equals to 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddress_byid),
|
|
"Failed to list IP Addresses by ID"
|
|
)
|
|
# Verifying details of the listed IP Address to be same as IP Address created above
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"id":associated_ipaddress.ipaddress.id,
|
|
"associatednetworkid":associated_ipaddress.ipaddress.associatednetworkid,
|
|
"associatednetworkname":associated_ipaddress.ipaddress.associatednetworkname,
|
|
"ipaddress":associated_ipaddress.ipaddress.ipaddress,
|
|
"issourcenat":associated_ipaddress.ipaddress.issourcenat,
|
|
"isstaticnat":associated_ipaddress.ipaddress.isstaticnat,
|
|
"networkid":associated_ipaddress.ipaddress.networkid
|
|
}
|
|
actual_dict = {
|
|
"id":list_ipaddress_byid[0].id,
|
|
"associatednetworkid":list_ipaddress_byid[0].associatednetworkid,
|
|
"associatednetworkname":list_ipaddress_byid[0].associatednetworkname,
|
|
"ipaddress":list_ipaddress_byid[0].ipaddress,
|
|
"issourcenat":list_ipaddress_byid[0].issourcenat,
|
|
"isstaticnat":list_ipaddress_byid[0].isstaticnat,
|
|
"networkid":list_ipaddress_byid[0].networkid
|
|
}
|
|
ipaddress_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
ipaddress_status,
|
|
"Listed IP Address details are not as expected"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_03_associate_ipaddress_for_vpc(self):
|
|
"""
|
|
@summary: Test to Associate IP Address for VPC
|
|
@Steps:
|
|
Step1: Creating a VPC for the user
|
|
Step2: Listing all the IP Addresses for a user
|
|
Step3: Verifying that 1 IP Addresses is listed
|
|
Step4: Associating an IP Addresses for VPC
|
|
Step5: Listing all the IP Addresses again
|
|
Step6: Verifying the length of the IP Addresses list is 2
|
|
Step7: Listing the IP Addresses by Id
|
|
Step8: Verifying that the length of the IP Addresses list is 1
|
|
Step9: Verifying the details of the Listed IP Address
|
|
"""
|
|
# Listing all the vpc's for a user
|
|
list_vpc_before = VPC.list(self.userapiclient)
|
|
# Verifying No VPCs are listed
|
|
self.assertIsNone(
|
|
list_vpc_before,
|
|
"VPC's Listed for newly Created User"
|
|
)
|
|
# Listing VPC Offerings
|
|
list_vpc_offering = VpcOffering.list(self.userapiclient)
|
|
status = validateList(list_vpc_offering)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list vpc offering is none")
|
|
# Creating a vpc
|
|
vpc_created = VPC.create(
|
|
self.userapiclient,
|
|
self.services["vpc"],
|
|
list_vpc_offering[0].id,
|
|
self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vpc_created,
|
|
"VPC Creation Failed"
|
|
)
|
|
self.cleanup.append(vpc_created)
|
|
# Listing the vpc for a user after creating a vpc
|
|
list_vpc_after = VPC.list(self.userapiclient)
|
|
status = validateList(list_vpc_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list VPC not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_vpc_after),
|
|
"list VPC not equal as expected"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List VPC IP Address"
|
|
)
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"Failed to List VPC IP Address"
|
|
)
|
|
# Associating an IP Addresses to VPC created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
vpcid=vpc_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
len(list_ipaddresses_before) + 1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing IP Address by id
|
|
list_ipaddress_byid = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
page=1,
|
|
pagesize=self.services["pagesize"],
|
|
id=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_ipaddress_byid)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list IP Addresses by ID"
|
|
)
|
|
# Verifying that list size is equals to 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddress_byid),
|
|
"Failed to list IP Addresses by ID"
|
|
)
|
|
# Verifying details of the listed IP Address to be same as IP Address created above
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"id":associated_ipaddress.ipaddress.id,
|
|
"associatednetworkid":associated_ipaddress.ipaddress.associatednetworkid,
|
|
"associatednetworkname":associated_ipaddress.ipaddress.associatednetworkname,
|
|
"ipaddress":associated_ipaddress.ipaddress.ipaddress,
|
|
"issourcenat":associated_ipaddress.ipaddress.issourcenat,
|
|
"isstaticnat":associated_ipaddress.ipaddress.isstaticnat,
|
|
"networkid":associated_ipaddress.ipaddress.networkid,
|
|
"vpcid":associated_ipaddress.ipaddress.vpcid
|
|
}
|
|
actual_dict = {
|
|
"id":list_ipaddress_byid[0].id,
|
|
"associatednetworkid":list_ipaddress_byid[0].associatednetworkid,
|
|
"associatednetworkname":list_ipaddress_byid[0].associatednetworkname,
|
|
"ipaddress":list_ipaddress_byid[0].ipaddress,
|
|
"issourcenat":list_ipaddress_byid[0].issourcenat,
|
|
"isstaticnat":list_ipaddress_byid[0].isstaticnat,
|
|
"networkid":list_ipaddress_byid[0].networkid,
|
|
"vpcid":list_ipaddress_byid[0].vpcid
|
|
}
|
|
ipaddress_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
ipaddress_status,
|
|
"Listed IP Address details are not as expected"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_04_create_delete_lbrule_fornonvpc(self):
|
|
"""
|
|
@summary: Test to list, create and delete Load Balancer Rule for IP Address associated to Non VPC network
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step4: Verifying that no Load Balancer Rules are listed
|
|
Step5: Creating a Load Balancer Rule for IP Address associated in Step2
|
|
Step6: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step7: Verifying 1 Load Balancer Rule is listed
|
|
Step8: Deleting the Load Balancer Rule created in Step5
|
|
Step9: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step10: Verifying that no Load Balancer Rules are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Lb enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_before = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are listed
|
|
self.assertIsNone(
|
|
list_lbrules_before,
|
|
"Load Balancer Rules listed for newly Acquired Ip Address"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = 'false'
|
|
# Creating a Load Balancer Rule for Ip Address
|
|
lb_rule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
lb_rule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Verifying details of created Load Balancer Rule
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"algorithm":self.services["lbrule"]["alg"],
|
|
"privateport":str(self.services["lbrule"]["privateport"]),
|
|
"publicport":str(self.services["lbrule"]["publicport"]),
|
|
"name":self.services["lbrule"]["name"],
|
|
}
|
|
actual_dict = {
|
|
"algorithm":str(lb_rule.algorithm),
|
|
"privateport":str(lb_rule.privateport),
|
|
"publicport":str(lb_rule.publicport),
|
|
"name":str(lb_rule.name),
|
|
}
|
|
lbrule_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
lbrule_status,
|
|
"Created Load Balancer Rule details are not as expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_lbrules_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbrules_after),
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Deleting Load Balancer Rule
|
|
lb_rule.delete(self.userapiclient)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are Listed
|
|
self.assertIsNone(
|
|
list_lbrules_after,
|
|
"Failed to delete Load Balancer Rule"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_05_create_delete_lbrule_forvpc(self):
|
|
"""
|
|
@summary: Test to list, create and delete Load Balancer Rule for IP Address associated to VPC
|
|
@Steps:
|
|
Step1: Creating a VPC for the user
|
|
Step2: Creating Network inside VPC
|
|
Step3: Associating an IP Addresses for VPC
|
|
Step4: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step5: Verifying that no Load Balancer Rules are listed
|
|
Step6: Creating a Load Balancer Rule for IP Address associated in Step2
|
|
Step7: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step8: Verifying 1 Load Balancer Rule is listed
|
|
Step9: Deleting the Load Balancer Rule created in Step5
|
|
Step10: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step11: Verifying that no Load Balancer Rules are listed
|
|
"""
|
|
# Listing all the vpc's for a user
|
|
list_vpc_before = VPC.list(self.userapiclient)
|
|
# Verifying No VPCs are listed
|
|
self.assertIsNone(
|
|
list_vpc_before,
|
|
"VPC's Listed for newly Created User"
|
|
)
|
|
# Listing VPC Offerings
|
|
list_vpc_offering = VpcOffering.list(self.userapiclient)
|
|
status = validateList(list_vpc_offering)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list vpc offering is none")
|
|
# Creating a vpc
|
|
vpc_created = VPC.create(
|
|
self.userapiclient,
|
|
self.services["vpc"],
|
|
list_vpc_offering[0].id,
|
|
self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vpc_created,
|
|
"VPC Creation Failed"
|
|
)
|
|
# Listing the vpc for a user after creating a vpc
|
|
list_vpc_after = VPC.list(self.userapiclient)
|
|
status = validateList(list_vpc_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list VPC not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_vpc_after),
|
|
"list VPC not equal as expected"
|
|
)
|
|
# List network offering for vpc = true
|
|
network_offering_vpc_true_list = NetworkOffering.list(
|
|
self.userapiclient,
|
|
forvpc="true",
|
|
zoneid=self.zone.id,
|
|
supportedServices="Lb",
|
|
state="Enabled"
|
|
)
|
|
status = validateList(network_offering_vpc_true_list)
|
|
self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with Lb")
|
|
# Creating network under VPC
|
|
network_created = Network.create(
|
|
self.userapiclient,
|
|
self.services["ntwk"],
|
|
networkofferingid=network_offering_vpc_true_list[0].id,
|
|
vpcid=vpc_created.id,
|
|
zoneid=self.zone.id,
|
|
gateway=self.services["ntwk"]["gateway"],
|
|
netmask=self.services["ntwk"]["netmask"]
|
|
)
|
|
self.cleanup.append(network_created)
|
|
self.assertIsNotNone(
|
|
network_created,
|
|
"Network is not created"
|
|
)
|
|
self.cleanup.append(vpc_created)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list IP Addresses not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"list IP Addresses not equal as expected"
|
|
)
|
|
# Associating an IP Addresses to VPC created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
vpcid=vpc_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
len(list_ipaddresses_before) + 1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_before = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are listed
|
|
self.assertIsNone(
|
|
list_lbrules_before,
|
|
"Load Balancer Rules listed for newly Acquired Ip Address"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = 'false'
|
|
# Creating a Load Balancer Rule for Ip Address
|
|
lb_rule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
networkid=network_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
lb_rule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Verifying details of created Load Balancer Rule
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"algorithm":self.services["lbrule"]["alg"],
|
|
"privateport":str(self.services["lbrule"]["privateport"]),
|
|
"publicport":str(self.services["lbrule"]["publicport"]),
|
|
"name":self.services["lbrule"]["name"],
|
|
}
|
|
actual_dict = {
|
|
"algorithm":str(lb_rule.algorithm),
|
|
"privateport":str(lb_rule.privateport),
|
|
"publicport":str(lb_rule.publicport),
|
|
"name":str(lb_rule.name),
|
|
}
|
|
lbrule_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
lbrule_status,
|
|
"Created Load Balancer Rule details are not as expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
status = validateList(list_lbrules_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbrules_after),
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Deleting Load Balancer Rule
|
|
lb_rule.delete(self.userapiclient)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are Listed
|
|
self.assertIsNone(
|
|
list_lbrules_after,
|
|
"Failed to delete Load Balancer Rule"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_06_update_lbrule_name(self):
|
|
"""
|
|
@summary: Test to Update Load Balancer Rule Name for IP Address associated to Non VPC network
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step4: Verifying that no Load Balancer Rules are listed
|
|
Step5: Creating a Load Balancer Rule for IP Address associated in Step2
|
|
Step6: Listing Load Balancer Rules for the IP Address associated in Step2
|
|
Step7: Verifying 1 Load Balancer Rule is listed
|
|
Step8: Updating the Load Balancer Rule created in Step5
|
|
Step9: Verifying that Load Balancer Rule details are updated
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Lb enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing Networks again
|
|
list_networks_after = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
status = validateList(list_networks_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Network Creation Failed"
|
|
)
|
|
# Verifying network list count is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_networks_after),
|
|
"Network Creation Failed"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_before = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are listed
|
|
self.assertIsNone(
|
|
list_lbrules_before,
|
|
"Load Balancer Rules listed for newly Acquired Ip Address"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = 'false'
|
|
# Creating a Load Balancer Rule for Ip Address
|
|
lb_rule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
lb_rule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_lbrules_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbrules_after),
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Updating Load Balancer Rule Name
|
|
updated_lb_rule = LoadBalancerRule.update(
|
|
lb_rule,
|
|
self.userapiclient,
|
|
algorithm="source",
|
|
name="NewLBRuleName"
|
|
)
|
|
self.assertIsNotNone(
|
|
updated_lb_rule,
|
|
"Failed to update Load Balancer Rule details"
|
|
)
|
|
# Verifying details of the updated Load Balancer Rule
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"id":lb_rule.id,
|
|
"account":lb_rule.account,
|
|
"algorithm":"source",
|
|
"domainid":lb_rule.domainid,
|
|
"name":"NewLBRuleName",
|
|
"networkid":lb_rule.networkid,
|
|
"zoneid":lb_rule.zoneid,
|
|
"privateport":lb_rule.privateport,
|
|
"publicip":lb_rule.publicip,
|
|
"publicport":lb_rule.publicport,
|
|
}
|
|
actual_dict = {
|
|
"id":updated_lb_rule.id,
|
|
"account":updated_lb_rule.account,
|
|
"algorithm":updated_lb_rule.algorithm,
|
|
"domainid":updated_lb_rule.domainid,
|
|
"name":updated_lb_rule.name,
|
|
"networkid":updated_lb_rule.networkid,
|
|
"zoneid":updated_lb_rule.zoneid,
|
|
"privateport":updated_lb_rule.privateport,
|
|
"publicip":updated_lb_rule.publicip,
|
|
"publicport":updated_lb_rule.publicport,
|
|
}
|
|
lbrule_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
lbrule_status,
|
|
"Updated Load Balancer Rule details are not as expected"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_07_assign_remove_lbrule_toinstance(self):
|
|
"""
|
|
@summary: Test to Assign and Remove Load Balancer Rule to an Instance
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Launching a VM using the network created in Step 1
|
|
Step4: Creating a Load Balancer Rule for IP Address associated in Step2
|
|
Step5: Listing Load Balancer Rule Instances for applied as true
|
|
Step6: Verifying no Load balancer rule instances are listed
|
|
Step7: Listing Load Balancer Rule Instances for applied as false
|
|
Step8: Verifying that list size is 1
|
|
Step9: Assigning the Instance to Load Balancer Rule
|
|
Step10: Listing Load Balancer Rule Instances for applied as true
|
|
Step11: Verifying list size is 1
|
|
Step12: Listing Load Balancer Rule Instances for applied as false
|
|
Step13: Verifying no Load balancer rule instances are listed
|
|
Step14: Removing the Load Balancer Rule assigned form Instance
|
|
Step15: Listing Load Balancer Rule Instances for applied as true
|
|
Step16: Verifying no Load balancer rule instances are listed
|
|
Step17: Listing Load Balancer Rule Instances for applied as false
|
|
Step18: Verifying that list size is 1
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Lb enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine with above created Network
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing Virtual Machines in Running state in the network created above
|
|
list_vms_running = VirtualMachine.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id,
|
|
state="Running",
|
|
networkid=network.id
|
|
)
|
|
status = validateList(list_vms_running)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"VM Created is not in Running state"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_vms_running),
|
|
"VM Created is not in Running state"
|
|
)
|
|
self.assertEquals(
|
|
vm_created.id,
|
|
list_vms_running[0].id,
|
|
"VM Created is not in Running state"
|
|
)
|
|
# Listing Virtual Machines in Stopped state in the network created above
|
|
list_vms_stopped = VirtualMachine.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id,
|
|
state="Stopped",
|
|
networkid=network.id
|
|
)
|
|
# Verifying that no vms are listed
|
|
self.assertIsNone(
|
|
list_vms_stopped,
|
|
"Created VM is in Stopped state"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_before = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are listed
|
|
self.assertIsNone(
|
|
list_lbrules_before,
|
|
"Load Balancer Rules listed for newly Acquired Ip Address"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = 'false'
|
|
# Creating a Load Balancer Rule for Ip Address
|
|
lb_rule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
lb_rule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_lbrules_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbrules_after),
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as true
|
|
list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="true"
|
|
)
|
|
# Verifying No Instances are assigned to the Load Balancer Rule
|
|
self.assertIsNone(
|
|
list_lbruleinstance_applied_true,
|
|
"Instances are assigned to Newly created Load Balancer Rule"
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as false
|
|
list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="false"
|
|
)
|
|
status = validateList(list_lbruleinstance_applied_false)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbruleinstance_applied_false),
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying that Instance created above is listed
|
|
self.assertEquals(
|
|
vm_created.id,
|
|
list_lbruleinstance_applied_false[0].id,
|
|
"Failed to list Instance available to asign a Load Balancer Rule"
|
|
)
|
|
# Assigning Instance created to Load Balancer Rule
|
|
LoadBalancerRule.assign(
|
|
lb_rule,
|
|
self.userapiclient,
|
|
vms=[vm_created]
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as true
|
|
list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="true"
|
|
)
|
|
status = validateList(list_lbruleinstance_applied_false)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbruleinstance_applied_false),
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying Instances is assigned to the Load Balancer Rule
|
|
self.assertEquals(
|
|
vm_created.id,
|
|
list_lbruleinstance_applied_true[0].id,
|
|
"Failed to assign Load Balancer Rule to given Instance"
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as false
|
|
list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="false"
|
|
)
|
|
# Verifying No Load Balancer Rules Instances are available to assign
|
|
self.assertIsNone(
|
|
list_lbruleinstance_applied_false,
|
|
"Instances are available for assigning a Load Balancer Rule"
|
|
)
|
|
# Removing Load balancer Rule from Instance
|
|
LoadBalancerRule.remove(
|
|
lb_rule,
|
|
self.userapiclient,
|
|
vms=[vm_created]
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as true
|
|
list_lbruleinstance_applied_true = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="true"
|
|
)
|
|
# Verifying that there are no Instances assigned to the Load Balancer Rule
|
|
self.assertIsNone(
|
|
list_lbruleinstance_applied_true,
|
|
"Instances is assigned to Load balancer Rule"
|
|
)
|
|
# Listing Load Balancer Rule Instances for applied as false
|
|
list_lbruleinstance_applied_false = LoadBalancerRule.listLoadBalancerRuleInstances(
|
|
self.userapiclient,
|
|
id=lb_rule.id,
|
|
applied="false"
|
|
)
|
|
status = validateList(list_lbruleinstance_applied_false)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbruleinstance_applied_false),
|
|
"No Instances are available to assign to Load Balancer Rule"
|
|
)
|
|
# Verifying that Instance created above is listed
|
|
self.assertEquals(
|
|
vm_created.id,
|
|
list_lbruleinstance_applied_false[0].id,
|
|
"Failed to list Instance available to asign a Load Balancer Rule"
|
|
)
|
|
# Destroying the VM Launched
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_08_list_create_delete_lbsticky_policy(self):
|
|
"""
|
|
@summary: Test to List, Create, Delete Load Balancer Stickyness Policy
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Creating a Load Balancer Rule for IP Address associated in Step2
|
|
Step4: Listing Load Balancer Sticky Policies for LB Rule created in Step3
|
|
Step5: Verifying that no Load Balancer Sticky Policies are listed
|
|
Step6: Creating a Load Balancer Sticky Policies for LB Rule created in Step3
|
|
Step7: Listing Load Balancer Sticky Policies for LB Rule created in Step3
|
|
Step8: Verifying 1 Load Balancer Sticky Policy is listed
|
|
Step9: Deleting the Load Balancer Sticky Policies
|
|
Step10: Listing Load Balancer Sticky Policies for LB Rule created in Step3
|
|
Step11: Verifying that no Load Balancer Sticky Policies are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Lb enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing Networks again
|
|
list_networks_after = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
status = validateList(list_networks_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Network Creation Failed"
|
|
)
|
|
# Verifying network list count is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_networks_after),
|
|
"Network Creation Failed"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_before = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Load Balancer Rules are listed
|
|
self.assertIsNone(
|
|
list_lbrules_before,
|
|
"Load Balancer Rules listed for newly Acquired Ip Address"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = 'false'
|
|
# Creating a Load Balancer Rule for Ip Address
|
|
lb_rule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
lb_rule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Listing Load Balancer Rules for the Ip Address
|
|
list_lbrules_after = LoadBalancerRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
publicipid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_lbrules_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbrules_after),
|
|
"Load Balancer Rule creation Failed"
|
|
)
|
|
# Listing Load Balancer Stickyness Policies for LB Rule
|
|
list_lbstickypolicy_before = LoadBalancerRule.listStickyPolicies(
|
|
self.userapiclient,
|
|
lbruleid=lb_rule.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no Sticky Policies are listed
|
|
self.assertEquals(
|
|
0,
|
|
len(list_lbstickypolicy_before[0].stickinesspolicy),
|
|
"Sticky Policy listed for newly created Load Balancer Rule"
|
|
)
|
|
# Creating a Sticy Policy for Load Balancer Rule
|
|
sticky_policy = LoadBalancerRule.createSticky(
|
|
lb_rule,
|
|
self.userapiclient,
|
|
methodname='LbCookie',
|
|
name='LbCookieSticky'
|
|
)
|
|
self.assertIsNotNone(
|
|
sticky_policy,
|
|
"Failed to create Sticky Policy for Load Balancer Rule"
|
|
)
|
|
# Verifying details of Sticky Policy created
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"account":self.account.name,
|
|
"domainid":self.domain.id,
|
|
"lbruleid":lb_rule.id,
|
|
"methodname":"LbCookie",
|
|
"name":"LbCookieSticky",
|
|
}
|
|
actual_dict = {
|
|
"account":sticky_policy.account,
|
|
"domainid":sticky_policy.domainid,
|
|
"lbruleid":sticky_policy.lbruleid,
|
|
"methodname":sticky_policy.stickinesspolicy[0].methodname,
|
|
"name":sticky_policy.stickinesspolicy[0].name,
|
|
}
|
|
lbstickypolicy_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
lbstickypolicy_status,
|
|
"Created Load Balancer Sticky Policy details are not as expected"
|
|
)
|
|
# Listing Load Balancer Stickyness Policies for LB Rule
|
|
list_lbstickypolicy_after = LoadBalancerRule.listStickyPolicies(
|
|
self.userapiclient,
|
|
lbruleid=lb_rule.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_lbstickypolicy_after[0].stickinesspolicy)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Load Balancer Sticky Policy creation Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_lbstickypolicy_after[0].stickinesspolicy),
|
|
"Load Balancer Sticky Policy creation Failed"
|
|
)
|
|
# Deleting the Sticky Policy
|
|
LoadBalancerRule.deleteSticky(
|
|
lb_rule,
|
|
self.userapiclient,
|
|
id=sticky_policy.stickinesspolicy[0].id
|
|
)
|
|
# Listing Load Balancer Stickyness Policies for LB Rule
|
|
list_lbstickypolicy_after = LoadBalancerRule.listStickyPolicies(
|
|
self.userapiclient,
|
|
lbruleid=lb_rule.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no Sticky Policies are listed
|
|
self.assertEquals(
|
|
0,
|
|
len(list_lbstickypolicy_after[0].stickinesspolicy),
|
|
"Sticky Policy listed for newly created Load Balancer Rule"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_09_create_delete_portforwarding_fornonvpc(self):
|
|
"""
|
|
@summary: Test to list, create and delete Port Forwarding for IP Address associated to Non VPC network
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Launching Virtual Machine in network created in step 2
|
|
Step4: Listing Port Forwarding Rules for the IP Address associated in Step2
|
|
Step5: Verifying that no Port Forwarding Rules are listed
|
|
Step6: Creating a Port Forwarding Rule for IP Address associated in Step2
|
|
Step7: Listing Port Forwarding Rules for the IP Address associated in Step2
|
|
Step8: Verifying 1 Port Forwarding Rule is listed
|
|
Step9: Deleting the Port Forwarding Rule created in Step6
|
|
Step10: Listing Port Forwarding Rules for the IP Address associated in Step2
|
|
Step11: Verifying that no Port Forwarding Rules are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,PortForwarding",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, PortForwarding enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine with above created Network
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing Virtual Machines in running state in above created network
|
|
list_vms_running = VirtualMachine.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
state="Running",
|
|
networkid=network.id
|
|
)
|
|
status = validateList(list_vms_running)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"VM Created is not in Running state"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"VM Created is not in Runnning state"
|
|
)
|
|
self.assertEquals(
|
|
vm_created.id,
|
|
list_vms_running[0].id,
|
|
"VM Created is not in Runnning state"
|
|
)
|
|
# Listing Virtual Machines in stopped state in above created network
|
|
list_vms_stopped = VirtualMachine.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
state="Stopped",
|
|
networkid=network.id
|
|
)
|
|
# Verifying no VMs are in stopped state
|
|
self.assertIsNone(
|
|
list_vms_stopped,
|
|
"VM Created is in stopped state"
|
|
)
|
|
# Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_before = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no port forwarding rules are listed
|
|
self.assertIsNone(
|
|
list_prtfwdrule_before,
|
|
"Port Forwarding Rules listed for newly associated IP Address"
|
|
)
|
|
# Creating a Port Forwarding rule
|
|
portfwd_rule = NATRule.create(
|
|
self.userapiclient,
|
|
virtual_machine=vm_created,
|
|
services=self.services["natrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
portfwd_rule,
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Verifying details of Sticky Policy created
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"ipaddressid":associated_ipaddress.ipaddress.id,
|
|
"privateport":str(self.services["natrule"]["privateport"]),
|
|
"publicport":str(self.services["natrule"]["publicport"]),
|
|
"protocol":str(self.services["natrule"]["protocol"]).lower(),
|
|
}
|
|
actual_dict = {
|
|
"ipaddressid":portfwd_rule.ipaddressid,
|
|
"privateport":str(portfwd_rule.privateport),
|
|
"publicport":str(portfwd_rule.publicport),
|
|
"protocol":portfwd_rule.protocol,
|
|
}
|
|
portfwd_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
portfwd_status,
|
|
"Created Port Forward Rule details are not as expected"
|
|
)
|
|
# Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_after = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_prtfwdrule_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_prtfwdrule_after),
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Deleting Port Forwarding Rule
|
|
portfwd_rule.delete(self.userapiclient)
|
|
# # Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_after = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no port forwarding rules are listed
|
|
self.assertIsNone(
|
|
list_prtfwdrule_after,
|
|
"Port Forwarding Rules listed after deletion"
|
|
)
|
|
# Destroying the VM Launched
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_10_create_delete_portforwarding_forvpc(self):
|
|
"""
|
|
@summary: Test to list, create and delete Port Forwarding Rule for IP Address associated to VPC
|
|
@Steps:
|
|
Step1: Creating a VPC for the user
|
|
Step2: Creating Network inside VPC
|
|
Step3: Associating an IP Addresses for VPC
|
|
Step4: Launching a VM in the Network created in Step 2
|
|
Step5: Listing Port Forwarding Rules for the IP Address associated in Step3
|
|
Step6: Verifying that no Port Forwarding Rules are listed
|
|
Step7: Creating a Port Forwarding Rule for IP Address associated in Step3
|
|
Step8: Listing Port Forwarding Rules for the IP Address associated in Step3
|
|
Step9: Verifying 1 Port Forwarding Rule is listed
|
|
Step10: Deleting the Port Forwarding Rule created in Step7
|
|
Step11: Listing Port Forwarding Rules for the IP Address associated in Step3
|
|
Step12: Verifying that no Port Forwarding Rules are listed
|
|
"""
|
|
# Listing all the vpc's for a user
|
|
list_vpc_before = VPC.list(self.userapiclient)
|
|
# Verifying No VPCs are listed
|
|
self.assertIsNone(
|
|
list_vpc_before,
|
|
"VPC's Listed for newly Created User"
|
|
)
|
|
# Listing VPC Offerings
|
|
list_vpc_offering = VpcOffering.list(self.userapiclient)
|
|
status = validateList(list_vpc_offering)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list vpc offering is none"
|
|
)
|
|
# Creating a vpc
|
|
vpc_created = VPC.create(
|
|
self.userapiclient,
|
|
self.services["vpc"],
|
|
list_vpc_offering[0].id,
|
|
self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vpc_created,
|
|
"VPC Creation Failed"
|
|
)
|
|
# Listing the vpc for a user after creating a vpc
|
|
list_vpc_after = VPC.list(self.userapiclient)
|
|
status = validateList(list_vpc_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list VPC not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_vpc_after),
|
|
"list VPC not equal as expected"
|
|
)
|
|
# List network offering for vpc = true
|
|
network_offering_vpc_true_list = NetworkOffering.list(
|
|
self.userapiclient,
|
|
forvpc="true",
|
|
zoneid=self.zone.id,
|
|
supportedServices="SourceNat,PortForwarding",
|
|
state="Enabled"
|
|
)
|
|
status = validateList(network_offering_vpc_true_list)
|
|
self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with PortForwarding")
|
|
# Creating network under VPC
|
|
network_created = Network.create(
|
|
self.userapiclient,
|
|
self.services["ntwk"],
|
|
networkofferingid=network_offering_vpc_true_list[0].id,
|
|
vpcid=vpc_created.id,
|
|
zoneid=self.zone.id,
|
|
gateway=self.services["ntwk"]["gateway"],
|
|
netmask=self.services["ntwk"]["netmask"]
|
|
)
|
|
self.assertIsNotNone(
|
|
network_created,
|
|
"Network is not created"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list IP Addresses not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"list IP Addresses not equal as expected"
|
|
)
|
|
# Associating an IP Addresses to VPC created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
vpcid=vpc_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
len(list_ipaddresses_before) + 1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine with above created Network
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network_created.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
self.cleanup.append(network_created)
|
|
self.cleanup.append(vpc_created)
|
|
# Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_before = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no port forwarding rules are listed
|
|
self.assertIsNone(
|
|
list_prtfwdrule_before,
|
|
"Port Forwarding Rules listed for newly associated IP Address"
|
|
)
|
|
# Creating a Port Forwarding rule
|
|
portfwd_rule = NATRule.create(
|
|
self.userapiclient,
|
|
virtual_machine=vm_created,
|
|
services=self.services["natrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
networkid=network_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
portfwd_rule,
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Verifying details of Sticky Policy created
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"ipaddressid":associated_ipaddress.ipaddress.id,
|
|
"privateport":str(self.services["natrule"]["privateport"]),
|
|
"publicport":str(self.services["natrule"]["publicport"]),
|
|
"protocol":str(self.services["natrule"]["protocol"]).lower(),
|
|
}
|
|
actual_dict = {
|
|
"ipaddressid":portfwd_rule.ipaddressid,
|
|
"privateport":str(portfwd_rule.privateport),
|
|
"publicport":str(portfwd_rule.publicport),
|
|
"protocol":portfwd_rule.protocol,
|
|
}
|
|
portfwd_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
portfwd_status,
|
|
"Created Port Forward Rule details are not as expected"
|
|
)
|
|
# Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_after = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_prtfwdrule_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_prtfwdrule_after),
|
|
"Failed to create Port Forwarding Rule"
|
|
)
|
|
# Deleting Port Forwarding Rule
|
|
portfwd_rule.delete(self.userapiclient)
|
|
# # Listing Port Forwarding Rules for the IP Address associated
|
|
list_prtfwdrule_after = NATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no port forwarding rules are listed
|
|
self.assertIsNone(
|
|
list_prtfwdrule_after,
|
|
"Port Forwarding Rules listed after deletion"
|
|
)
|
|
# Destroying the VM Launched
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_11_create_delete_firewallrule(self):
|
|
"""
|
|
@summary: Test to list, create and delete Firewall Rule for IP Address associated to Non VPC network
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Listing Firewall Rules for the IP Address associated in Step2
|
|
Step4: Verifying that no Rules are listed
|
|
Step5: Creating a Firewall Rule for IP Address associated in Step2
|
|
Step6: Listing Firewall Rules for the IP Address associated in Step2
|
|
Step7: Verifying 1 Firewall Rule is listed
|
|
Step8: Deleting the Firewall Rule created in Step5
|
|
Step9: Listing Firewall Rules for the IP Address associated in Step2
|
|
Step10: Verifying that no Firewall Rules are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Firewall",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Firewall enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Firewall rules for the IP Associated
|
|
list_firewalls_before = FireWallRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no firewall rules are listed
|
|
self.assertIsNone(
|
|
list_firewalls_before,
|
|
"Firewall Rules listed for newly associated IP Address"
|
|
)
|
|
# Creating a Firewall Rule
|
|
firewall_rule = FireWallRule.create(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
protocol='tcp',
|
|
cidrlist='10.1.1.1/16',
|
|
startport='22',
|
|
endport='2222'
|
|
)
|
|
self.assertIsNotNone(
|
|
firewall_rule,
|
|
"Failed to create Firewall Rule"
|
|
)
|
|
# Verifying details of the created Firewall Rule
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"ipaddressid":associated_ipaddress.ipaddress.id,
|
|
"startport":"22",
|
|
"endport":"2222",
|
|
"protocol":"tcp",
|
|
"cidrlist":"10.1.1.1/16"
|
|
}
|
|
actual_dict = {
|
|
"ipaddressid":firewall_rule.ipaddressid,
|
|
"startport":firewall_rule.startport,
|
|
"endport":firewall_rule.endport,
|
|
"protocol":firewall_rule.protocol,
|
|
"cidrlist":firewall_rule.cidrlist
|
|
}
|
|
firewall_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
firewall_status,
|
|
"Created Firewall Rule details are not as expected"
|
|
)
|
|
# Listing Firewall rules for the IP Associated
|
|
list_firewalls_after = FireWallRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_firewalls_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to create Firewall Rule"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_firewalls_after),
|
|
"Failed to create Firewall Rule"
|
|
)
|
|
# Deleting the Firewall Rule
|
|
firewall_rule.delete(self.userapiclient)
|
|
# Listing Firewall rules for the IP Associated
|
|
list_firewalls_after = FireWallRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no firewall rules are listed
|
|
self.assertIsNone(
|
|
list_firewalls_after,
|
|
"Failed to create Firewall Rule"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_12_create_delete_remoteaccessvpn(self):
|
|
"""
|
|
@summary: Test to list, create and delete Remote Access VPNs
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Listing Remore Access VPNs for the IP Address associated in Step2
|
|
Step4: Verifying that no Remore Access VPNs are listed
|
|
Step5: Creating a Remore Access VPN for IP Address associated in Step2
|
|
Step6: Listing Remore Access VPNs for the IP Address associated in Step2
|
|
Step7: Verifying 1 Remore Access VPN is listed
|
|
Step8: Deleting the Remore Access VPNs created in Step5
|
|
Step9: Listing Remore Access VPNs for the IP Address associated in Step2
|
|
Step10: Verifying that no Remore Access VPNs are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Vpn",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Vpn enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Remote access VPNs for the IP Associated
|
|
list_vpns_before = Vpn.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Remote Access VPNs are listed
|
|
self.assertIsNone(
|
|
list_vpns_before,
|
|
"Remote Access VPNs listed for newly associated IP Address"
|
|
)
|
|
# Creating a Remote Access VPN
|
|
vpn_created = Vpn.create(
|
|
self.userapiclient,
|
|
publicipid=associated_ipaddress.ipaddress.id,
|
|
account=self.account.name,
|
|
domainid=self.domain.id,
|
|
openfirewall='false'
|
|
)
|
|
self.assertIsNotNone(
|
|
vpn_created,
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Verifying details of the created Remote Access VPN
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"ipaddressid":associated_ipaddress.ipaddress.id,
|
|
"account":self.account.name,
|
|
"domainid":self.domain.id,
|
|
"state":"Running",
|
|
}
|
|
actual_dict = {
|
|
"ipaddressid":vpn_created.publicipid,
|
|
"account":vpn_created.account,
|
|
"domainid":vpn_created.domainid,
|
|
"state":vpn_created.state,
|
|
}
|
|
vpn_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
vpn_status,
|
|
"Created Remote Access VPN details are not as expected"
|
|
)
|
|
# Listing Remote Access VPNs for the IP Associated
|
|
list_vpns_after = Vpn.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_vpns_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_vpns_after),
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Deleting the Remote Access VPN
|
|
vpn_created.delete(self.userapiclient)
|
|
# Listing Remote Access VPNs for the IP Associated
|
|
list_vpns_after = Vpn.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Remote Access VPNs are listed
|
|
self.assertIsNone(
|
|
list_vpns_after,
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_13_add_remove_vpnusers(self):
|
|
"""
|
|
@summary: Test to list, add and remove VPN Users
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network
|
|
Step3: Launching a VM under network created in Step1
|
|
Step4: Creating Remote Access VPN
|
|
Step5: Listing VPN Users
|
|
Step6: Verifying that no VPN Users are listed
|
|
Step7: Adding a VPN user
|
|
Step8: Listing VPN Users
|
|
Step9: Verifying 1 VPN is listed
|
|
Step10: Deleting VPN user
|
|
Step11: Listing VPN Users
|
|
Step12: Verifying that no VPN Users are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Vpn",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Vpn enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Listing Remote access VPNs for the IP Associated
|
|
list_vpns_before = Vpn.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Verifying no Remote Access VPNs are listed
|
|
self.assertIsNone(
|
|
list_vpns_before,
|
|
"Remote Access VPNs listed for newly associated IP Address"
|
|
)
|
|
# Creating a Remote Access VPN
|
|
vpn_created = Vpn.create(
|
|
self.userapiclient,
|
|
publicipid=associated_ipaddress.ipaddress.id,
|
|
account=self.account.name,
|
|
domainid=self.domain.id,
|
|
openfirewall='false'
|
|
)
|
|
self.assertIsNotNone(
|
|
vpn_created,
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Listing Remote Access VPNs for the IP Associated
|
|
list_vpns_after = Vpn.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
status = validateList(list_vpns_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_vpns_after),
|
|
"Failed to create Remote Access VPN"
|
|
)
|
|
# Listing VPN Users
|
|
list_vpnusers_beore = VpnUser.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
# Verifying no VPN Users listed
|
|
self.assertIsNone(
|
|
list_vpnusers_beore,
|
|
"VPN Users listed for newly created VPN"
|
|
)
|
|
# Creating a VPN User
|
|
vpnuser_created = VpnUser.create(
|
|
self.userapiclient,
|
|
username=self.services["vpn_user"]["username"],
|
|
password=self.services["vpn_user"]["password"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vpnuser_created,
|
|
"Failed to create VPN User"
|
|
)
|
|
# Listing VPN Users
|
|
list_vpnusers_after = VpnUser.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
status = validateList(list_vpnusers_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list VPN user after creation"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_vpnusers_after),
|
|
"Failed to list VPN user after creation"
|
|
)
|
|
# Deleting the VPN User
|
|
vpnuser_created.delete(self.userapiclient)
|
|
# Listing VPN Users
|
|
list_vpnusers_after = VpnUser.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
# Verifying no VPN Users are listed
|
|
self.assertIsNone(
|
|
list_vpnusers_after,
|
|
"VPN User listed after deletion"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_14_enable_disable_staticnat_fornonvpc(self):
|
|
"""
|
|
@summary: Test to Enable and Disable StaticNat for IP Address associated to Non VPC Network
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network created in step1
|
|
Step3: Associating one more Ip Address to Network created in step1
|
|
Step4: Launching the VM in network created in step1
|
|
Step5: Enabling the staticNat to IP Associated in Step3
|
|
Step6: Verifying that StaticNat is enabled
|
|
Step7: Disabling the staticNat to IP Associated in Step3
|
|
Step8: Verifying that StaticNat is disabled
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,StaticNat",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Vpn enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress1 = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress1,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Associating another IP Addresses to Network created
|
|
associated_ipaddress2 = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress2,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
2,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Enabling static Nat for Ip Address associated
|
|
StaticNATRule.enable(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress2.ipaddress.id,
|
|
virtualmachineid=vm_created.id,
|
|
)
|
|
# Listing Ip Address by id
|
|
list_ipaddress = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress2.ipaddress.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddress)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Address"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddress),
|
|
"Failed to List IP Address"
|
|
)
|
|
self.assertEquals(
|
|
True,
|
|
list_ipaddress[0].isstaticnat,
|
|
"Failed to Enable Static Nat"
|
|
)
|
|
# Disabling static Nat
|
|
StaticNATRule.disable(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress2.ipaddress.id
|
|
)
|
|
# Listing Ip Address by id
|
|
list_ipaddress = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress2.ipaddress.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddress)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Address"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddress),
|
|
"Failed to List IP Address"
|
|
)
|
|
self.assertEquals(
|
|
False,
|
|
list_ipaddress[0].isstaticnat,
|
|
"Failed to Disable Static Nat"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_15_enable_disable_staticnat_forvpc(self):
|
|
"""
|
|
@summary: Test to Enable and Disable StaticNat for IP Address associated to VPC Network
|
|
@Steps:
|
|
Step1: Creating a VPC
|
|
Step2: Creating a Network under VPC for the user
|
|
Step3: Associating an IP Addresses for Network created in step1
|
|
Step4: Launching the VM in network created in step2
|
|
Step5: Enabling the staticNat to IP Associated in Step3
|
|
Step6: Verifying that StaticNat is enabled
|
|
Step7: Disabling the staticNat to IP Associated in Step3
|
|
Step8: Verifying that StaticNat is disabled
|
|
"""
|
|
# Listing all the vpc's for a user
|
|
list_vpc_before = VPC.list(self.userapiclient)
|
|
# Verifying No VPCs are listed
|
|
self.assertIsNone(
|
|
list_vpc_before,
|
|
"VPC's Listed for newly Created User"
|
|
)
|
|
# Listing VPC Offerings
|
|
list_vpc_offering = VpcOffering.list(self.userapiclient)
|
|
status = validateList(list_vpc_offering)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list vpc offering is none"
|
|
)
|
|
# Creating a vpc
|
|
vpc_created = VPC.create(
|
|
self.userapiclient,
|
|
self.services["vpc"],
|
|
list_vpc_offering[0].id,
|
|
self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vpc_created,
|
|
"VPC Creation Failed"
|
|
)
|
|
# Listing the vpc for a user after creating a vpc
|
|
list_vpc_after = VPC.list(self.userapiclient)
|
|
status = validateList(list_vpc_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list VPC not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_vpc_after),
|
|
"list VPC not equal as expected"
|
|
)
|
|
# List network offering for vpc = true
|
|
network_offering_vpc_true_list = NetworkOffering.list(
|
|
self.userapiclient,
|
|
forvpc="true",
|
|
zoneid=self.zone.id,
|
|
supportedServices="SourceNat,PortForwarding,StaticNat",
|
|
state="Enabled"
|
|
)
|
|
status = validateList(network_offering_vpc_true_list)
|
|
self.assertEquals(PASS, status[0], "Default network offering not present for vpc = true with PortForwarding")
|
|
# Creating network under VPC
|
|
network_created = Network.create(
|
|
self.userapiclient,
|
|
self.services["ntwk"],
|
|
networkofferingid=network_offering_vpc_true_list[0].id,
|
|
vpcid=vpc_created.id,
|
|
zoneid=self.zone.id,
|
|
gateway=self.services["ntwk"]["gateway"],
|
|
netmask=self.services["ntwk"]["netmask"]
|
|
)
|
|
self.assertIsNotNone(
|
|
network_created,
|
|
"Network is not created"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"list IP Addresses not as expected"
|
|
)
|
|
# Verifying the list vpc size is increased by 1
|
|
self.assertEquals(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"list IP Addresses not equal as expected"
|
|
)
|
|
# Associating an IP Addresses to VPC created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
vpcid=vpc_created.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
len(list_ipaddresses_before) + 1,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine with above created Network
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network_created.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
self.cleanup.append(network_created)
|
|
self.cleanup.append(vpc_created)
|
|
# Enabling static Nat for Ip Address associated
|
|
StaticNATRule.enable(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
virtualmachineid=vm_created.id,
|
|
networkid=network_created.id
|
|
)
|
|
# Listing Ip Address by id
|
|
list_ipaddress = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress.ipaddress.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddress)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Address"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddress),
|
|
"Failed to List IP Address"
|
|
)
|
|
self.assertEquals(
|
|
True,
|
|
list_ipaddress[0].isstaticnat,
|
|
"Failed to Enable Static Nat"
|
|
)
|
|
# Disabling static Nat
|
|
StaticNATRule.disable(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress.ipaddress.id
|
|
)
|
|
# Listing Ip Address by id
|
|
list_ipaddress = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress.ipaddress.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddress)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Address"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddress),
|
|
"Failed to List IP Address"
|
|
)
|
|
self.assertEquals(
|
|
False,
|
|
list_ipaddress[0].isstaticnat,
|
|
"Failed to Disable Static Nat"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_16_create_delete_ipforwardingrule(self):
|
|
"""
|
|
@summary: Test to list, create and delete IP Forwarding Rules for IP Address
|
|
@Steps:
|
|
Step1: Creating a Network for the user
|
|
Step2: Associating an IP Addresses for Network created in step1
|
|
Step3: Associating one more Ip Address to Network created in step1
|
|
Step4: Launching the VM in network created in step1
|
|
Step5: Enabling the staticNat to IP Associated in Step3
|
|
Step6: Listing IP Forwarding rules
|
|
Step7: Verifying no IP Forwarding rules are listed
|
|
Step8: Creating a IP Forwarding Rule
|
|
Step9: Listing IP Forwarding rules
|
|
Step10: Verifying 1 IP Forwarding rule is listed
|
|
Step11: Deleting the IP Forwarding rule
|
|
Step12: Listing IP Forwarding rules
|
|
Step13: Verifying no IP Forwarding rules are listed
|
|
"""
|
|
# Listing all the Networks's for a user
|
|
list_networks_before = Network.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
type="Isolated"
|
|
)
|
|
# Verifying No Networks are listed
|
|
self.assertIsNone(
|
|
list_networks_before,
|
|
"Networks listed for newly created User"
|
|
)
|
|
# Listing Network Offerings
|
|
network_offerings_list = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Vpn",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(network_offerings_list)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Isolated Network Offerings with sourceNat, Vpn enabled are not found"
|
|
)
|
|
# Creating a network
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=network_offerings_list[0].id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no IP Addresses are listed
|
|
self.assertIsNone(
|
|
list_ipaddresses_before,
|
|
"IP Addresses listed for newly created User"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress1 = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress1,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Associating another IP Addresses to Network created
|
|
associated_ipaddress2 = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress2,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
2,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Launching a Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Enabling static Nat for Ip Address associated
|
|
StaticNATRule.enable(
|
|
self.userapiclient,
|
|
ipaddressid=associated_ipaddress2.ipaddress.id,
|
|
virtualmachineid=vm_created.id,
|
|
)
|
|
# Listing Ip Address by id
|
|
list_ipaddress = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
id=associated_ipaddress2.ipaddress.id,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddress)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Address"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddress),
|
|
"Failed to List IP Address"
|
|
)
|
|
self.assertEquals(
|
|
True,
|
|
list_ipaddress[0].isstaticnat,
|
|
"Failed to Enable Static Nat"
|
|
)
|
|
# Listing IP Forwarding Rules
|
|
list_ipfwdrule_before = StaticNATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress2.ipaddress.id
|
|
)
|
|
# Verifying no IP Forwarding Rules are listed
|
|
self.assertIsNone(
|
|
list_ipfwdrule_before,
|
|
"IP Forwardign Rule listed for newly enabled StaticNat IP"
|
|
)
|
|
# Creating IP Forwardign Rule
|
|
ipfwd_rule = StaticNATRule.createIpForwardingRule(
|
|
self.userapiclient,
|
|
startport='80',
|
|
endport='89',
|
|
protocol='tcp',
|
|
ipaddressid=associated_ipaddress2.ipaddress.id,
|
|
openfirewall=False
|
|
)
|
|
self.assertIsNotNone(
|
|
ipfwd_rule,
|
|
"Failed to create IP Forwarding Rule"
|
|
)
|
|
# Listing IP Forwarding Rules
|
|
list_ipfwdrule_after = StaticNATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress2.ipaddress.id
|
|
)
|
|
status = validateList(list_ipfwdrule_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to List IP Forwarding Rule after Creation"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipfwdrule_after),
|
|
"Failed to List IP Forwarding Rule after Creation"
|
|
)
|
|
# Deleting IP Forwarding Rule
|
|
ipfwd_rule.delete(self.userapiclient)
|
|
# Listing IP Forwarding Rules
|
|
list_ipfwdrule_after = StaticNATRule.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
ipaddressid=associated_ipaddress2.ipaddress.id
|
|
)
|
|
# Verifying no IP Forwarding Rules are listed
|
|
self.assertIsNone(
|
|
list_ipfwdrule_after,
|
|
"IP Forwardign Rule listed after deletion"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_17_create_update_autoscalepolicy(self):
|
|
"""
|
|
@summary: Test to list, create and update Autoscale Policy
|
|
@Steps:
|
|
Step1: Creating a Network Offering for Supported Service LB with Netscaler
|
|
Step2: Create a Network using Network Offering created in Step1
|
|
Step3: Launching a VM using Network created in Step2
|
|
Step4: Associating IP Address for Network created in Step2
|
|
Step5: Listing Counters
|
|
Step6: Listing Conditions for the user
|
|
Step7: Verifying no Conditions are listed
|
|
Step8: Creating a 2 conditions
|
|
Step9: Listing conditions again
|
|
Step10: Verifying 2 conditions are listed
|
|
Step11: Listing Autoscale Policies for User
|
|
Step12: Verifying No Autoscale policy is listed
|
|
Step13: Creating Autoscale Policy using Condition1
|
|
Step14: Verifying that Autoscale Policy is created with Condition1
|
|
Step15: Listing Autoscale Policies
|
|
Step16: Verifying 1 Autoscale Policy is listed
|
|
Step17: Updating Autoscale Policy created in step13 with condition2
|
|
Step18: Verifying Autoscale policy is updated with condition2
|
|
"""
|
|
if self.hypervisor.lower() == 'kvm':
|
|
raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test")
|
|
|
|
list_physical_networks = PhysicalNetwork.list(
|
|
self.apiClient,
|
|
zoneid=self.zone.id
|
|
)
|
|
physical_networks_size = 0
|
|
if list_physical_networks is not None:
|
|
physical_networks_size = len(list_physical_networks)
|
|
|
|
run_flag = False
|
|
for i in range(0, len(list_physical_networks)):
|
|
list_network_serviceprovider = NetworkServiceProvider.list(
|
|
self.apiClient,
|
|
physicalnetworkid=list_physical_networks[i].id
|
|
)
|
|
for j in range(0, len(list_network_serviceprovider)):
|
|
if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')):
|
|
run_flag = True
|
|
break
|
|
|
|
if(run_flag == False):
|
|
self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler")
|
|
else:
|
|
# Listing Network Offerings
|
|
list_nwoff_before = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
# Creating Network Offerign with LB as Netscalar
|
|
nwoff_created = NetworkOffering.create(
|
|
self.apiClient,
|
|
self.services["nw_off_isolated_netscaler"]
|
|
)
|
|
self.assertIsNotNone(
|
|
nwoff_created,
|
|
"Failed to Create Network Offering with LB sercvice for Netscaler"
|
|
)
|
|
# Enable Network offering
|
|
nwoff_created.update(self.apiClient, state='Enabled')
|
|
# Listing Network Offerings again
|
|
list_nwoff_after = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertEquals(
|
|
len(list_nwoff_before) + 1,
|
|
len(list_nwoff_after),
|
|
"Failed to create Network Offering"
|
|
)
|
|
# Creating a Network Using the Network Offering
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=nwoff_created.id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
self.cleanup.append(nwoff_created)
|
|
# Launching a Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
2,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Counters
|
|
list_counters = Autoscale.listCounters(
|
|
self.userapiclient,
|
|
)
|
|
status = validateList(list_counters)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list counters"
|
|
)
|
|
# Listing Conditions
|
|
list_conditions_before = Autoscale.listConditions(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
self.assertIsNone(
|
|
list_conditions_before,
|
|
"Listed Conditions for newly created user"
|
|
)
|
|
# Creating first Condition
|
|
condition_created1 = Autoscale.createCondition(
|
|
self.userapiclient,
|
|
counterid=list_counters[0].id,
|
|
relationaloperator='GT',
|
|
threshold='1000'
|
|
)
|
|
self.assertIsNotNone(
|
|
condition_created1,
|
|
"Failed to create Condition"
|
|
)
|
|
# Creating second Condition
|
|
condition_created2 = Autoscale.createCondition(
|
|
self.userapiclient,
|
|
counterid=list_counters[0].id,
|
|
relationaloperator='GT',
|
|
threshold='1500'
|
|
)
|
|
self.assertIsNotNone(
|
|
condition_created2,
|
|
"Failed to create Condition"
|
|
)
|
|
# Listing Conditions again
|
|
list_conditions_after = Autoscale.listConditions(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
status = validateList(list_conditions_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Conditions after creation"
|
|
)
|
|
# Listing Autoscale policies
|
|
list_autoscalepolicies_before = Autoscale.listAutoscalePolicies(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
# Verifying no Autoscale policies are listed
|
|
self.assertIsNone(
|
|
list_autoscalepolicies_before,
|
|
"Autoscale policies listed"
|
|
)
|
|
# Creating Autoscale Policy
|
|
autoscalepolicy_created = Autoscale.createAutoscalePolicy(
|
|
self.userapiclient,
|
|
action='scaleup',
|
|
conditionids=condition_created1.id,
|
|
duration='100',
|
|
quiettime='100'
|
|
)
|
|
self.assertIsNotNone(
|
|
autoscalepolicy_created,
|
|
"Failed to create Autoscale VM Policy"
|
|
)
|
|
# Verifying autoscalepolicy is created using condition1
|
|
self.assertEquals(
|
|
condition_created1.id,
|
|
autoscalepolicy_created.conditions[0].id,
|
|
"Autoscale Policy not created by given condition"
|
|
)
|
|
# Listing Autoscale policies
|
|
list_autoscalepolicies_after = Autoscale.listAutoscalePolicies(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_autoscalepolicies_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Autoscale Policy after creation"
|
|
)
|
|
self.assertEquals(
|
|
1,
|
|
len(list_autoscalepolicies_after),
|
|
"Autoscale Policies count is not matching"
|
|
)
|
|
# Updating Autoscale Policy
|
|
autoscalepolicy_updated = Autoscale.updateAutoscalePolicy(
|
|
self.userapiclient,
|
|
id=autoscalepolicy_created.id,
|
|
conditionids=condition_created2.id,
|
|
duration='100',
|
|
quiettime='100'
|
|
)
|
|
self.assertIsNotNone(
|
|
autoscalepolicy_updated,
|
|
"Failed to update Autoscale Policy"
|
|
)
|
|
# Verifying the Autoscale Policy is updated
|
|
self.assertEquals(
|
|
condition_created2.id,
|
|
autoscalepolicy_updated.conditions[0].id,
|
|
"Autoscale Policy not updated to given condition"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_18_create_update_autoscaleprofiles(self):
|
|
"""
|
|
@summary: Test to list, create and update Autoscale VM Profiles
|
|
@Steps:
|
|
Step1: Creating a Network Offering for Supported Service LB with Netscaler
|
|
Step2: Create a Network using Network Offering created in Step1
|
|
Step3: Launching a VM using Network created in Step2
|
|
Step4: Associating IP Address for Network created in Step2
|
|
Step5: Listing Available Service Offerings
|
|
Step6: Listing all types of templates
|
|
Step7: Verifying only featured templates are listed for newly created user
|
|
Step8: Listing autoscale vm profiles
|
|
Step9: Verifying no Autoscale VM Profiles are listed
|
|
Step10: Creating a Autoscale VM Profile
|
|
Step11: Listing Autoscale VM Profile
|
|
Step12: Verifying 1 Autoscale VM Profile is listed
|
|
Step13: Listing Autoscale VM Profile by id
|
|
Step14: Verifying details of the created autoscale vm profile are matching with listed autoscal vm profile
|
|
Step15: Updating Autoscale VM profile with destroy vm grace period
|
|
Step16: Verifying that Autoscale VM is updated
|
|
"""
|
|
if self.hypervisor.lower() == 'kvm':
|
|
raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test")
|
|
|
|
list_physical_networks = PhysicalNetwork.list(
|
|
self.apiClient,
|
|
zoneid=self.zone.id
|
|
)
|
|
physical_networks_size = 0
|
|
if list_physical_networks is not None:
|
|
physical_networks_size = len(list_physical_networks)
|
|
|
|
run_flag = False
|
|
for i in range(0, len(list_physical_networks)):
|
|
list_network_serviceprovider = NetworkServiceProvider.list(
|
|
self.apiClient,
|
|
physicalnetworkid=list_physical_networks[i].id
|
|
)
|
|
for j in range(0, len(list_network_serviceprovider)):
|
|
if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')):
|
|
run_flag = True
|
|
break
|
|
|
|
if(run_flag == False):
|
|
self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler")
|
|
else:
|
|
# Listing Network Offerings
|
|
list_nwoff_before = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
# Creating Network Offerign with LB as Netscalar
|
|
nwoff_created = NetworkOffering.create(
|
|
self.apiClient,
|
|
self.services["nw_off_isolated_netscaler"]
|
|
)
|
|
self.assertIsNotNone(
|
|
nwoff_created,
|
|
"Failed to Create Network Offering with LB sercvice for Netscaler"
|
|
)
|
|
# Enable Network offering
|
|
nwoff_created.update(self.apiClient, state='Enabled')
|
|
# Listing Network Offerings again
|
|
list_nwoff_after = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertEquals(
|
|
len(list_nwoff_before) + 1,
|
|
len(list_nwoff_after),
|
|
"Failed to create Network Offering"
|
|
)
|
|
# Creating a Network Using the Network Offering
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=nwoff_created.id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
self.cleanup.append(nwoff_created)
|
|
# Launching a Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
2,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Service Offerings
|
|
list_service_offerings = ServiceOffering.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
issystem='false'
|
|
)
|
|
status = validateList(list_service_offerings)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Service Offerings"
|
|
)
|
|
# Listing Users
|
|
list_users = User.list(
|
|
self.apiClient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
status = validateList(list_users)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Users"
|
|
)
|
|
# Listing Featured Templates
|
|
list_templates_featured = Template.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
templatefilter="featured",
|
|
zoneid=self.zone.id
|
|
)
|
|
status = validateList(list_templates_featured)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Featured Templates"
|
|
)
|
|
# Listing Community Templates
|
|
list_templates_community = Template.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
templatefilter="community",
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNone(
|
|
list_templates_community,
|
|
"Community Templates listed for newly created User"
|
|
)
|
|
# Listing selfexecutable Templates
|
|
list_templates_selfexecutable = Template.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
templatefilter="selfexecutable",
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNone(
|
|
list_templates_selfexecutable,
|
|
"Self Executable Templates listed for newly created User"
|
|
)
|
|
# Listing Autoscale VM Profiles
|
|
list_autoscalevm_profiles_before = Autoscale.listAutoscaleVmPofiles(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
self.assertIsNone(
|
|
list_autoscalevm_profiles_before,
|
|
"Autoscale VM Profiles listed"
|
|
)
|
|
# Creating Autoscale VM Profile
|
|
counterparam = { "snmpcommunity": "public", "snmpport": "161"}
|
|
autoscalevm_profile = Autoscale.createAutoscaleVmProfile(
|
|
self.userapiclient,
|
|
serviceofferingid=list_service_offerings[0].id,
|
|
zoneid=self.zone.id,
|
|
templateid=list_templates_featured[0].id,
|
|
autoscaleuserid=list_users[0].id,
|
|
destroyvmgraceperiod='100',
|
|
counterparam=counterparam
|
|
)
|
|
self.assertIsNotNone(
|
|
autoscalevm_profile,
|
|
"Failed to create Autoscale VM Profile"
|
|
)
|
|
# Listing Autoscale VM Profiles
|
|
list_autoscalevm_profiles_after = Autoscale.listAutoscaleVmPofiles(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_autoscalevm_profiles_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Autoscale VM Profile after creation"
|
|
)
|
|
# Verifying only 1 autoscale vm profile is created
|
|
self.assertEquals(
|
|
1,
|
|
len(list_autoscalevm_profiles_after),
|
|
"Count of Autoscale VM profiles listed is not matching"
|
|
)
|
|
# Listing the Autoscale VM Profile by id
|
|
list_autoscalvmprofile = Autoscale.listAutoscaleVmPofiles(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
id=autoscalevm_profile.id
|
|
)
|
|
status = validateList(list_autoscalvmprofile)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Autoscale VM Profile by Id after creation"
|
|
)
|
|
# Verifying details of the listed Autoscale VM Profile
|
|
# Creating expected and actual values dictionaries
|
|
expected_dict = {
|
|
"id":autoscalevm_profile.id,
|
|
"account":self.account.name,
|
|
"domainid":self.domain.id,
|
|
"autoscaleuserid":list_users[0].id,
|
|
"serviceofferingid":list_service_offerings[0].id,
|
|
"zoneid":self.zone.id,
|
|
"templateid":list_templates_featured[0].id,
|
|
"destroyvmgraceperiod":autoscalevm_profile.destroyvmgraceperiod
|
|
}
|
|
actual_dict = {
|
|
"id":list_autoscalvmprofile[0].id,
|
|
"account":list_autoscalvmprofile[0].account,
|
|
"domainid":list_autoscalvmprofile[0].domainid,
|
|
"autoscaleuserid":list_autoscalvmprofile[0].autoscaleuserid,
|
|
"serviceofferingid":list_autoscalvmprofile[0].serviceofferingid,
|
|
"zoneid":list_autoscalvmprofile[0].zoneid,
|
|
"templateid":list_autoscalvmprofile[0].templateid,
|
|
"destroyvmgraceperiod":list_autoscalvmprofile[0].destroyvmgraceperiod
|
|
}
|
|
autoscalevm_profile_status = self.__verify_values(
|
|
expected_dict,
|
|
actual_dict
|
|
)
|
|
self.assertEqual(
|
|
True,
|
|
autoscalevm_profile_status,
|
|
"Created Autoscale VM Profile details are not as expected"
|
|
)
|
|
# Updating destroyvmgrageperiod for created Autoscale VM Profile
|
|
autoscalevm_profile_updated = Autoscale.updateAutoscaleVMProfile(
|
|
self.userapiclient,
|
|
id=autoscalevm_profile.id,
|
|
autoscaleuserid=list_users[0].id,
|
|
destroyvmgraceperiod='200',
|
|
templateid=list_templates_featured[0].id,
|
|
)
|
|
self.assertIsNotNone(
|
|
autoscalevm_profile_updated,
|
|
"Failed to update Autoscale VM Profile"
|
|
)
|
|
# Verifyign that Destroy VM Graceperiod is updated in autoscale VM Profile
|
|
self.assertEquals(
|
|
200,
|
|
autoscalevm_profile_updated.destroyvmgraceperiod,
|
|
"Failed to update destroy vm grace period"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|
|
|
|
@attr(tags=["advanced", "provisioning"])
|
|
def test_19_create_update_autoscalevmgroup(self):
|
|
"""
|
|
@summary: Test to list, create, update, enable, disable Autoscale VM Profiles
|
|
@Steps:
|
|
Step1: Creating a Network Offering for Supported Service LB with Netscaler
|
|
Step2: Create a Network using Network Offering created in Step1
|
|
Step3: Launching a VM using Network created in Step2
|
|
Step4: Associating IP Address for Network created in Step2
|
|
Step5: Creating Scaleup condition and scaleup policy
|
|
Step6: Creating Scaledown condition and scaledown policy
|
|
Step7: Creating Autoscale VM profile
|
|
Step8: Creating Load Balancer Rule
|
|
Step9: Listing Autoscale Vm groups and verifying no Autoscale VM groups are listed
|
|
Step10: Creating Autoscale VM Group and verifying it was created
|
|
Step11: Listing Autoscale Vm groups and verifying 1 Autoscale VM groups is listed
|
|
Step12: Disabling Autoscale VM group and verifying it was disabled
|
|
Step13: Updating Autoscale VM group and verifying it was updated
|
|
Step14: Enabling Autoscale VM group and verifying it was enabled
|
|
"""
|
|
if self.hypervisor.lower() == 'kvm':
|
|
raise unittest.SkipTest("ScaleVM is not supported on KVM. Hence, skipping the test")
|
|
|
|
list_physical_networks = PhysicalNetwork.list(
|
|
self.apiClient,
|
|
zoneid=self.zone.id
|
|
)
|
|
physical_networks_size = 0
|
|
if list_physical_networks is not None:
|
|
physical_networks_size = len(list_physical_networks)
|
|
|
|
run_flag = False
|
|
for i in range(0, len(list_physical_networks)):
|
|
list_network_serviceprovider = NetworkServiceProvider.list(
|
|
self.apiClient,
|
|
physicalnetworkid=list_physical_networks[i].id
|
|
)
|
|
for j in range(0, len(list_network_serviceprovider)):
|
|
if((list_network_serviceprovider[j].name == 'Netscaler') and (list_network_serviceprovider[j].state == 'Enabled')):
|
|
run_flag = True
|
|
break
|
|
|
|
if(run_flag == False):
|
|
self.debug("Netscaler is not enabled and auto scale VM is applicable only for Netscaler")
|
|
else:
|
|
# Listing Network Offerings
|
|
list_nwoff_before = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
# Creating Network Offerign with LB as Netscalar
|
|
nwoff_created = NetworkOffering.create(
|
|
self.apiClient,
|
|
self.services["nw_off_isolated_netscaler"]
|
|
)
|
|
self.assertIsNotNone(
|
|
nwoff_created,
|
|
"Failed to Create Network Offering with LB sercvice for Netscaler"
|
|
)
|
|
# Enable Network offering
|
|
nwoff_created.update(self.apiClient, state='Enabled')
|
|
# Listing Network Offerings again
|
|
list_nwoff_after = NetworkOffering.list(
|
|
self.apiClient,
|
|
forvpc="false",
|
|
guestiptype="Isolated",
|
|
state="Enabled",
|
|
supportedservices="SourceNat,Lb",
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertEquals(
|
|
len(list_nwoff_before) + 1,
|
|
len(list_nwoff_after),
|
|
"Failed to create Network Offering"
|
|
)
|
|
# Creating a Network Using the Network Offering
|
|
network = Network.create(
|
|
self.userapiclient,
|
|
self.services["network"],
|
|
accountid=self.account.name,
|
|
domainid=self.domain.id,
|
|
networkofferingid=nwoff_created.id,
|
|
zoneid=self.zone.id
|
|
)
|
|
self.assertIsNotNone(
|
|
network,
|
|
"Network creation failed"
|
|
)
|
|
self.cleanup.append(network)
|
|
# self.cleanup.append(nwoff_created)
|
|
# Launching a Virtual Machine
|
|
vm_created = VirtualMachine.create(
|
|
self.userapiclient,
|
|
self.services["virtual_machine"],
|
|
accountid=self.account.name,
|
|
domainid=self.account.domainid,
|
|
networkids=network.id,
|
|
serviceofferingid=self.service_offering.id,
|
|
)
|
|
self.assertIsNotNone(
|
|
vm_created,
|
|
"Failed to launch a VM under network created"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_before = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_before)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
1,
|
|
len(list_ipaddresses_before),
|
|
"IP Addresses Association Failed while launching a VM"
|
|
)
|
|
# Associating an IP Addresses to Network created
|
|
associated_ipaddress = PublicIPAddress.create(
|
|
self.userapiclient,
|
|
services=self.services["network"],
|
|
networkid=network.id
|
|
)
|
|
self.assertIsNotNone(
|
|
associated_ipaddress,
|
|
"Failed to Associate IP Address"
|
|
)
|
|
# Listing all the IP Addresses for a user
|
|
list_ipaddresses_after = PublicIPAddress.list(
|
|
self.userapiclient,
|
|
listall=self.services["listall"]
|
|
)
|
|
status = validateList(list_ipaddresses_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"IP Addresses Association Failed"
|
|
)
|
|
# Verifying the length of the list is 1
|
|
self.assertEqual(
|
|
2,
|
|
len(list_ipaddresses_after),
|
|
"Number of IP Addresses associated are not matching expected"
|
|
)
|
|
# Listing Users
|
|
list_users = User.list(
|
|
self.apiClient,
|
|
listall=self.services["listall"],
|
|
account=self.account.name,
|
|
domainid=self.domain.id
|
|
)
|
|
status = validateList(list_users)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Users"
|
|
)
|
|
# Listing counters
|
|
list_counters = Autoscale.listCounters(self.userapiclient)
|
|
status = validateList(list_counters)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Counters"
|
|
)
|
|
# Create Condition for scaleup Vm Policy
|
|
condition_scaleup = Autoscale.createCondition(
|
|
self.userapiclient,
|
|
counterid=list_counters[0].id,
|
|
relationaloperator='GT',
|
|
threshold='40'
|
|
)
|
|
self.assertIsNotNone(
|
|
condition_scaleup,
|
|
"Failed to create Scaleup Condition"
|
|
)
|
|
# Creating scaleup Vm Policy
|
|
scaleup_policy = Autoscale.createAutoscalePolicy(
|
|
self.userapiclient,
|
|
action='scaleup',
|
|
conditionids=condition_scaleup.id,
|
|
duration='40',
|
|
quiettime='300'
|
|
)
|
|
self.assertIsNotNone(
|
|
scaleup_policy,
|
|
"Failed to create Scaleup VM Policy"
|
|
)
|
|
# Create Condition for scaledown Vm Policy
|
|
condition_scaledown = Autoscale.createCondition(
|
|
self.userapiclient,
|
|
counterid=list_counters[0].id,
|
|
relationaloperator='GT',
|
|
threshold='10'
|
|
)
|
|
self.assertIsNotNone(
|
|
condition_scaledown,
|
|
"Failed to create Scaledown Condition"
|
|
)
|
|
# Creating scaledown Vm Policy
|
|
scaledown_policy = Autoscale.createAutoscalePolicy(
|
|
self.userapiclient,
|
|
action='scaledown',
|
|
conditionids=condition_scaledown.id,
|
|
duration='40',
|
|
quiettime='300'
|
|
)
|
|
self.assertIsNotNone(
|
|
scaledown_policy,
|
|
"Failed to create Scaledown VM Policy"
|
|
)
|
|
counterparam = { "snmpcommunity": "public", "snmpport": "161"}
|
|
# Create Autoscale VM Profile
|
|
vmprofile = Autoscale.createAutoscaleVmProfile(
|
|
self.userapiclient,
|
|
serviceofferingid=self.service_offering.id,
|
|
zoneid=self.zone.id,
|
|
templateid=self.template.id,
|
|
autoscaleuserid=list_users[0].id,
|
|
destroyvmgraceperiod='30',
|
|
counterparam=counterparam
|
|
)
|
|
self.assertIsNotNone(
|
|
vmprofile,
|
|
"Failed to create Autoscale Vm Profile"
|
|
)
|
|
self.services["lbrule"]["openfirewall"] = False
|
|
# Creating Load Balancer Rule
|
|
lbrule = LoadBalancerRule.create(
|
|
self.userapiclient,
|
|
self.services["lbrule"],
|
|
ipaddressid=associated_ipaddress.ipaddress.id,
|
|
accountid=self.account.name,
|
|
networkid=network.id,
|
|
domainid=self.domain.id
|
|
)
|
|
self.assertIsNotNone(
|
|
lbrule,
|
|
"Failed to create Load Balancer Rule"
|
|
)
|
|
# Listing Autoscale VM Groups
|
|
list_vmgroup_before = Autoscale.listAutoscaleVmGroup(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
lbruleid=lbrule.id
|
|
)
|
|
# Verifying No Autoscale VM Groups are listed
|
|
self.assertIsNone(
|
|
list_vmgroup_before,
|
|
"Listed Autoscale VM Groups for newly created LB Rule"
|
|
)
|
|
# Creating Autoscale VM Group
|
|
vmgroup = Autoscale.createAutoscaleVmGroup(
|
|
self.userapiclient,
|
|
lbruleid=lbrule.id,
|
|
minmembers='3',
|
|
maxmembers='10',
|
|
scaledownpolicyids=scaledown_policy.id,
|
|
scaleuppolicyids=scaleup_policy.id,
|
|
vmprofileid=vmprofile.id,
|
|
interval='30'
|
|
)
|
|
self.assertIsNotNone(
|
|
vmgroup,
|
|
"Failed to create Autoscale VM Group"
|
|
)
|
|
# Listing Autoscale VM Groups
|
|
list_vmgroup_after = Autoscale.listAutoscaleVmGroup(
|
|
self.userapiclient,
|
|
listall=self.services["listall"],
|
|
lbruleid=lbrule.id
|
|
)
|
|
status = validateList(list_vmgroup_after)
|
|
self.assertEquals(
|
|
PASS,
|
|
status[0],
|
|
"Failed to list Autoscale VM group after creation"
|
|
)
|
|
# Verifying only 1 Autoscale VM group is listed
|
|
self.assertEquals(
|
|
1,
|
|
len(list_vmgroup_after),
|
|
"Autoscale VM group list count is not matching"
|
|
)
|
|
# Disabling Autoscale VM group
|
|
vmgroup_disabled = Autoscale.disableAutoscaleVmGroup(
|
|
self.userapiclient,
|
|
id=vmgroup.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vmgroup_disabled,
|
|
"Failed to disable Autoscale VM group"
|
|
)
|
|
# Verifyign the state of the VM Group afte renabling
|
|
self.assertEquals(
|
|
"disabled",
|
|
vmgroup_disabled.state,
|
|
"Disabled VM Group state is not matching"
|
|
)
|
|
# Updating Autoscale VM Group
|
|
vmgroup_updated = Autoscale.updateAutoscaleVMGroup(
|
|
self.userapiclient,
|
|
id=vmgroup.id,
|
|
minmembers='3',
|
|
maxmembers='10',
|
|
scaledownpolicyids=scaledown_policy.id,
|
|
scaleuppolicyids=scaleup_policy.id,
|
|
interval='40'
|
|
)
|
|
self.assertIsNotNone(
|
|
vmgroup_updated,
|
|
"Failed to update Autoscale VM group"
|
|
)
|
|
self.assertEquals(
|
|
40,
|
|
vmgroup_updated.interval,
|
|
"Updated Autoscale VM group interval value is not matching"
|
|
)
|
|
# Enabling Autoscale VM group
|
|
vmgroup_enabled = Autoscale.enableAutoscaleVmGroup(
|
|
self.userapiclient,
|
|
id=vmgroup.id
|
|
)
|
|
self.assertIsNotNone(
|
|
vmgroup_enabled,
|
|
"Failed to enable Autoscale VM group"
|
|
)
|
|
# Verifyign the state of the VM Group afte renabling
|
|
self.assertEquals(
|
|
"enabled",
|
|
vmgroup_enabled.state,
|
|
"Enabled VM Group state is not matching"
|
|
)
|
|
# Destroying the VM
|
|
vm_created.delete(self.apiClient)
|
|
self.cleanup.append(self.account)
|
|
return
|