Home › Forums › FABRIC General Questions and Discussion › Unable to allocate IP addresses to nodes – “No Management IP”
- This topic has 6 replies, 2 voices, and was last updated 1 hour, 22 minutes ago by
Geoff Twardokus.
-
AuthorPosts
-
November 4, 2025 at 2:13 pm #9142
I am having a problem allocating IP addresses to nodes within my FABRIC networks. Specifically, when I try to assign an available IP address to a node, I get an error like “Node client has no valid management IP” where “client” is the name of my node. However, from the slice configuration, I can see the node in question does indeed have an assigned management IP.
I have repeatedly tried deleting and re-provisioning my slice, but the issue is consistent. I’m a bit stumped because I’ve used identical code in the past and never encountered this issue.
November 4, 2025 at 3:10 pm #9144Hi Geoff,
Just to confirm my understanding — your slice is in StableOK state, and the nodes display IP addresses as shown in your screenshot, but
node.executeis failing with a “no management IP” error. Is that correct?Could you please share your Slice ID here?
Thanks,
KomalNovember 4, 2025 at 3:15 pm #9146Yes, my slice (8f95cc97-45de-4e5f-97d1-ced2b331936c) is in StableOK state. It is not
node.executethat is failing, it is this bit when I try to assign an IP address to the node:client_net = slice.get_network(name=”client-net”)
client_net_avail_ips = client_net.get_available_ips()
client_interface = client_node.get_interface(network_name=”client-net”)
client_interface.ip_addr_add(addr=client_net_avail_ips.pop(0), subnet=client_net.get_subnet())The last line above produces the below, ending with “Exception: Node client has no valid management IP.”
————————————————————————–Exception Traceback (most recent call last) Cell In[7], line 4 2 client_net_avail_ips = client_net.get_available_ips() 3 client_interface = client_node.get_interface(network_name="client-net") ----> 4 client_interface.ip_addr_add(addr=client_net_avail_ips.pop(0), subnet=client_net.get_subnet()) File /opt/conda/lib/python3.11/site-packages/fabrictestbed_extensions/fablib/interface.py:575, in Interface.ip_addr_add(self, addr, subnet) 566 def ip_addr_add(self, addr, subnet): 567 """ 568 Add an IP address to the interface in the node. 569 (...) 573 :type subnet: IPv4Network or IPv4Network 574 """ --> 575 self.get_node().ip_addr_add(addr, subnet, self) File /opt/conda/lib/python3.11/site-packages/fabrictestbed_extensions/fablib/node.py:2559, in Node.ip_addr_add(self, addr, subnet, interface) 2557 except Exception as e: 2558 logging.warning(f"Failed to add addr: {e}") -> 2559 raise e File /opt/conda/lib/python3.11/site-packages/fabrictestbed_extensions/fablib/node.py:2553, in Node.ip_addr_add(self, addr, subnet, interface) 2550 ip_command = "sudo ip" 2552 try: -> 2553 self.execute( 2554 f"{ip_command} addr add {addr}/{subnet.prefixlen} dev {interface.get_device_name()} ", 2555 quiet=True, 2556 ) 2557 except Exception as e: 2558 logging.warning(f"Failed to add addr: {e}") File /opt/conda/lib/python3.11/site-packages/fabrictestbed_extensions/fablib/node.py:1520, in Node.execute(self, command, retry, retry_interval, username, private_key_file, private_key_passphrase, quiet, read_timeout, timeout, output_file, display) 1518 management_ip = self.get_management_ip() 1519 if not management_ip: -> 1520 raise Exception(f"Node {self.get_name()} has no valid management IP.") 1522 # Ensure the node is active 1523 if self.get_reservation_state() != "Active": Exception: Node client has no valid management IP.
November 4, 2025 at 3:30 pm #9147Hi Geoff,
This appears to be a bug in fablib. As a workaround, could you please modify the call as follows?
client_interface = client_node.get_interface(network_name="client-net", refresh=True)This change should prevent the error from occurring. I’ll work on fixing this issue in fablib.
Best,
KomalNovember 4, 2025 at 6:01 pm #9148Hi Komal – I tried your fix, but I’m unfortunately getting the same error (I deleted and rebuilt the slice just to make sure it was carrying over from before).
Do you have any other suggestions in the meantime?
November 4, 2025 at 6:01 pm #9149Sorry, to make sure it *wasn’t* carrying over from before.
November 4, 2025 at 6:25 pm #9150I figured it out! It turns out that when I did this:
client_node = slice.add_node(name=”client”, site=site1, image=’default_ubuntu_22′)
And then later did this:
client_interface = client_node.get_interface(network_name=”client-net”, refresh=True)
It had not updated the client node with the IP information from the slice. I needed to reload that node variable before I tried messing with the network interfaces:
client_node = slice.get_node(name=”client”)
client_net = slice.get_network(name=”client-net”)
client_interface = client_node.get_interface(network_name=”client-net”, refresh=True)
client_addr = client_net_avail_ips.pop(0)
client_interface.ip_addr_add(addr=client_addr, subnet=client_net.get_subnet())Once I added this line, the problem disappeared. So, I guess it’s not a bug in fablib, although it would probably be helpful if there was some warning or something in the documentation about this.
Thanks!
-
AuthorPosts
- You must be logged in to reply to this topic.