Пример #1
0
class verify(object):
    def __init__(self, args):
        self.args = args
        self.connections = setup_test_infra(args.testbed_file)
        self.db = None
        if args.db_file:
            self.db = TestDB(args.db_file)

    def verify_router(self):
        raise Exception('Not yet implemented')

    def get_vdns_ids(self):
        vdns = []
        if self.db:
            for fqname in self.db.list_vdns():
                vdns.append(self.db.get_vdns_id(fqname))
        return vdns

    def get_fip_pool_ids(self):
        fip_pools = []
        if self.db:
            for fqname in self.db.list_fip_pools():
                fip_pools.append(self.db.get_fip_pool_id(fqname))
        return fip_pools

    def get_tenant_fqnames(self):
        if self.args.tenant:
            return [':'.join([self.connections.inputs.domain_name, self.args.tenant])]
        if self.db:
            return self.db.list_projects()
        return []

    def get_ipam_ids(self, project_fqname):
        ipams = []
        if self.db:
            for fqname in self.db.list_ipams(project_fqname):
                ipams.append(self.db.get_ipam_id(fqname))
        return ipams

    def get_vn_ids(self, project_fqname, connections):
        if self.args.vn_name:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            assert vn_id, 'Unable to fetch ID of vn_name '+ self.args.vn_name
            return [vn_id]
        vns = []
        if self.db:
            for fqname in self.db.list_virtual_networks(project_fqname):
                vn_id  = self.db.get_virtual_network_id(fqname)
                vns.append(vn_id)
        return vns

    def get_vm_details(self, vm_name, project_fqname, connections):
        if self.args.vm_id:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            return (self.args.vm_id, [vn_id], self.args.username, self.args.password)
        if self.db:
            return self.db.get_virtual_machine(vm_name, project_fqname)
        return None

    def get_vm_names(self, project_fqname):
        if self.args.vm_id:
            return [self.args.vm_id]
        if self.db:
            return self.db.list_virtual_machines(project_fqname)
        return []

    def get_project_id(self, fqname):
        if self.db:
            return self.db.get_project_id(fqname)
        else:
            return self.connections.get_auth_h().get_project_id(fqname[-1])

    def get_fip_ids(self, vm_name, project_fqname):
        if self.db:
            return self.db.get_fip_id_assoc(vm_name, project_fqname)
        return []

    def verify(self):
        vdns_ids = self.args.vdns or self.get_vdns_ids()
        for vdns_id in vdns_ids:
            vDNS(self.connections).verify(vdns_id)

        fip_pool_ids = self.args.fip_pool_id or self.get_fip_pool_ids()
        for fip_pool in fip_pool_ids:
            FloatingIPPool(self.connections).verify(fip_pool)

        for tenant_fqname in self.get_tenant_fqnames():
            project_id = self.get_project_id(tenant_fqname)
            project_obj = Project(self.connections)
            project_obj.verify(project_id)
            connections = project_obj.get_connections()
            ipam_ids = self.args.ipam or self.get_ipam_ids(tenant_fqname)
            for ipam_id in ipam_ids:
                IPAM(connections).verify(ipam_id)

            for vn_id in self.get_vn_ids(tenant_fqname, connections):
                VN(connections).verify(vn_id)

            for vm_name in self.get_vm_names(tenant_fqname):
                (vm_id, vn_ids, username, password) = \
                        self.get_vm_details(vm_name, tenant_fqname, connections)
                vm_obj = VM(connections)
                vm_obj.verify(vm_id, vn_ids, username, password)
                if self.args.vm_id:
                    vm_name = vm_obj.fq_name()
                for fip_id in self.get_fip_ids(vm_name, tenant_fqname):
                    fip_obj = FloatingIPPool(self.connections)
                    fip_pool_id = fip_obj.get_fip_pool_id(fip_id)
                    fip_obj.verify_fip(fip_pool_id, fip_id, vm_id, vn_ids, connections)
Пример #2
0
class delete(object):
    def __init__(self, args):
        self.args = args
        self.connections = setup_test_infra(args.testbed_file)
        self.db = None
        if args.db_file:
            self.db = TestDB(args.db_file)

    def get_vdns_ids(self):
        if not self.args.delete_vdns or self.args.tenant:
            return []
        vdns = []
        if self.db:
            for fqname in self.db.list_vdns():
                vdns.append(self.db.get_vdns_id(fqname))
        return vdns

    def get_fip_pool_ids(self):
        if not self.args.delete_fip_pool or self.args.tenant:
            return []
        fip_pools = []
        if self.db:
            for fqname in self.db.list_fip_pools():
                fip_pools.append(self.db.get_fip_pool_id(fqname))
        return fip_pools

    def get_tenant_fqnames(self):
        if self.args.tenant:
            return [
                ':'.join(
                    [self.connections.inputs.domain_name, self.args.tenant])
            ]
        if self.db:
            return self.db.list_projects()
        return []

    def get_ipam_ids(self, project_fqname):
        ipams = []
        if not self.args.delete_ipam or self.args.vn_name:
            return ipams
        if self.args.ipam:
            return self.args.ipam
        if self.db:
            for fqname in self.db.list_ipams(project_fqname):
                ipams.append(self.db.get_ipam_id(fqname))
        return ipams

    def get_vn_ids(self, project_fqname, connections):
        if self.args.vm_id:
            return []
        if self.args.vn_name:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            assert vn_id, 'Unable to fetch ID of vn_name ' + self.args.vn_name
            return [vn_id]
        vns = []
        if self.db:
            for fqname in self.db.list_virtual_networks(project_fqname):
                vn_id = self.db.get_virtual_network_id(fqname)
                vns.append(vn_id)
        return vns

    def get_vm_details(self, vm_name, project_fqname, connections):
        if self.args.vm_id:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            return (self.args.vm_id, [vn_id], '', '')
        if self.db:
            return self.db.get_virtual_machine(vm_name, project_fqname)
        return None

    def get_vm_names(self, project_fqname):
        if self.args.vm_id:
            return [self.args.vm_id]
        if self.db:
            return self.db.list_virtual_machines(project_fqname)
        return []

    def get_router_ids(self, project_fqname):
        if not self.args.delete_snat or self.args.vn_name:
            return []
        if self.args.router_id:
            return [self.args.router_id]
        if self.db:
            rtr_ids = []
            for rtr in self.db.list_logical_routers():
                if project_fqname not in rtr:
                    continue
                rtr_ids.append(self.db.get_logical_router_id(rtr))
            return rtr_ids
        return []

    def get_project_id(self, fqname):
        if self.db:
            return self.db.get_project_id(fqname)
        else:
            return self.connections.get_auth_h().get_project_id(fqname[-1])

    def get_fip_ids(self, vm_name, project_fqname):
        if self.db:
            return self.db.get_fip_id_assoc(vm_name, project_fqname)
        return []

    def _delete(self, tenant_fqname, connections):

        for vm_name in self.get_vm_names(tenant_fqname):
            (vm_id, vn_ids, username, password) = \
                    self.get_vm_details(vm_name, tenant_fqname, connections)
            obj = VM(connections)
            if self.args.vm_id:
                vm_name = obj.fq_name(vm_id)
            for fip_id in self.get_fip_ids(vm_name, tenant_fqname):
                fip_obj = FloatingIPPool(self.connections)
                fip_pool_id = fip_obj.get_fip_pool_id(fip_id)
                fip = fip_obj.get_fip_from_id(fip_id)
                fip_obj.disassociate_fip(fip_pool_id, fip_id)
                fip_obj.verify_no_fip(fip_pool_id, fip_id, vm_id, fip)
                if self.db:
                    self.db.delete_fip(fip_obj.fq_name(), fip_id)
                    self.db.disassociate_fip_from_vm(vm_name, tenant_fqname,
                                                     fip_id)
            obj.delete(vm_id, vn_ids)
            if self.db:
                self.db.delete_virtual_machine(vm_name, tenant_fqname)

        for router_id in self.get_router_ids(tenant_fqname):
            router_obj = LogicalRouter(connections)
            fqname = router_obj.fq_name(router_id)
            router_obj.delete(router_id)
            if self.db:
                self.db.delete_logical_router(fqname)


#ToDo: msenthil - Link LR and VNs

        for vn_id in self.get_vn_ids(tenant_fqname, connections):
            obj = VN(connections)
            fqname = obj.fq_name(vn_id)
            obj.delete(vn_id)
            if self.db:
                self.db.delete_virtual_network(fqname)

        ipam_ids = self.get_ipam_ids(tenant_fqname)
        for ipam_id in ipam_ids:
            obj = IPAM(connections)
            fqname = obj.fq_name(ipam_id)
            obj.delete(ipam_id)
            if self.db:
                self.db.delete_ipam(fqname)

    def delete(self):
        for tenant_fqname in self.get_tenant_fqnames():
            if tenant_fqname == ':'.join(
                    self.connections.get_project_fq_name()):
                continue
            project_obj = Project(self.connections)
            project_id = self.get_project_id(tenant_fqname)
            connections = project_obj.get_connections(project_id)
            self._delete(tenant_fqname, connections)
            if not self.args.vn_name and self.args.delete_ipam:
                project_obj.delete(project_id)
                if self.db:
                    self.db.delete_project(tenant_fqname)

        fip_pool_ids = self.get_fip_pool_ids()
        for fip_pool in fip_pool_ids:
            obj = FloatingIPPool(self.connections)
            fqname = obj.fq_name(fip_pool)
            obj.delete(fip_pool)
            if self.db:
                self.db.delete_fip_pool(fqname)

        self._delete(':'.join(self.connections.get_project_fq_name()),
                     self.connections)

        vdns_ids = self.get_vdns_ids()
        for vdns_id in vdns_ids:
            obj = vDNS(self.connections)
            fqname = obj.fq_name(vdns_id)
            obj.delete(vdns_id)
            if self.db:
                self.db.delete_vdns(fqname)
Пример #3
0
class verify(object):
    def __init__(self, args):
        self.args = args
        self.connections = setup_test_infra(args.testbed_file)
        self.db = None
        if args.db_file:
            self.db = TestDB(args.db_file)

    def verify_router(self):
        raise Exception('Not yet implemented')

    def get_vdns_ids(self):
        vdns = []
        if self.db:
            for fqname in self.db.list_vdns():
                vdns.append(self.db.get_vdns_id(fqname))
        return vdns

    def get_fip_pool_ids(self):
        fip_pools = []
        if self.db:
            for fqname in self.db.list_fip_pools():
                fip_pools.append(self.db.get_fip_pool_id(fqname))
        return fip_pools

    def get_tenant_fqnames(self):
        if self.args.tenant:
            return [
                ':'.join(
                    [self.connections.inputs.domain_name, self.args.tenant])
            ]
        if self.db:
            return self.db.list_projects()
        return []

    def get_ipam_ids(self, project_fqname):
        ipams = []
        if self.db:
            for fqname in self.db.list_ipams(project_fqname):
                ipams.append(self.db.get_ipam_id(fqname))
        return ipams

    def get_vn_ids(self, project_fqname, connections):
        if self.args.vn_name:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            assert vn_id, 'Unable to fetch ID of vn_name ' + self.args.vn_name
            return [vn_id]
        vns = []
        if self.db:
            for fqname in self.db.list_virtual_networks(project_fqname):
                vn_id = self.db.get_virtual_network_id(fqname)
                vns.append(vn_id)
        return vns

    def get_vm_details(self, vm_name, project_fqname, connections):
        if self.args.vm_id:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            return (self.args.vm_id, [vn_id], self.args.username,
                    self.args.password)
        if self.db:
            return self.db.get_virtual_machine(vm_name, project_fqname)
        return None

    def get_vm_names(self, project_fqname):
        if self.args.vm_id:
            return [self.args.vm_id]
        if self.db:
            return self.db.list_virtual_machines(project_fqname)
        return []

    def get_project_id(self, fqname):
        if self.db:
            return self.db.get_project_id(fqname)
        else:
            return self.connections.get_auth_h().get_project_id(fqname[-1])

    def get_fip_ids(self, vm_name, project_fqname):
        if self.db:
            return self.db.get_fip_id_assoc(vm_name, project_fqname)
        return []

    def verify(self):
        vdns_ids = self.args.vdns or self.get_vdns_ids()
        for vdns_id in vdns_ids:
            vDNS(self.connections).verify(vdns_id)

        fip_pool_ids = self.args.fip_pool_id or self.get_fip_pool_ids()
        for fip_pool in fip_pool_ids:
            FloatingIPPool(self.connections).verify(fip_pool)

        for tenant_fqname in self.get_tenant_fqnames():
            project_id = self.get_project_id(tenant_fqname)
            project_obj = Project(self.connections)
            project_obj.verify(project_id)
            connections = project_obj.get_connections()
            ipam_ids = self.args.ipam or self.get_ipam_ids(tenant_fqname)
            for ipam_id in ipam_ids:
                IPAM(connections).verify(ipam_id)

            for vn_id in self.get_vn_ids(tenant_fqname, connections):
                VN(connections).verify(vn_id)

            for vm_name in self.get_vm_names(tenant_fqname):
                (vm_id, vn_ids, username, password) = \
                        self.get_vm_details(vm_name, tenant_fqname, connections)
                vm_obj = VM(connections)
                vm_obj.verify(vm_id, vn_ids, username, password)
                if self.args.vm_id:
                    vm_name = vm_obj.fq_name()
                for fip_id in self.get_fip_ids(vm_name, tenant_fqname):
                    fip_obj = FloatingIPPool(self.connections)
                    fip_pool_id = fip_obj.get_fip_pool_id(fip_id)
                    fip_obj.verify_fip(fip_pool_id, fip_id, vm_id, vn_ids,
                                       connections)
Пример #4
0
class delete(object):
    def __init__(self, args):
        self.args = args
        self.connections = setup_test_infra(args.testbed_file)
        self.db = None
        if args.db_file:
            self.db = TestDB(args.db_file)

    def get_vdns_ids(self):
        if not self.args.delete_vdns or self.args.tenant:
            return []
        vdns = []
        if self.db:
            for fqname in self.db.list_vdns():
                vdns.append(self.db.get_vdns_id(fqname))
        return vdns

    def get_fip_pool_ids(self):
        if not self.args.delete_fip_pool or self.args.tenant:
            return []
        fip_pools = []
        if self.db:
            for fqname in self.db.list_fip_pools():
                fip_pools.append(self.db.get_fip_pool_id(fqname))
        return fip_pools

    def get_tenant_fqnames(self):
        if self.args.tenant:
            return [':'.join([self.connections.inputs.domain_name, self.args.tenant])]
        if self.db:
            return self.db.list_projects()
        return []

    def get_ipam_ids(self, project_fqname):
        ipams = []
        if not self.args.delete_ipam or self.args.vn_name:
            return ipams
        if self.args.ipam:
            return self.args.ipam
        if self.db:
            for fqname in self.db.list_ipams(project_fqname):
                ipams.append(self.db.get_ipam_id(fqname))
        return ipams

    def get_vn_ids(self, project_fqname, connections):
        if self.args.vm_id:
            return []
        if self.args.vn_name:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            assert vn_id, 'Unable to fetch ID of vn_name '+ self.args.vn_name
            return [vn_id]
        vns = []
        if self.db:
            for fqname in self.db.list_virtual_networks(project_fqname):
                vn_id = self.db.get_virtual_network_id(fqname)
                vns.append(vn_id)
        return vns

    def get_vm_details(self, vm_name, project_fqname, connections):
        if self.args.vm_id:
            vn_id = connections.get_network_h().get_vn_id(self.args.vn_name)
            return (self.args.vm_id, [vn_id], '', '')
        if self.db:
            return self.db.get_virtual_machine(vm_name, project_fqname)
        return None

    def get_vm_names(self, project_fqname):
        if self.args.vm_id:
            return [self.args.vm_id]
        if self.db:
            return self.db.list_virtual_machines(project_fqname)
        return []

    def get_router_ids(self, project_fqname):
        if not self.args.delete_snat or self.args.vn_name:
            return []
        if self.args.router_id:
            return [self.args.router_id]
        if self.db:
            rtr_ids = []
            for rtr in self.db.list_logical_routers():
                if project_fqname not in rtr:
                    continue
                rtr_ids.append(self.db.get_logical_router_id(rtr))
            return rtr_ids
        return []

    def get_project_id(self, fqname):
        if self.db:
            return self.db.get_project_id(fqname)
        else:
            return self.connections.get_auth_h().get_project_id(fqname[-1])

    def get_fip_ids(self, vm_name, project_fqname):
        if self.db:
            return self.db.get_fip_id_assoc(vm_name, project_fqname)
        return []

    def _delete(self, tenant_fqname, connections):

        for vm_name in self.get_vm_names(tenant_fqname):
            (vm_id, vn_ids, username, password) = \
                    self.get_vm_details(vm_name, tenant_fqname, connections)
            obj = VM(connections)
            if self.args.vm_id:
                vm_name = obj.fq_name(vm_id)
            for fip_id in self.get_fip_ids(vm_name, tenant_fqname):
                fip_obj = FloatingIPPool(self.connections)
                fip_pool_id = fip_obj.get_fip_pool_id(fip_id)
                fip = fip_obj.get_fip_from_id(fip_id)
                fip_obj.disassociate_fip(fip_pool_id, fip_id)
                fip_obj.verify_no_fip(fip_pool_id, fip_id, vm_id, fip)
                if self.db:
                    self.db.delete_fip(fip_obj.fq_name(), fip_id)
                    self.db.disassociate_fip_from_vm(vm_name, tenant_fqname, fip_id)
            obj.delete(vm_id, vn_ids)
            if self.db:
                self.db.delete_virtual_machine(vm_name, tenant_fqname)

        for router_id in self.get_router_ids(tenant_fqname):
            router_obj = LogicalRouter(connections)
            fqname = router_obj.fq_name(router_id)
            router_obj.delete(router_id)
            if self.db:
                self.db.delete_logical_router(fqname)
#ToDo: msenthil - Link LR and VNs

        for vn_id in self.get_vn_ids(tenant_fqname, connections):
            obj = VN(connections)
            fqname = obj.fq_name(vn_id)
            obj.delete(vn_id)
            if self.db:
                self.db.delete_virtual_network(fqname)

        ipam_ids = self.get_ipam_ids(tenant_fqname)
        for ipam_id in ipam_ids:
            obj = IPAM(connections)
            fqname = obj.fq_name(ipam_id)
            obj.delete(ipam_id)
            if self.db:
                self.db.delete_ipam(fqname)

    def delete(self):
        for tenant_fqname in self.get_tenant_fqnames():
            if tenant_fqname == ':'.join(self.connections.get_project_fq_name()):
                continue
            project_obj = Project(self.connections)
            project_id = self.get_project_id(tenant_fqname)
            connections = project_obj.get_connections(project_id)
            self._delete(tenant_fqname, connections)
            if not self.args.vn_name and self.args.delete_ipam:
                project_obj.delete(project_id)
                if self.db:
                    self.db.delete_project(tenant_fqname)

        fip_pool_ids = self.get_fip_pool_ids()
        for fip_pool in fip_pool_ids:
            obj = FloatingIPPool(self.connections)
            fqname = obj.fq_name(fip_pool)
            obj.delete(fip_pool)
            if self.db:
                self.db.delete_fip_pool(fqname)

        self._delete(':'.join(self.connections.get_project_fq_name()),
                     self.connections)

        vdns_ids = self.get_vdns_ids()
        for vdns_id in vdns_ids:
            obj = vDNS(self.connections)
            fqname = obj.fq_name(vdns_id)
            obj.delete(vdns_id)
            if self.db:
                self.db.delete_vdns(fqname)