def __init__(self, cidr, connections=None): self.connections = connections self.inputs = connections.inputs self.logger = self.inputs.logger self.cidr = cidr self.vpc_id = None self.ec2_base = EC2Base(logger=self.logger, inputs=self.inputs) self.openstack_ip = self.inputs.openstack_ip self.os_username = self.inputs.host_data[self.openstack_ip]['username'] self.os_password = self.inputs.host_data[self.openstack_ip]['password'] self.acl_association = False self.acl_association_id = None self.tenant_id = None self.project_connections = None
def test_route_using_gateway(self): self.vpc1_cidr = '10.2.5.0/24' self.vpc1_vn1_cidr = '10.2.5.0/25' self.vpc1_vn2_cidr = '10.2.5.128/25' self.vpc2_cidr = '10.2.50.0/24' self.vpc2_vn1_cidr = '10.2.50.0/25' self.vpc1_fixture = self.useFixture( VPCFixture(self.vpc1_cidr, connections=self.connections)) assert self.vpc1_fixture.verify_on_setup() vpc1_fixture = self.vpc1_fixture vpc1_id = vpc1_fixture.vpc_id public_vn_subnet = self.inputs.fip_pool public_ip_to_ping = '8.8.8.8' public_vn_rt = self.inputs.mx_rt self.vpc1_vn1_fixture = self.useFixture( VPCVNFixture(self.vpc1_fixture, subnet_cidr=self.vpc1_vn1_cidr, connections=self.connections)) assert self.vpc1_vn1_fixture.verify_on_setup() vpc1_vn1_fixture = self.vpc1_vn1_fixture self.vpc1_vn1_vm1_fixture = self.useFixture( VPCVMFixture(self.vpc1_vn1_fixture, image_name='ubuntu', connections=self.connections)) assert self.vpc1_vn1_vm1_fixture.verify_on_setup() self.vpc1_vn1_vm1_fixture.c_vm_fixture.wait_till_vm_is_up() vm1_fixture = self.vpc1_vn1_vm1_fixture result = True # Just Read the existing vpc as a fixture vpc1_contrail_fixture = self.useFixture( ProjectFixture(project_name=vpc1_id, username=self.admin_inputs.stack_user, password=self.admin_inputs.stack_password, connections=self.connections)) vpc1_contrail_fixture.get_project_connections() public_vn_fixture = self.public_vn_obj.public_vn_fixture assert public_vn_fixture.verify_on_setup(),\ "Public VN Fixture verification failed, Check logs" # Assign floating IP. Internet GW is just dummy ec2_base = EC2Base(logger=self.inputs.logger, inputs=self.inputs, tenant=vpc1_id) vpc_fip_fixture = self.useFixture( VPCFIPFixture(public_vn_obj=self.public_vn_obj, connections=self.connections, ec2_base=ec2_base)) assert vpc_fip_fixture.verify_on_setup( ), "FIP pool verification failed, Pls check logs" (fip, fip_alloc_id) = vpc_fip_fixture.create_and_assoc_fip( vm1_fixture.instance_id) if fip is None or fip_alloc_id is None: self.logger.error('FIP creation and/or association failed! ') result = result and False if result: self.addCleanup(vpc_fip_fixture.disassoc_and_delete_fip, fip_alloc_id, fip) # Create Internet gateway gw_id = vpc1_fixture.create_gateway() self.addCleanup(vpc1_fixture.delete_gateway, gw_id) # Create Route table rtb_id = vpc1_fixture.create_route_table() self.addCleanup(vpc1_fixture.delete_route_table, rtb_id) assert vpc1_fixture.verify_route_table(rtb_id),\ "Verification of Routetable %s failed!" % (rtb_id) # Associate route table with subnet subnet_id = vpc1_vn1_fixture.subnet_id assoc_id = vpc1_fixture.associate_route_table(rtb_id, subnet_id) if not assoc_id: self.logger.error('Association of Subnet %s with RTB %s failed' % (subnet_id, rtb_id)) return False # end if self.addCleanup(vpc1_fixture.disassociate_route_table, assoc_id) # Add route prefix = '0.0.0.0/0' c_result = vpc1_fixture.create_route(prefix, rtb_id, gw_id=gw_id) if not c_result: self.logger.error('Unable to create default route in RTB %s with \ gateway %s ' % (rtb_id, gw_id)) return False self.addCleanup(vpc1_fixture.delete_route, rtb_id, prefix) # No need to check if this route is installed in agent c_vm1_fixture = vm1_fixture.c_vm_fixture if not c_vm1_fixture.ping_with_certainty(public_ip_to_ping, expectation=True): self.logger.error('Ping to Public IP %s failed!' % (public_ip_to_ping)) result = result and False return result
def test_allocate_floating_ip(self): """Allocate a floating IP""" result = True cidr = '10.2.3.0/24' floatingIpCidr = self.inputs.fip_pool pool_name = 'pool1' self.vpc1_cidr = '10.2.5.0/24' self.vpc1_vn1_cidr = '10.2.5.0/25' self.vpc1_fixture = self.useFixture( VPCFixture(self.vpc1_cidr, connections=self.connections)) assert self.vpc1_fixture.verify_on_setup() vpc_fixture = self.vpc1_fixture assert vpc_fixture.verify_on_setup(), " VPC %s verification failed" % ( cidr) self.logger.info( 'Adding rules to default SG of %s to reach public vm' % (vpc_fixture.vpc_id)) default_sg_name = 'default' rule1 = { 'protocol': 'icmp', 'direction': 'ingress', 'cidr': floatingIpCidr, } rule2 = { 'protocol': 'icmp', 'direction': 'egress', 'cidr': floatingIpCidr, } default_sg_id = vpc_fixture.get_security_group_id(default_sg_name) if not (self.createSgRule(vpc_fixture, default_sg_id, rule1) and self.createSgRule(vpc_fixture, default_sg_id, rule2)): self.logger.error('Unable to create allow in SG %s ' % (default_sg_name)) result = result and False # create public VN for floating ip pool ec2_base = EC2Base(logger=self.inputs.logger, inputs=self.admin_inputs, tenant=self.inputs.project_name) public_vn_fixture = self.public_vn_obj.public_vn_fixture assert public_vn_fixture.verify_on_setup(),\ "Public VN Fixture verification failed, Check logs" # Assign floating IP. Internet GW is just dummy ec2_base = EC2Base(logger=self.inputs.logger, inputs=self.inputs, tenant=vpc_fixture.vpc_id) vpc_fip_fixture = self.useFixture( VPCFIPFixture(public_vn_obj=self.public_vn_obj, connections=self.connections, ec2_base=ec2_base)) assert vpc_fip_fixture.verify_on_setup( ), "FIP pool verification failed, Pls check logs" # Add rules in public VM's SG to reach the private VM" self.set_sec_group_for_allow_all(self.inputs.stack_tenant, 'default') fip_vm_fixture = self.useFixture( VMFixture(connections=self.admin_connections, vn_obj=public_vn_fixture.obj, vm_name='fip_vm1')) assert fip_vm_fixture.verify_on_setup( ), "VM verification in FIP VN failed" assert fip_vm_fixture.wait_till_vm_is_up(),\ "VM verification in FIP VN failed" self.vpc1_vn1_fixture = self.useFixture( VPCVNFixture(self.vpc1_fixture, subnet_cidr=self.vpc1_vn1_cidr, connections=self.connections)) assert self.vpc1_vn1_fixture.verify_on_setup() self.vpc1_vn1_vm1_fixture = self.useFixture( VPCVMFixture(self.vpc1_vn1_fixture, image_name='ubuntu', connections=self.connections)) assert self.vpc1_vn1_vm1_fixture.verify_on_setup() self.vpc1_vn1_vm1_fixture.c_vm_fixture.wait_till_vm_is_up() vm1_fixture = self.vpc1_vn1_vm1_fixture assert vm1_fixture.verify_on_setup(), "VPCVMFixture verification failed " \ "for VM %s" % (vm1_fixture.instance_id) assert vm1_fixture.wait_till_vm_is_up(),\ "VM verification failed" (fip, fip_alloc_id) = vpc_fip_fixture.create_and_assoc_fip( vm1_fixture.instance_id) if fip is None or fip_alloc_id is None: self.logger.error('FIP creation and/or association failed! ') result = result and False if result: self.addCleanup(vpc_fip_fixture.disassoc_and_delete_fip, fip_alloc_id, fip) assert vpc_fip_fixture.verify_fip( fip), " FIP %s, %s verification failed" % (fip, fip_alloc_id) assert vm1_fixture.c_vm_fixture.ping_with_certainty( fip_vm_fixture.vm_ip), "Ping from FIP IP failed" assert fip_vm_fixture.ping_with_certainty( fip), "Ping to FIP IP failed" return result
def test_allocate_floating_ip(self): """Allocate a floating IP 1.Create an FIP pool for VN -public under admin and launch an instance 2.Launch instance under VPC 3.Associate FIP to thie instance 4.Ping test to and from FIP """ self.res.verify_common_objects() result = True cidr = '10.2.3.0/24' floatingIpCidr = '10.2.60.0/24' pool_name = 'pool1' vpc_fixture = self.res.vpc1_fixture assert vpc_fixture.verify_on_setup(), " VPC %s verification failed" % ( cidr) self.logger.info( 'Adding rules to default SG of %s to reach public vm' % (vpc_fixture.vpc_id)) default_sg_name = 'default' rule1 = { 'protocol': 'icmp', 'direction': 'ingress', 'cidr': floatingIpCidr, } rule2 = { 'protocol': 'icmp', 'direction': 'egress', 'cidr': floatingIpCidr, } default_sg_id = vpc_fixture.get_security_group_id(default_sg_name) if not (self.createSgRule(vpc_fixture, default_sg_id, rule1) and self.createSgRule(vpc_fixture, default_sg_id, rule2)): self.logger.error('Unable to create allow in SG %s ' % (default_sg_name)) result = result and False # create public VN for floating ip pool ec2_base = EC2Base(logger=self.inputs.logger, inputs=self.inputs, tenant=self.inputs.project_name) fip_vn_fixture = self.useFixture( VNFixture(connections=self.connections, inputs=self.inputs, vn_name='public', subnets=[floatingIpCidr])) # Add rules in public VM's SG to reach the private VM" self.set_sec_group_for_allow_all('admin', 'default') assert fip_vn_fixture.verify_on_setup( ), "FIP VN Fixture verification failed, Check logs" fip_vm_fixture = self.useFixture( VMFixture(connections=self.connections, vn_obj=fip_vn_fixture.obj, vm_name='fip_vm1')) assert fip_vm_fixture.verify_on_setup( ), "VM verification in FIP VN failed" assert fip_vm_fixture.wait_till_vm_is_up(),\ "VM verification in FIP VN failed" vm1_fixture = self.res.vpc1_vn1_vm1_fixture assert vm1_fixture.verify_on_setup(), "VPCVMFixture verification failed " \ "for VM %s" % (vm1_fixture.instance_id) assert vm1_fixture.wait_till_vm_is_up(),\ "VM verification failed" fip_fixture = self.useFixture( VPCFIPFixture(fip_vn_fixture=fip_vn_fixture, connections=self.connections, pool_name=pool_name, ec2_base=ec2_base)) assert fip_fixture.verify_on_setup( ), "FIP pool verification failed, Pls check logs" (fip, fip_alloc_id) = fip_fixture.create_and_assoc_fip( vm1_fixture.instance_id) if fip is None or fip_alloc_id is None: self.logger.error('FIP creation and/or association failed! ') result = result and False if result: self.addCleanup(fip_fixture.disassoc_and_delete_fip, fip_alloc_id, fip) assert fip_fixture.verify_fip( fip), " FIP %s, %s verification failed" % (fip, fip_alloc_id) assert vm1_fixture.c_vm_fixture.ping_with_certainty( fip_vm_fixture.vm_ip), "Ping from FIP IP failed" assert fip_vm_fixture.ping_with_certainty( fip), "Ping to FIP IP failed" return result