.P`c@smddlmZmZmZmZmZmZmZmZm Z ddl m Z deefdYZ dS(i( t uri_parsetVERSIONt CapabilitiestINfstIStorageAreaNetworktsearch_propertytClienttLsmErrort ErrorNumber(tSimArrayt SimPlugincBsJeZdZdZddZddZddZddZedZ ddZ dd Z dd Z dd Z dd Zdd ZdAdAddZdAdAddZdAdAddZddZddZddZddZddZddZddZddZdAdAddZddZddZddZddZ ddZ!ddZ"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/Z3dd0Z4dd1Z5dAdAdd2Z6dd3Z7dd4Z8dAdAdd5Z9dd6Z:dd7Z;dd8Z<dd9Z=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(R R RR R R(RR R 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(Rt time_out_setR (RtmsR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyREscCs|jj|S(N(Rt time_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|jtj tj|jtj tj|jtj tj|jtjtj|S(N(Rt enable_alltsettPOOLS_QUICK_SEARCHt UNSUPPORTEDtVOLUMES_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.pyt capabilitiesLs(              cCs dtfS(NsStorage simulator(R(RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt plugin_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_keyt search_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(Rtpoolt volume_namet size_bytest provisioningRtsim_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.pyRIscCs(|jj|j||}tj|S(N(Rt volume_resizeRCR R(RRJtnew_size_bytesRRH((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRKs cCs@|dk r|j}n |j}|jj|||j||S(N(R RCtpool_idRtvolume_replicate(RRDtrep_typet volume_srctnameRt dst_pool_id((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRNs     cCs|jj|j|S(N(Rt!volume_replicate_range_block_sizeRC(RR.R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRSs cCs"|jj||j|j||S(N(Rtvolume_replicate_rangeRC(RRORPt volume_desttrangesR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRTs cCs|jj|j|S(N(Rt volume_enableRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRWscCs|jj|j|S(N(Rtvolume_disableRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRXscCs;|jj}tg|D]}tj|^q||S(N(RtagsRR R(RR8R9Rtsim_agsta((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt access_groupsscCs.|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(Rt access_groupR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRascCs+|jj|j|||}tj|S(N(Rtaccess_group_initiator_addRCR R(RRbR^R_RR`((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRcs 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.pyRds cCs|jj|j|j|S(N(Rt volume_maskRC(RRbRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRes cCs|jj|j|j|S(N(Rt volume_unmaskRC(RRbRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRfs 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.pyRgs 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.pyRhs c CsX|r9|r9|dks$|dkr9ttjdn|jj||||||S(Ns?out_user and out_password only supported if inbound is supplied(R RRtINVALID_ARGUMENTRtiscsi_chap_auth(RR^tin_usert in_passwordtout_usert out_passwordR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRjs     cCs|jj|j|S(N(Rtvolume_child_dependencyRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRoscCs|jj|j|S(N(Rtvolume_child_dependency_rmRC(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRpscCs;|jj}tg|D]}tj|^q||S(N(RtfsRR R(RR8R9Rtsim_fsstf((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRqscCs(|jj|j||}tj|S(N(Rt fs_createRCR R(RRDRQRFRtsim_fs((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRtscCs|jj|j|S(N(Rt fs_deleteRC(RRqR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRvscCs(|jj|j||}tj|S(N(Rt fs_resizeRCR R(RRqRLRRu((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRws cCsG|dkr(|jj|j|d|S|jj|j||j|S(N(R Rtfs_cloneRC(Rtsrc_fst dest_fs_nametsnapshotR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRxs    cCsM|dkr+|jj|j||d|S|jj|j|||j|S(N(R Rt 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(Rt fs_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.pyRs 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.pyRs cCs|jj|j||S(N(Rtfs_child_dependencyRC(RRqRR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRscCs|jj|j||S(N(Rtfs_child_dependency_rmRC(RRqRR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRscCsdgS(Ntstandard((RR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt export_authscCs>|jj|}tg|D]}tj|^q||S(N(RtexportsRR R(RR8R9Rtsim_expste((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRsc Cs=|jj||||||||| dd } tj| S(NRi(Rt fs_exportR R( Rtfs_idt export_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(Rt fs_unexportRC(RtexportR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyt export_remove*scCs;|jj}tg|D]}tj|^q||S(N(Rt target_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.pyR3scCs|jj|S(N(Rtpool_member_info(RRDR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR6scCs|jj|S(N(Rtvolume_raid_create_cap_get(RR.R((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyR9scCs|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.pyRAscCs|jj|S(N(Rtvolume_ident_led_off(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRDscCs;|jj}tg|D]}tj|^q||S(N(Rt batteriesRR R(RR8R9Rt sim_batteriestb((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRGscCs|jj|S(N(Rtvolume_cache_info(RRJR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRNscCs|jj||S(N(Rt!volume_physical_disk_cache_update(RRJtpdcR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRQscCs|jj||S(N(Rtvolume_read_cache_policy_update(RRJtrcpR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRUscCs|jj||S(N(Rt volume_write_cache_policy_update(RRJtwcpR((s</usr/lib/python2.7/site-packages/lsm/plugin/sim/simulator.pyRYsN(Gt__name__t __module__t__doc__RRRRRt staticmethodRRRR0R1R2R5R R7R<R?RBRIRKRNRSRTRWRXR\R]RaRcRdReRfRgRhRjRoRpRqRtRvRwRxR|RRRtFalseRRRRRRRRRRRRRRRt FLAG_RSVDRRRRR(((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.pyts@