܍~c UdZddlZddlmZddlmZddlmZmZmZddl m Z ddl m Z ddl mZdd lmZdd lmZd Zd d deegeggdZeed<dZejeZdZdede de dededdf dZdZdZdZdZ dZ!dZ"d Z#dS)!zURefresh IPv6 interface and RMC: Ensure Network Manager is not managing IPv6 interfaceN)Logger)log)netinfosubputil)Cloud)Config) MetaSchema) ALL_DISTROS) PER_ALWAYSaThis module is IBM PowerVM Hypervisor specific Reliable Scalable Cluster Technology (RSCT) is a set of software components that together provide a comprehensive clustering environment(RAS features) for IBM PowerVM based virtual machines. RSCT includes the Resource Monitoring and Control (RMC) subsystem. RMC is a generalized framework used for managing, monitoring, and manipulating resources. RMC runs as a daemon process on individual machines and needs creation of unique node id and restarts during VM boot. More details refer https://www.ibm.com/support/knowledgecenter/en/SGVKBA_3.2/admin/bl503_ovrv.htm This module handles - Refreshing RMC - Disabling NetworkManager from handling IPv6 interface, as IPv6 interface is used for communication between RMC daemon and PowerVM hypervisor. cc_refresh_rmc_and_interfacezRefresh IPv6 Interface and RMCz5Ensure Network Manager is not managing IPv6 interface)idnametitle descriptiondistros frequencyexamplesactivate_by_schema_keysmetarmcctrlrcfgcloudrargsreturnctjts"tdtdStdt }t |dkrtddS|D]-}t|tt|.tdS)NzNo '%s' in path, disabledzMaking the IPv6 up explicitly. Ensuring IPv6 interface is not being handled by NetworkManager and it is restarted to re-establish the communication with the hypervisorrz0Did not find any interfaces with ipv6 addresses.) rwhichRMCCTRLLOGdebugfind_ipv6_ifaceslen refresh_ipv6 disable_ipv6sysconfig_pathrestart_network_manager)rrrrrifacesifaces O/usr/lib/python3/dist-packages/cloudinit/config/cc_refresh_rmc_and_interface.pyhandler+<s :g   -w777II   F  6{{a DEEEEE 0 0E     .. / / / /!!!!!ctj}g}|D]b\}}|dkrtdt |dgdkrM||c|S)NlozSkipping localhost interfaceipv4r)r netdev_infoitemsr r!r#getappend)infor(r)datas r*r"r"Xs   D Fzz|| t D== II4 5 5 5 txx## $ $ ) )  e Mr,cjtjddd|dgtjddd|dgdS)Niplinksetdownupr) interfaces r*r$r$es@ ItVUIv6777ItVUIt455555r,c d|zS)Nz%/etc/sysconfig/network-scripts/ifcfg-)r)s r*r&r&ms 2U ::r,c2tjgddS)N) systemctlrestartNetworkManagerr<r?r,r*r'r'qsI88899999r,cP tj|}nJ#t$r=}|jtjkrt d|n|Yd}~nd}~wwxYwd|vrt d|dSt d||}d|D}|dt|d5}| d |dzddddS#1swxYwYdS) Nz&IPv6 interface file %s does not exist IPV6INITz'Interface file %s did not have IPV6INITzEditing interface file %s c0g|]}t||Sr?)search).0lines r* z disable_ipv6..s# 8 8 8d6$<< 8T 8 8 8r,zNM_CONTROLLED=now ) r load_fileIOErrorerrnoENOENTr r! splitlinesr3openwritejoin) iface_filecontentselinesfps r*r%r%us~ >*--  7el " " II? L L L LG M L L L L !! ;ZHHHII*J777    ! !E 8 8e 8 8 8E LL#$$$ j#  *" 5!!D()))******************s& A3AA",DD"Dc|dp>|dp)|dp|dS)NIPV6ADDRIPADDR6rE NM_CONTROLLED) startswith)rVs r*rGrGs^ J'' 0   y ) ) 0   z * * 0    / / r,c tjtdgtjtdgdS#t$rtjt dwxYw)Nz-zz-sz$Failed to refresh the RMC subsystem.)rr Exceptionrlogexcr r?r,r* refresh_rmcrbsf 7D/""" 7D/"""""  C?@@@ s 6:&A )$__doc__rOloggingr cloudinitrrrrcloudinit.cloudrcloudinit.configr cloudinit.config.schemar cloudinit.distrosr cloudinit.settingsr MODULE_DESCRIPTIONr__annotations__ getLogger__name__r rstrlistr+r"r$r&r'r%rGrbr?r,r*rqs999 $$$$$$))))))))))!!!!!!######......))))))))))))( ) , D%}!  j    g!! " ""#("/5"=A" """"8   666;;;:::***8r,