def set_address(self, ipv4_address, prefix): ifaddr = "%s/%s" % (ipv4_address, prefix) console_log.info("Set %s (%s) up" % (self.name, ifaddr)) if self.ipv4_address != ipv4_address: node_admin.unmanage_network(self.device, self.mac_address) AgentShell.try_run( ['/sbin/ip', 'link', 'set', 'dev', self.name, 'up']) AgentShell.try_run( ['/sbin/ip', 'addr', 'add', ifaddr, 'dev', self.name]) # The link address change is asynchronous, so we need to wait for the # address to stick of we have a race condition. timeout = 30 while self.ipv4_address != ipv4_address and timeout != 0: self.refresh() time.sleep(1) timeout -= 1 if self.ipv4_address != ipv4_address: raise RuntimeError( 'Unable to set the address %s for interface %s' % (self.ipv4_address, self.name)) node_admin.write_ifcfg(self.device, self.mac_address, self.ipv4_address, self.ipv4_netmask) else: console_log.info("Nothing to do as %s already has address %s" % (self.name, ifaddr))
def set_address(self, ipv4_address, prefix): ifaddr = "%s/%s" % (ipv4_address, prefix) if not ipv4_address or not prefix: console_log.info( "Set {} called with invalid parameters: {}".format(self.name, ifaddr) ) return console_log.info("Set %s (%s) up" % (self.name, ifaddr)) if self.ipv4_address != ipv4_address: node_admin.unmanage_network(self.device, self.mac_address) AgentShell.try_run(["/sbin/ip", "link", "set", "dev", self.name, "up"]) AgentShell.try_run(["/sbin/ip", "addr", "add", ifaddr, "dev", self.name]) # The link address change is asynchronous, so we need to wait for the # address to stick of we have a race condition. timeout = 30 while self.ipv4_address != ipv4_address and timeout != 0: self.refresh() time.sleep(1) timeout -= 1 if self.ipv4_address != ipv4_address: raise RuntimeError( "Unable to set the address %s for interface %s" % (self.ipv4_address, self.name) ) node_admin.write_ifcfg( self.device, self.mac_address, self.ipv4_address, self.ipv4_netmask ) else: console_log.info( "Nothing to do as %s already has address %s" % (self.name, ifaddr) )