Esempio n. 1
0
    def setup_bms(self, interfaces=None):
        interfaces = interfaces or self.interfaces
        self.bms_created = True
        if len(interfaces) > 1:
            self._interface = self.create_bonding(interfaces)
        else:
            host_mac = interfaces[0]['host_mac']
            self._interface = get_intf_name_from_mac(self.mgmt_ip,
                                                     host_mac,
                                                     username=self.username,
                                                     password=self.password)
            self.logger.info('BMS interface: %s' % self._interface)
        self.run('ip link set dev %s up' % (self._interface))
        if self.vlan_id:
            self.run('vconfig add %s %s' % (self._interface, self.vlan_id))
            self.run('ip link set dev %s.%s up' %
                     (self._interface, self.vlan_id))
        pvlanintf = '%s.%s'%(self._interface, self.vlan_id) if self.vlan_id\
                    else self._interface
        self.run('ip link set dev %s up' % pvlanintf)
        self.mvlanintf = '%s-%s' % (
            pvlanintf, get_random_string(2, chars=string.ascii_letters))
        self.logger.info('BMS mvlanintf: %s' % self.mvlanintf)
        macaddr = 'address %s' % self.bms_mac if self.bms_mac else ''
        self.run('ip link add %s link %s %s type macvlan mode bridge' %
                 (self.mvlanintf, pvlanintf, macaddr))

        self.run('ip netns add %s' % self.namespace)
        self.run('ip link set netns %s %s' % (self.namespace, self.mvlanintf))
        self.run_namespace('ip link set dev %s up' % self.mvlanintf)
Esempio n. 2
0
    def setup_bms(self, interfaces=None):
        interfaces = interfaces or self.interfaces
        self.bms_created = True
        if len(interfaces) > 1:
            self._interface = self.create_bonding(interfaces)
        else:
            host_mac = interfaces[0]['host_mac']
            self._interface = get_intf_name_from_mac(self.mgmt_ip,
                                               host_mac,
                                               username=self.username,
                                               password=self.password)
            self.logger.info('BMS interface: %s' % self._interface)
        self.run('ip link set dev %s up'%(self._interface))
        if self.vlan_id:
            # self.run('vconfig add %s %s'%(self._interface, self.vlan_id))
            # Removing the dependency on vconfig
            self.run('ip link add link {ifc} name {ifc}.{vlan} type vlan id '
                     '{vlan}'.format (ifc=self._interface, vlan=self.vlan_id))
            self.run('ip link set dev %s.%s up'%(self._interface, self.vlan_id))
        pvlanintf = '%s.%s'%(self._interface, self.vlan_id) if self.vlan_id\
                    else self._interface
        self.run('ip link set dev %s up'%pvlanintf)
        mvlanintf = '%s-%s'%(pvlanintf,
            get_random_string(2, chars=string.ascii_letters))
        # Truncate the interface name length to 15 char due to linux limitation
        self.mvlanintf = mvlanintf[-15:]
        self.logger.info('BMS mvlanintf: %s' % self.mvlanintf)
        macaddr = 'address %s'%self.bms_mac if self.bms_mac else ''
        self.run('ip link add %s link %s %s type macvlan mode bridge'%(
                 self.mvlanintf, pvlanintf, macaddr))

        self.run('ip netns add %s'%self.namespace)
        self.run('ip link set netns %s %s'%(self.namespace, self.mvlanintf))
        self.run_namespace('ip link set dev %s up'%self.mvlanintf)
Esempio n. 3
0
 def create_netns(self, bms_node, namespace, cidr):
     bms_data = self.inputs.bms_data[bms_node]
     server_ip = bms_data['mgmt_ip']
     username = bms_data['username']
     password = bms_data['password']
     intf = bms_data['interfaces'][0]
     mac = intf['host_mac']
     gw_ip = get_an_ip(cidr, offset=1)
     bms_ip = get_an_ip(cidr, offset=2)
     mask = cidr.split('/')[1]
     interface = get_intf_name_from_mac(server_ip,
                                        mac,
                                        username=username,
                                        password=password)
     create_netns(server_ip,
                  username,
                  password,
                  namespace,
                  interface,
                  address=bms_ip,
                  gateway=gw_ip,
                  mask=mask)
     self.addCleanup(delete_netns, server_ip, username, password, namespace)
     prouter = self.get_associated_prouters(bms_node, [intf])[0]
     prouter.configure_interface(intf['tor_port'], gw_ip, mask)
     self.addCleanup(prouter.delete_interface, intf['tor_port'])
Esempio n. 4
0
    def setup_bms(self):
        self.bms_created = True
        if len(self.interfaces) > 1:
            self._interface = self.create_bonding()
        else:
            host_mac = self.interfaces[0]['host_mac']
            self._interface = get_intf_name_from_mac(self.mgmt_ip,
                                                     host_mac,
                                                     username=self.username,
                                                     password=self.password)
            self.logger.info('BMS interface: %s' % self._interface)
        if self.vlan_id:
            self.run('vconfig add %s %s' % (self._interface, self.vlan_id))
            self.run('ip link set %s.%s up' % (self._interface, self.vlan_id))
        pvlanintf = '%s.%s'%(self._interface, self.vlan_id) if self.vlan_id\
                    else self._interface
        self.run('ip link set dev %s up' % pvlanintf)
        self.mvlanintf = '%s-mv%s' % (pvlanintf, get_random_string(4))
        self.logger.info('BMS mvlanintf: %s' % self.mvlanintf)
        macaddr = 'address %s' % self.bms_mac if self.bms_mac else ''
        self.run('ip link add %s link %s %s type macvlan mode bridge' %
                 (self.mvlanintf, pvlanintf, macaddr))
        self.run('ip netns add %s' % self.namespace)
        self.run('ip link set netns %s %s' % (self.namespace, self.mvlanintf))
        self.run_namespace('ip link set dev %s up' % self.mvlanintf)

        if self.static_ip:
            addr = self.bms_ip + '/' + str(self.bms_ip_netmask)
            self.run_namespace('ip addr add %s dev %s' %
                               (addr, self.mvlanintf))
            if self.bms_gw_ip is not None:
                self.run_namespace('ip route add default via %s' %
                                   (self.bms_gw_ip))
Esempio n. 5
0
 def delete_bonding(self, interfaces=None):
     for interface in interfaces or self.interfaces:
         physical_intf = get_intf_name_from_mac(self.mgmt_ip,
                                                interface['host_mac'],
                                                username=self.username,
                                                password=self.password)
         self.run('ip link set %s down' % (physical_intf))
         self.run('ip link set %s nomaster' % (physical_intf))
     self.run('ip link delete %s' % self.bond_name)
Esempio n. 6
0
 def create_bonding(self):
     self.delete_bonding()
     bond_intf = 'bond0'
     self.run('ip link add %s type bond mode 802.3ad' % bond_intf)
     for interface in self.interfaces:
         physical_intf = get_intf_name_from_mac(self.mgmt_ip,
                                                interface['host_mac'],
                                                username=self.username,
                                                password=self.password)
         self.run('ip link set %s master %s' % (physical_intf, bond_intf))
     return bond_intf
Esempio n. 7
0
 def add_remove_interface_from_bonding(self, interfaces, remove=False):
     for interface in interfaces:
        physical_intf = get_intf_name_from_mac(self.mgmt_ip,
                                               interface['host_mac'],
                                               username=self.username,
                                               password=self.password)
        if remove:
            self.run('ip link set %s down'%(physical_intf))
            self.run('ip link set %s nomaster'%(physical_intf))
        else:
            self.run('ip link set %s down'%(physical_intf))
            self.run('ip link set %s master %s'%(physical_intf, self.bond_name))
            self.run('ip link set %s up'%(physical_intf))
Esempio n. 8
0
 def setup_bms(self):
     self.bms_created = True
     if len(self.interfaces) > 1:
         interface = self.create_bonding()
     else:
         host_mac = self.interfaces[0]['host_mac']
         interface = get_intf_name_from_mac(self.mgmt_ip,
                                            host_mac,
                                            username=self.username,
                                            password=self.password)
     if self.vlan_id:
         self.run('vconfig add %s %s' % (interface, self.vlan_id))
     pvlanintf = '%s.%s'(interface, self.vlan_id) if self.vlan_id\
                 else interface
     self.mvlanintf = '%s-mv%s' % (pvlanintf, get_random_string(4))
     macaddr = 'address %s' % self.bms_mac if self.bms_mac else ''
     self.run('ip link add %s link %s %s type macvlan mode bridge' %
              (self.mvlanintf, pvlanintf, macaddr))
     self.run('ip netns add %s' % self.namespace)
     self.run('ip link set netns %s %s' % (self.namespace, self.mvlanintf))
     self.run_namespace('ip link set dev %s up' % self.mvlanintf)