
    %`*                     J    d dl mZ  G d de          Z G d de          ZdS )    )Devicec                   6    e Zd Zd Zd
dZd Zd Zd ZddZd	S )InventoryFactoryc                     g | _         d S )N)taken_pathsselfs    6/usr/lib/python3/dist-packages/ceph/tests/factories.py__init__zInventoryFactory.__init__   s        bc                 8    d                     | j        |          S )N	/dev/{}{})formatprefix)r	   idents     r
   
_make_pathzInventoryFactory._make_path   s    !!$+u555r   c                    d}t          | j                  dk    rt          d          | j        | j        v rTt	          t          d          |z             }d                    | j        |          | _        |dz  }| j        | j        v Rd S d S )Nr      zKDouble-character disks are not implemetend. Maximum amountof disks reached.r   r      )lenr   	Exceptionpathchrordr   r   )r	   cntr   s      r
   _find_new_pathzInventoryFactory._find_new_path   s    t  B&&$% % % i4+++C3''E#**4;>>DI1HC i4+++++++r   c                    | j         ri S |                                  | j        g | j        | j        i d| j        ddd| j        ddddd	d
| j        ddid| j        dddddddt          | j                  ddddddddddd| j	        ddd| j
        id}| j        r!| j                            | j                   |S i S ) Nhuman_readable_sizelockedr   modelnr_requests256
partitionssda141940992i   2048)sectors
sectorsizesizestartr   	removable0rev ro
rotationalsas_addresssas_device_handlescheduler_modezmq-deadliner(   r   r)   512r*   support_discardvendor)	availablelvsr   rejected_reasonssys_api)emptyr   r8   r   rejected_reasonr   r!   strr1   r*   r7   r   append)r	   inventory_samples     r
   assemblezInventoryFactory.assemble   s   : 	II $ 4%t'?!  u	
 #-&) $ 8!'	  	 S  r!" c#$ c$/22%& r'( $R)* !-+, 1-. e/0 	12 "234 $+5 !
 !
F > 	$##DI...##	r   c                 >   d| _         |                    d|                                           | _        |                    dd          | _        |                    dd          | _        |                    dd          | _        |                    d	d
          | _        |                    ddg          | _        |                    dd          | _	        | j        sdg| _        |                    dd          | _
        |                    dd          | _        d S )Nsdr   r   z50.00 GBr7   samsungr!   z42-RGBr8   Tr=   r/   r1   1r    r<   Fr*   l       )r   getr   r   r   r7   r!   r8   r=   r1   r<   r*   )r	   kwargss     r
   _initzInventoryFactory._initC   s    JJvt'8'899	#)::.C.8$: $: jj955ZZ22
K66%zz*;bTBB **\377~ 	.$,:D ZZ//
JJvz22			r   r   c                      |                     d          r|dk    rt          d            j        di |  fdt          d|          D             S )Nr   r   z*/path/ and /pieces/ are mutually exclusivec                 8    g | ]}                                 S  )rA   .0xr	   s     r
   
<listcomp>z,InventoryFactory.produce.<locals>.<listcomp>[   s!    :::A:::r   r   rK   )rF   r   rH   range)r	   piecesrG   s   `  r
   producezInventoryFactory.produceR   sm    ::f 	J&1**HIII 	
V::::q&)9)9::::r   N)r   )r   )	__name__
__module____qualname__r   r   r   rA   rH   rR   rK   r   r
   r   r      sy          6 6 6 6
 
 
* * *X3 3 3	; 	; 	; 	; 	; 	;r   r   c                       e Zd Zd Zd ZdS )DeviceFactoryc                     || _         |                    dd          | _        |                    di           | _        d S )NrQ   r   device_config)device_setuprF   rQ   device_conf)r	   rZ   s     r
   r   zDeviceFactory.__init___   s?    ("&&x33'++OR@@r   c                 F      fdt          d j                  D             S )Nc                 2    g | ]}t          d i j        S )rK   )r   r[   rL   s     r
   rO   z)DeviceFactory.produce.<locals>.<listcomp>e   s*    JJJq**)**JJJr   r   )rP   rQ   r   s   `r
   rR   zDeviceFactory.produced   s)    JJJJE!T[4I4IJJJJr   N)rS   rT   rU   r   rR   rK   r   r
   rW   rW   ^   s:        A A A
K K K K Kr   rW   N)ceph.deployment.inventoryr   objectr   rW   rK   r   r
   <module>r`      s    , , , , , ,W; W; W; W; W;v W; W; W;tK K K K KF K K K K Kr   