
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me&                 @   sJ   d dl Z d dlmZmZ e jeZdd ZdddZdd Z	dd	d
Z
dS )    N)
type_utilsutilc             C   s$  t | tr| j jd} t | tri }x| D ]}t |trx|j D ]X\}}t |ttfsltdtj	| t |tr|j
|g j| qD|j
|g j| qDW q,t |tr||krg ||< q,tdtj	| q,W |} i }t | trx6| j D ]\}}tj|||< qW ntdtj	|  |S )N,zBad group member type %szUnknown 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)Zgrp_cfgZ	c_grp_cfgikvgroupsZgrp_nameZgrp_members r   /usr/lib/python3.6/ug_util.py_normalize_groups   s8    






r   c             C   sX  t | trg }xt| j D ]h\}}t |ttttfrLtj|r|j	t| qt |trj||d< |j	| qt
dtj||f qW |} nt | trtj| } i }x| D ]}t |ttfrxvtj|D ]}|r||kri ||< qW qt |tr |jdd}|j|p
i }	tj|	|g||< qt
dtj| qW |ri }
xX|j D ]L\}}i }x4|j D ](\}}|jddj }|r`|||< q`W ||
|< qJW |
}d }|r&d|kr&|jd}|r&|j }|jd}|jdg }|j|i }|jdg }tj||}dj||d< tj|||g||< x,|j D ] \}}|rF||knd	|d< q0W |S )
Nnamez(Unmappable user value type %s for key %sdefaultzDUser config must be dictionary/list or string  types only and not %s-_r   r   F)r   r
   r   boolintfloatr   r   Zis_truer   r   r   r   r   r	   Z
uniq_mergepopgetmergemanydictreplacer   copyjoin)Zu_cfgZdef_user_cfgZad_ucfgr   r   usersZuser_configunZprev_configZc_usersunameZuconfigZ	c_uconfigZdef_userZ
def_configZ
def_groupsZparsed_configZparsed_groupsZusers_groupsr   r   r   _normalize_usersI   sl    







r*   c             C   s  | si } i }d| krh| d rh| d }t |trHd|i}tjdddd n t |tshtjdtj| i }i }y|j	 }W n t
k
r   tjd Y nX tj||g}| jd	g }t |ttfrtjd
t| ddd n"t |t stjdtj| g }|rVt |tr |jddi n6t |trBt|jdd|d< nt |trV|d7 }i }d| krpt| d }t||}||fS )Nuserr   z'user' of type stringz22.2zUse 'users' list instead.)Z
deprecatedZdeprecated_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 zUse 'users' as a list.z^Format for 'users' key must be a comma-separated string or a dictionary or a list but found %sr   Tz,defaultr   )r   r   r   Z	deprecater
   LOGZwarningr   r   Zget_default_userNotImplementedErrorr"   r!   typer	   r   r   r*   )ZcfgZdistroZold_userZdistro_user_configZdefault_user_configZ
base_usersr   r&   r   r   r   normalize_users_groups   s\    





r/   c             C   sZ   | s||fS dd }t t|| j }|s2||fS t|d }|| }|jdd  ||fS )Nc             S   s"   | d }| sd|krdS |d S )N   r   Fr   )entryconfigr   r   r   	safe_find   s    z"extract_default.<locals>.safe_findr   r   )r
   filterr   r	   r    )r&   Zdefault_nameZdefault_configr3   Z	tmp_usersr   r2   r   r   r   extract_default   s    r5   )N)NN)ZloggingZ	cloudinitr   r   Z	getLogger__name__r,   r   r*   r/   r5   r   r   r   r   <module>   s   
1
\N