3 \meT@sddlZddlZddlmZmZddljjjZddl m Z m Z mZm Z m Z ddlmZmZddlmZejeZGddde jZdS)N)ListOptional)distroshelpersnetsubputil) PackageList bsd_utils) BSDNetworkingcseZdZUeZdZdZdZddddZgZ e e  gZ e e  gZ e e  dZee e dZee e ejZfdd Zd d Zd$d d ZddZddZd%ddZddZedddZddZd&ddZddZd'dd Z e!e"d!d"d#Z#Z$S)(BSDz /etc/rc.confz root:wheelz-Hz-pz-r)ZhaltZpoweroffZrebootNcsFtj|||tj||_d|d<d|d<tjj|_t j |_ dS)NZsshdZ ssh_svcnameZrsyslogdZrsyslog_svcname) super__init__rZRunnersZ_runnerplatformsystemlowerZosfamily bsd_netops BsdNetOpsnet_ops)selfnameZcfgpaths) __class__/usr/lib/python3.6/bsd.pyr s  z BSD.__init__cCs|j|j}|j|fS)N)_read_hostnamehostname_conf_fn)rZ sys_hostnamerrr_read_system_hostname+s zBSD._read_system_hostnamecCs tjdS)Nhostname)r Zget_rc_config_value)rfilenamedefaultrrrr/szBSD._read_hostnamecCs tddS)Nz&Return list cmd to add member to group)NotImplementedError)r member_nameZ group_namerrr_get_add_member_to_group_cmd2sz BSD._get_add_member_to_group_cmdcCstjd|dddS)Nrz /etc/rc.conf)fn)r Zset_rc_config_value)rrrrrr_write_hostname5szBSD._write_hostnamecCstj|rtjd|nJ|j|g}ytj|tjd|Wn"tk r`tjtd|YnX|sjg}xp|D]h}tj |stjd||qpy$tj|j ||tjd||Wqptk rtjtd||YqpXqpWdS)Nz(Skipping creation of existing group '%s'zCreated new group %szFailed to create group %szCUnable to add group member '%s' to group '%s'; user does not exist.zAdded user '%s' to group '%s'z%Failed to add user '%s' to group '%s') rZis_groupLOGZwarninggroup_add_cmd_prefixrinfo ExceptionZlogexcZis_userr#)rrmembersZ group_add_cmdmemberrrr create_group8s.     zBSD.create_groupcCsFgdd}x6tjjD]&\}}|djd||ddigdqW|S)N)configversionr.ZphysicaltypeZdhcp)r0rZ mac_addressZsubnets)rZget_interfaces_by_macitemsappend)rZnconfZmacrrrrgenerate_fallback_configVs zBSD.generate_fallback_config)pkglistcCs|j|jd|ddS)Ninstall)pkgs)Zupdate_package_sourcespackage_command)rr4rrrinstall_packagescszBSD.install_packagescCs tddS)z?Return environment vars used in *BSD package_command operationsz(BSD subclasses return a dict of env varsN)r!)rrrr_get_pkg_cmd_environgszBSD._get_pkg_cmd_environcCs|dkr g}|dkr|j}nB|dkr,|j}n2|dkrF|js>dS|j}n|dkr^|jsXdS|j}|rxt|trx|j|n|rt|tr|j|t j d|}|j|t j ||j dddS)Nr5removeupdateZupgradez%s-%sF)envZcapture) pkg_cmd_install_prefixpkg_cmd_remove_prefixpkg_cmd_update_prefixpkg_cmd_upgrade_prefix isinstancestrr2listextendrZexpand_package_listrr9)rZcommandargsr6cmdr4rrrr7ks*    zBSD.package_commandcCstj||j|ddS)N)tzZtz_file)rZset_etc_timezoneZ _find_tz_file)rrGrrr set_timezoneszBSD.set_timezonecCstjddS)NzCannot set the locale.)r&debug)rZlocaleZout_fnrrr apply_localeszBSD.apply_locale)plist_inhashedcCs&x |D]\}}|j|||dqWdS)N)rL)Z set_passwd)rrKrLrZpasswordrrrchpasswdsz BSD.chpasswd)N)N)NN)N)%__name__ __module__ __qualname__r Znetworking_clsrZ rc_conf_fnZ default_ownerZshutdown_options_mapr'rrBr=r>r?rr@rrrrrrr#r%r,r3r r8r9r7rHrJrCboolrM __classcell__rr)rrr s0           r )ZloggingrZtypingrrZcloudinit.net.netops.bsd_netopsrZnetopsrZ cloudinitrrrrZcloudinit.distrosr r Zcloudinit.distros.networkingr Z getLoggerrNr&ZDistror rrrrs