Source code for adi_lg_plugins.resources.tftpserver
import socket
import attr
from labgrid.factory import target_factory
from labgrid.resource.common import Resource
[docs]
@target_factory.reg_resource
@attr.s(eq=False)
class TFTPServerResource(Resource):
"""Resource to configure or discover the TFTP server address."""
address = attr.ib(default="auto", validator=attr.validators.instance_of(str))
port = attr.ib(default=3069, validator=attr.validators.instance_of(int))
root = attr.ib(default="/var/lib/tftpboot", validator=attr.validators.instance_of(str))
[docs]
def get_ip(self):
"""Returns the configured IP or discovers it if set to 'auto'."""
if self.address and self.address != "auto":
return self.address
# Auto-discovery logic (formerly get_local_ip)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# using Google's DNS server to determine local IP, no data sent
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
except Exception:
return "127.0.0.1"