a '¡Dg'ã@sNddlZddlmZmZmZe e¡Zdd„Zd dd„Z dd„Z d d d „Z dS) éN)Ú lifecycleÚ type_utilsÚutilcCst|tƒr| ¡ d¡}t|tƒrÐi}|D] }t|tƒrœ| ¡D]X\}}t|ttfƒshtdt  |¡ƒ‚t|tƒr†|  |g¡  |¡q@|  |g¡  |¡q@q*t|tƒr¸||vrÊg||<q*tdt  |¡ƒ‚q*|}i}t|tƒr| ¡D]\}}t  |¡||<qèntdt  |¡ƒ‚|S)Nú,zBad group member type %szUnknown group name type %sz@Group config must be list, dict or string type only but found %s)Ú isinstanceÚstrÚstripÚsplitÚlistÚdictÚitemsÚ TypeErrorrÚobj_nameÚ setdefaultÚextendÚappendrÚuniq_merge_sorted)Zgrp_cfgZ c_grp_cfgÚiÚkÚvÚgroupsZgrp_nameZ grp_members©rú=/usr/lib/python3.9/site-packages/cloudinit/distros/ug_util.pyÚ_normalize_groupssB   ÿÿ    ÿ ÿÿrcCs>t|tƒr†g}| ¡D]h\}}t|ttttfƒrJt |¡r~|  t|ƒ¡qt|tƒrh||d<|  |¡qt dt   |¡|fƒ‚q|}nt|tƒršt  |¡}i}|D]„}t|ttfƒrÚt |¡D]}|r¾||vr¾i||<q¾q¢t|tƒr| dd¡}| |¡pþi} t | |g¡||<q¢t dt   |¡ƒ‚q¢|rˆi} | ¡D]H\} } i} |  ¡D](\}}| dd¡ ¡}|rN|| |<qN| | | <q:| }d}|rd|vr| d¡}|r| ¡}| d¡}| dg¡}| |i¡}| dg¡}t  ||¡}d |¡|d<t |||g¡||<| ¡D] \} } |r.| |knd | d<q|S) NÚnamez(Unmappable user value type %s for key %sÚdefaultzDUser config must be dictionary/list or string types only and not %sú-Ú_rrF)rr r ÚboolÚintÚfloatrrZis_truerr rrrr Z uniq_mergeÚpopÚgetÚ mergemanydictÚreplacerÚcopyÚjoin)Zu_cfgZ def_user_cfgZad_ucfgrrÚusersZ user_configÚuÚnZ prev_configZc_usersÚunameZuconfigZ c_uconfigZdef_userZ def_configZ def_groupsZ parsed_configZ parsed_groupsZ users_groupsrrrÚ_normalize_usersIsv     ÿÿ      ÿÿ        ÿr+cCs~|si}i}d|vrh|drh|d}t|tƒrHd|i}tjddddn t|tƒsht dt |¡¡i}i}z |  ¡}Wnt y”t d¡Yn0t   ||g¡}|  d g¡}t|ttfƒrÚtjd t|ƒ›dd dn t|tƒsút d t |¡¡g}|rRt|tƒr| dd i¡n6t|tƒr>t|ƒ  d d¡|d <nt|tƒrR|d7}i}d|vrlt|dƒ}t||ƒ}||fS)NÚuserrz'user' of type stringz22.2zUse 'users' list instead.)Z deprecatedZdeprecated_versionZ extra_messagez?Format for 'user' key must be a string or dictionary and not %sziDistro has not implemented default user access. No distribution provided default user will be normalized.r'z'users' of type zUse 'users' as a list.z^Format for 'users' key must be a comma-separated string or a dictionary or a list but found %srTz,defaultr)rrrZ deprecater ÚLOGZwarningrrZget_default_userÚNotImplementedErrorrr#r"Útyper rrr+)ZcfgZdistroZold_userZdistro_user_configZdefault_user_configZ base_usersrr'rrrÚnormalize_users_groups¥sf ý ý  ÿ   ý ý      r0cCsZ|s ||fSdd„}tt|| ¡ƒƒ}|s2||fSt|ƒd}||}| dd¡||fS)NcSs |d}|rd|vrdS|dS)NérFr)ÚentryÚconfigrrrÚ safe_find÷s z"extract_default..safe_findrr)r Úfilterr r r!)r'Z default_nameZdefault_configr4Z tmp_usersrr3rrrÚextract_defaultós  r6)N)NN) ZloggingZ cloudinitrrrZ getLoggerÚ__name__r-rr+r0r6rrrrÚ s  1 \N