| # 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. |
| """ Tests for Network ACLs in VPC |
| """ |
| #Import Local Modules |
| from marvin.cloudstackTestCase import * |
| from marvin.cloudstackAPI import * |
| from marvin.integration.lib.utils import * |
| from marvin.integration.lib.base import * |
| from marvin.integration.lib.common import * |
| |
| |
| class TestNetworkACL(cloudstackTestCase): |
| networkOfferingId = 11 |
| networkId = None |
| vmId = None |
| vpcId = None |
| aclId = None |
| |
| zoneId = 1 |
| serviceOfferingId = 1 |
| templateId = 5 |
| |
| def setUp(self): |
| self.apiClient = self.testClient.getApiClient() |
| |
| |
| |
| def test_networkAcl(self): |
| |
| # 1) Create VPC |
| self.createVPC() |
| |
| # 2) Create ACl |
| self.createACL() |
| |
| # 3) Create ACl Item |
| self.createACLItem() |
| |
| # 4) Create network with ACL |
| self.createNetwork() |
| # 5) Deploy a vm |
| self.deployVm() |
| |
| def createACL(self): |
| createAclCmd = createNetworkACLList.createNetworkACLListCmd() |
| createAclCmd.name = "acl1" |
| createAclCmd.description = "new acl" |
| createAclCmd.vpcId = TestNetworkACL.vpcId |
| createAclResponse = self.apiClient.createNetworkACLList(createAclCmd) |
| TestNetworkACL.aclId = createAclResponse.id |
| |
| def createACLItem(self): |
| createAclItemCmd = createNetworkACL.createNetworkACLCmd() |
| createAclItemCmd.cidr = "0.0.0.0/0" |
| createAclItemCmd.protocol = "TCP" |
| createAclItemCmd.number = "10" |
| createAclItemCmd.action = "Deny" |
| createAclItemCmd.aclId = TestNetworkACL.aclId |
| createAclItemResponse = self.apiClient.createNetworkACL(createAclItemCmd) |
| self.assertIsNotNone(createAclItemResponse.id, "Network failed to aclItem") |
| |
| def createVPC(self): |
| createVPCCmd = createVPC.createVPCCmd() |
| createVPCCmd.name = "new vpc" |
| createVPCCmd.cidr = "10.1.1.0/24" |
| createVPCCmd.displaytext = "new vpc" |
| createVPCCmd.vpcofferingid = 1 |
| createVPCCmd.zoneid = self.zoneId |
| createVPCResponse = self.apiClient.createVPC(createVPCCmd) |
| TestNetworkACL.vpcId = createVPCResponse.id |
| |
| |
| def createNetwork(self): |
| createNetworkCmd = createNetwork.createNetworkCmd() |
| createNetworkCmd.name = "vpc network" |
| createNetworkCmd.displaytext = "vpc network" |
| createNetworkCmd.netmask = "255.255.255.0" |
| createNetworkCmd.gateway = "10.1.1.1" |
| createNetworkCmd.zoneid = self.zoneId |
| createNetworkCmd.vpcid = TestNetworkACL.vpcId |
| createNetworkCmd.networkofferingid = TestNetworkACL.networkOfferingId |
| createNetworkCmd.aclId = TestNetworkACL.aclId |
| createNetworkResponse = self.apiClient.createNetwork(createNetworkCmd) |
| TestNetworkACL.networkId = createNetworkResponse.id |
| |
| self.assertIsNotNone(createNetworkResponse.id, "Network failed to create") |
| |
| def deployVm(self): |
| deployVirtualMachineCmd = deployVirtualMachine.deployVirtualMachineCmd() |
| deployVirtualMachineCmd.networkids = TestNetworkACL.networkId |
| deployVirtualMachineCmd.serviceofferingid = TestNetworkACL.serviceOfferingId |
| deployVirtualMachineCmd.zoneid = TestNetworkACL.zoneId |
| deployVirtualMachineCmd.templateid = TestNetworkACL.templateId |
| deployVirtualMachineCmd.hypervisor = "XenServer" |
| deployVMResponse = self.apiClient.deployVirtualMachine(deployVirtualMachineCmd) |
| TestNetworkACL.vmId = deployVMResponse.id |
| |
| def tearDown(self): |
| #destroy the vm |
| if TestNetworkACL.vmId is not None: |
| destroyVirtualMachineCmd = destroyVirtualMachine.destroyVirtualMachineCmd() |
| destroyVirtualMachineCmd.id = TestNetworkACL.vmId |
| destroyVirtualMachineResponse = self.apiClient.destroyVirtualMachine(destroyVirtualMachineCmd) |