| # 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. |
| """ test for private vlan isolation |
| """ |
| #Import Local Modules |
| import marvin |
| from marvin.cloudstackTestCase import * |
| from marvin.cloudstackAPI import * |
| from marvin.sshClient import SshClient |
| from marvin.integration.lib.utils import * |
| from marvin.integration.lib.base import * |
| from marvin.integration.lib.common import * |
| from nose.plugins.attrib import attr |
| import telnetlib |
| |
| #Import System modules |
| import time |
| _multiprocess_shared_ = True |
| |
| class TestPVLAN(cloudstackTestCase): |
| |
| zoneId = 1 |
| networkOfferingId = 7 |
| vlan = 1234 |
| isolatedpvlan = 567 |
| |
| def setUp(self): |
| self.apiClient = self.testClient.getApiClient() |
| |
| @attr(tags = ["advanced"]) |
| def test_create_pvlan_network(self): |
| self.debug("Test create pvlan network") |
| createNetworkCmd = createNetwork.createNetworkCmd() |
| createNetworkCmd.name = "pvlan network" |
| createNetworkCmd.displaytext = "pvlan network" |
| createNetworkCmd.netmask = "255.255.255.0" |
| createNetworkCmd.gateway = "10.10.10.1" |
| createNetworkCmd.startip = "10.10.10.10" |
| createNetworkCmd.gateway = "10.10.10.20" |
| createNetworkCmd.vlan = "1234" |
| createNetworkCmd.isolatedpvlan = "567" |
| createNetworkCmd.zoneid = self.zoneId |
| createNetworkCmd.networkofferingid = self.networkOfferingId |
| createNetworkResponse = self.apiClient.createNetwork(createNetworkCmd) |
| self.networkId = createNetworkResponse.id |
| self.broadcasttype = createNetworkResponse.broadcastdomaintype |
| self.broadcasturi = createNetworkResponse.broadcasturi |
| |
| self.assertIsNotNone(createNetworkResponse.id, "Network failed to create") |
| self.assertTrue(createNetworkResponse.broadcastdomaintype, "Pvlan") |
| self.assertTrue(createNetworkResponse.broadcasturi, "pvlan://1234-i567") |
| |
| self.debug("Clean up test pvlan network") |
| deleteNetworkCmd = deleteNetwork.deleteNetworkCmd() |
| deleteNetworkCmd.id = self.networkId; |
| self.apiClient.deleteNetwork(deleteNetworkCmd) |
| |
| #Test invalid parameter |
| |
| # CLOUDSTACK-2392: Should not allow create pvlan with ipv6 |
| createNetworkCmd.ip6gateway="fc00:1234::1" |
| createNetworkCmd.ip6cidr="fc00:1234::/64" |
| createNetworkCmd.startipv6="fc00:1234::10" |
| createNetworkCmd.endipv6="fc00:1234::20" |
| err = 0; |
| try: |
| createNetworkResponse = self.apiClient.createNetwork(createNetworkCmd) |
| except Exception as e: |
| err = 1; |
| self.debug("Try alloc with ipv6, got:%s" % e) |
| self.assertEqual(err, 1, "Shouldn't allow create PVLAN network with IPv6"); |
| |
| |