�
.�P`c@smddlmZmZmZmZmZmZmZmZm Z ddl
mZdeefd��YZdS(i����( t uri_parsetVERSIONtCapabilitiestINfstIStorageAreaNetworktsearch_propertytClienttLsmErrortErrorNumber(tSimArrayt SimPlugincBsJeZdZd�Zdd�Zdd�Zdd�Zdd�Zed��Z dd�Z
dd �Zdd
�Zdd�Z
dd�Zdd
�ZdAdAdd�ZdAdAdd�ZdAdAdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdAdAdd�Zdd�Zdd�Zdd�Zdd�Z dd�Z!dd�Z"dd �Z#dd!�Z$dd"�Z%dd#�Z&dd$�Z'dAdAdd%�Z(dd&�Z)dd'�Z*dd(�Z+dAdd)�Z,dAdd*�Z-dd+�Z.dd,�Z/dd-�Z0e1dd.�Z2dd/�Z3dd0�Z4dd1�Z5dAdAdd2�Z6dd3�Z7dd4�Z8dAdAdd5�Z9dd6�Z:dd7�Z;dd8�Z<dd9�Z=dd:�Z>dd;�Z?dAdAe@jAd<�ZBe@jAd=�ZCe@jAd>�ZDe@jAd?�ZEe@jAd@�ZFRS(BsU
Simple class that implements enough to allow the framework to be exercised.
cCsd|_d|_d|_dS(N(tNoneturitpasswordt sim_array(tself((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt__init__s icCs�||_||_t|�}d|krkd|dkrk|dddk rkt|dd|�|_ntd|�|_dS(Nt
parameterst statefile(RR
RRR R(RRR
ttimeouttflagstqp((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pytplugin_register"s cCsdS(N((RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pytplugin_unregister1scCs|jj||�S(N(Rt
job_status(Rtjob_idR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR4scCs|jj||�S(N(Rtjob_free(RRR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR7scCs|S(s
Fake converter. SimArray already do SimData to LSM data convert.
We move data convert to SimArray to make this sample plugin looks
clean.
But in real world, data converting is often handled by plugin itself
rather than array.
((tsim_data((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt_sim_data_2_lsm:s cCs|jj||�dS(N(Rttime_out_setR(RtmsR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyREscCs|jj|�S(N(Rttime_out_get(RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRIscCs t�}|j�|jtjtj�|jtjtj�|jtjtj�|jtjtj�|jtjtj�|jtj tj�|jtj
tj�|jtjtj�|jtjtj�|jtj
tj�|jtjtj�|S(N(Rt
enable_alltsettPOOLS_QUICK_SEARCHtUNSUPPORTEDtVOLUMES_QUICK_SEARCHtDISKS_QUICK_SEARCHtFS_QUICK_SEARCHtACCESS_GROUPS_QUICK_SEARCHtNFS_EXPORTS_QUICK_SEARCHtTARGET_PORTS_QUICK_SEARCHt.VOLUME_PHYSICAL_DISK_CACHE_UPDATE_SYSTEM_LEVELt,VOLUME_WRITE_CACHE_POLICY_UPDATE_IMPACT_READt0VOLUME_WRITE_CACHE_POLICY_UPDATE_WB_IMPACT_OTHERt,VOLUME_READ_CACHE_POLICY_UPDATE_IMPACT_WRITE(RtsystemRtrc((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pytcapabilitiesLs(
cCs
dtfS(NsStorage simulator(R(RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pytplugin_infobscCs/|jj�}g|D]}tj|�^qS(N(RtsystemsR
R(RRtsim_syssts((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR2escCs|jj||�S(N(Rtsystem_read_cache_pct_update(RR.tread_pctR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR5iscCs>|jj|�}tg|D]}tj|�^q||�S(N(RtpoolsRR
R(Rt
search_keytsearch_valueRt sim_poolstp((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR7lscCs;|jj�}tg|D]}tj|�^q||�S(N(RtvolumesRR
R(RR8R9Rtsim_volstv((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR<rscCs;|jj�}tg|D]}tj|�^q||�S(N(RtdisksRR
R(RR8R9Rt sim_diskstd((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR?xscCs.|jj|j||||�}tj|�S(N(Rt
volume_createtidR
R(Rtpooltvolume_namet
size_bytestprovisioningRtsim_vol((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRB~s cCs|jj|j|�S(N(Rt
volume_deleteRC(RtvolumeR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRI�scCs(|jj|j||�}tj|�S(N(Rt
volume_resizeRCR
R(RRJtnew_size_bytesRRH((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRK�s cCs@|dk r|j}n |j}|jj|||j||�S(N(RRCtpool_idRtvolume_replicate(RRDtrep_typet
volume_srctnameRtdst_pool_id((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRN�s
cCs|jj|j|�S(N(Rt!volume_replicate_range_block_sizeRC(RR.R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRS�s cCs"|jj||j|j||�S(N(Rtvolume_replicate_rangeRC(RRORPtvolume_desttrangesR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRT�s cCs|jj|j|�S(N(Rt
volume_enableRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRW�scCs|jj|j|�S(N(Rtvolume_disableRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRX�scCs;|jj�}tg|D]}tj|�^q||�S(N(RtagsRR
R(RR8R9Rtsim_agsta((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt
access_groups�scCs.|jj||||j|�}tj|�S(N(Rtaccess_group_createRCR
R(RRQtinit_idt init_typeR.Rtsim_ag((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR]�s cCs|jj|j|�S(N(Rtaccess_group_deleteRC(Rtaccess_groupR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRa�scCs+|jj|j|||�}tj|�S(N(Rtaccess_group_initiator_addRCR
R(RRbR^R_RR`((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRc�s cCs+|jj|j|||�}tj|�S(N(Rtaccess_group_initiator_deleteRCR
R(RRbR^R_RR`((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRd�s cCs|jj|j|j|�S(N(Rtvolume_maskRC(RRbRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRe�s cCs|jj|j|j|�S(N(Rt
volume_unmaskRC(RRbRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRf�s cCs8|jj|j|�}g|D]}tj|�^qS(N(Rt"volumes_accessible_by_access_groupRCR
R(RRbRR=R>((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRg�s cCs8|jj|j|�}g|D]}tj|�^qS(N(Rtaccess_groups_granted_to_volumeRCR
R(RRJRR=R>((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRh�s c
CsX|r9|r9|dks$|dkr9ttjd��n|jj||||||�S(Ns?out_user and out_password only supported if inbound is supplied(RRRtINVALID_ARGUMENTRtiscsi_chap_auth(RR^tin_usertin_passwordtout_usertout_passwordR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRj�s cCs|jj|j|�S(N(Rtvolume_child_dependencyRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRo�scCs|jj|j|�S(N(Rtvolume_child_dependency_rmRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRp�scCs;|jj�}tg|D]}tj|�^q||�S(N(RtfsRR
R(RR8R9Rtsim_fsstf((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRq�scCs(|jj|j||�}tj|�S(N(Rt fs_createRCR
R(RRDRQRFRtsim_fs((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRt�scCs|jj|j|�S(N(Rt fs_deleteRC(RRqR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRv�scCs(|jj|j||�}tj|�S(N(Rt fs_resizeRCR
R(RRqRLRRu((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRw�s cCsG|dkr(|jj|j|d|�S|jj|j||j|�S(N(RRtfs_cloneRC(Rtsrc_fstdest_fs_nametsnapshotR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRx�s
cCsM|dkr+|jj|j||d|�S|jj|j|||j|�S(N(RRt
fs_file_cloneRC(RRqt
src_file_nametdest_file_nameR{R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR|�s
cCs8|jj|j|�}g|D]}tj|�^qS(N(Rtfs_snapshotsRCR
R(RRqRt sim_snapsR4((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRscCs|jj|j||�S(N(Rtfs_snapshot_createRC(RRqt
snapshot_nameR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�s cCs|jj|j|j|�S(N(Rtfs_snapshot_deleteRC(RRqR{R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�
s cCs%|jj|j|j||||�S(N(Rtfs_snapshot_restoreRC(RRqR{tfilest
restore_filest all_filesR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�s cCs|jj|j||�S(N(Rtfs_child_dependencyRC(RRqR�R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�scCs|jj|j||�S(N(Rtfs_child_dependency_rmRC(RRqR�R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�scCsdgS(Ntstandard((RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pytexport_authscCs>|jj|�}tg|D]}tj|�^q||�S(N(RtexportsRR
R(RR8R9Rtsim_expste((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�scCs=|jj||||||||| dd� }tj|�S(NRi(Rt fs_exportR
R(Rtfs_idtexport_patht root_listtrw_listtro_listtanon_uidtanon_gidt auth_typetoptionsRtsim_exp((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt export_fs#s cCs|jj|j|�S(N(Rtfs_unexportRC(RtexportR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt
export_remove*scCs;|jj�}tg|D]}tj|�^q||�S(N(Rttarget_portsRR
R(RR8R9Rtsim_tgtstt((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�-scCs|jj|�S(N(Rtvolume_raid_info(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�3scCs|jj|�S(N(Rtpool_member_info(RRDR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�6scCs|jj|�S(N(Rtvolume_raid_create_cap_get(RR.R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�9scCs|jj||||�S(N(Rtvolume_raid_create(RRQt raid_typeR?t
strip_sizeR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�<s cCs|jj|�S(N(Rtvolume_ident_led_on(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�AscCs|jj|�S(N(Rtvolume_ident_led_off(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�DscCs;|jj�}tg|D]}tj|�^q||�S(N(Rt batteriesRR
R(RR8R9Rt
sim_batteriestb((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�GscCs|jj|�S(N(Rtvolume_cache_info(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�NscCs|jj||�S(N(Rt!volume_physical_disk_cache_update(RRJtpdcR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�QscCs|jj||�S(N(Rtvolume_read_cache_policy_update(RRJtrcpR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�UscCs|jj||�S(N(Rt volume_write_cache_policy_update(RRJtwcpR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR�YsN(Gt__name__t
__module__t__doc__RRRRRtstaticmethodRRRR0R1R2R5RR7R<R?RBRIRKRNRSRTRWRXR\R]RaRcRdReRfRgRhRjRoRpRqRtRvRwRxR|RR�R�tFalseR�R�R�R�R�R�R�R�R�R�R�R�R�R�Rt FLAG_RSVDR�R�R�R�R�(((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR
s� N(
tlsmRRRRRRRRRtlsm.plugin.sim.simarrayR R
(((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt<module>s@ |