1 :ˆl–ß=¿JJj"Tâ‚fãb¸Å£È ƒh¹Ça–Ãa¾”*j"Tâ€Á7p S�ÿÆedge ˆÅÉ ƒmÈ¾Æ í# This file is part of cloud-init. See LICENSE file for license information. import logging import platform import cloudinit.net.bsd from cloudinit import net, subp, util LOG = logging.getLogger(__name__) class Renderer(cloudinit.net.bsd.BSDRenderer): def write_config(self, target=None): for device_name, v in self.interface_configurations.items(): if_file = "etc/hostname.{}".format(device_name) fn = subp.target_path(self.target, if_file) if device_name in self.dhcp_interfaces(): content = "dhcp\n" elif isinstance(v, dict): try: content = "inet {address} {netmask}".format( address=v["address"], netmask=v["netmask"] ) except KeyError: LOG.error( "Invalid static configuration for %s", device_name ) mtu = v.get("mtu") if mtu: content += "\nmtu %d" % mtu content += "\n" + self.interface_routes util.write_file(fn, content) def start_services(self, run=False): has_dhcpleasectl = bool(int(platform.release().split(".")[0]) > 6) if not self._postcmds: LOG.debug("openbsd generate postcmd disabled") return if has_dhcpleasectl: # OpenBSD 7.0+ subp.subp(["sh", "/etc/netstart"], capture=True) for interface in self.dhcp_interfaces(): subp.subp( ["dhcpleasectl", "-w", "30", interface], capture=True ) else: net.dhcp.IscDhclient.kill_dhcp_client() subp.subp(["route", "del", "default"], capture=True, rcs=[0, 1]) subp.subp(["route", "flush", "default"], capture=True, rcs=[0, 1]) subp.subp(["sh", "/etc/netstart"], capture=True) def set_route(self, network, netmask, gateway): if network == "0.0.0.0": if_file = "etc/mygate" fn = subp.target_path(self.target, if_file) content = gateway + "\n" util.write_file(fn, content) else: self.interface_routes = ( self.interface_routes + "!route add " + network + " -netmask " + netmask + " " + gateway + "\n" ) def available(target=None): return util.is_OpenBSD() #ˆl–Ãa¾”d*j"TÚ�zã@¸Ø”Å£Ê ƒu§ŸÉ¿ÇA"""Parser for command line options. This module helps scripts to parse the command line arguments in sys.argv. It supports the same conventions as the Unix getopt() function (including the special meanings of arguments of the form `-' and `--'). Long options similar to those supported by GNU software may be used as well via an optional third argument. This module provides two functions and an exception: getopt() -- Parse command line options gnu_getopt() -- Like getopt(), but allow option and non-option arguments to be intermixed. GetoptError -- exception (class) raised with 'opt' attribute, which is the option involved with the exception. """ # Long option support added by Lars Wirzenius . # # Gerrit Holl moved the string-based exceptions # to class-based exceptions. # # Peter Ã…strand added gnu_getopt(). # # TODO for gnu_getopt(): # # - GNU getopt_long_only mechanism # - allow the caller to specify ordering # - RETURN_IN_ORDER option # - GNU extension with '-' as first character of option string # - optional arguments, specified by double colons # - an option string with a W followed by semicolon should # treat "-W foo" as "--foo" __all__ = ["GetoptError","error","getopt","gnu_getopt"] import os try: from gettext import gettext as _ except ImportError: # Bootstrapping Python: gettext's dep