a V€œd}=ã@sNddlmZmZmZmZmZmZmZmZm Z ddl m Z Gdd„deeƒZ dS)é) Ú uri_parseÚVERSIONÚ CapabilitiesÚINfsÚIStorageAreaNetworkÚsearch_propertyÚClientÚLsmErrorÚ ErrorNumber)ÚSimArrayc@sžeZdZdZdd„Zdƒdd„Zd„dd„Zd…d d „Zd†d d „Ze d d„ƒZ d‡dd„Z dˆdd„Z d‰dd„Z dŠdd„Zd‹dd„ZdŒdd„Zd�dd„ZdŽdd„Zd�d d!„Zd�d"d#„Zd‘d$d%„Zd’d&d'„Zd“d(d)„Zd”d*d+„Zd•d,d-„Zd–d.d/„Zd—d0d1„Zd˜d2d3„Zd™d4d5„Zdšd6d7„Zd›d8d9„Zdœd:d;„Z d�dd?„Z"dŸd@dA„Z#d dBdC„Z$d¡dDdE„Z%d¢dFdG„Z&d£dHdI„Z'd¤dJdK„Z(d¥dLdM„Z)d¦dNdO„Z*d§dPdQ„Z+d¨dRdS„Z,d©dTdU„Z-dªdVdW„Z.d«dXdY„Z/d¬dZd[„Z0d­d]d^„Z1d®d_d`„Z2d¯dadb„Z3d°dcdd„Z4d±dedf„Z5d²dgdh„Z6d³didj„Z7d´dkdl„Z8dµdmdn„Z9d¶dodp„Z:d·dqdr„Z;d¸dsdt„Zdde?j@fdydz„ZAe?j@fd{d|„ZBe?j@fd}d~„ZCe?j@fdd€„ZDe?j@fd�d‚„ZEdS)»Ú SimPluginzU Simple class that implements enough to allow the framework to be exercised. cCsd|_d|_d|_dS©N)ÚuriÚpasswordÚ sim_array)Úself©rú:/usr/lib64/python3.9/site-packages/sim_plugin/simulator.pyÚ__init__szSimPlugin.__init__rcCs^||_||_t|ƒ}d|vrNd|dvrN|dddurNt|dd|ƒ|_n td|ƒ|_dS)NÚ parametersZ statefile)rrrr r)rrrÚtimeoutÚflagsZqprrrÚplugin_registersÿ zSimPlugin.plugin_registercCsdSr r©rrrrrÚplugin_unregister'szSimPlugin.plugin_unregistercCs|j ||¡Sr )rÚ job_status©rZjob_idrrrrr*szSimPlugin.job_statuscCs|j ||¡Sr )rÚjob_freerrrrr-szSimPlugin.job_freecCs|S)a 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. r)Zsim_datarrrÚ_sim_data_2_lsm0s zSimPlugin._sim_data_2_lsmcCs|j ||¡dSr )rÚ time_out_set)rÚmsrrrrr;szSimPlugin.time_out_setcCs |j |¡Sr )rÚ time_out_getrrrrr!?szSimPlugin.time_out_getcCsÂtƒ}| ¡| tjtj¡| tjtj¡| tjtj¡| tjtj¡| tjtj¡| tj tj¡| tj tj¡| tj tj¡| tj tj¡| tj tj¡| tjtj¡|Sr )rZ enable_allÚsetZPOOLS_QUICK_SEARCHZ UNSUPPORTEDZVOLUMES_QUICK_SEARCHZDISKS_QUICK_SEARCHZFS_QUICK_SEARCHZACCESS_GROUPS_QUICK_SEARCHZNFS_EXPORTS_QUICK_SEARCHZTARGET_PORTS_QUICK_SEARCHZ.VOLUME_PHYSICAL_DISK_CACHE_UPDATE_SYSTEM_LEVELZ,VOLUME_WRITE_CACHE_POLICY_UPDATE_IMPACT_READZ0VOLUME_WRITE_CACHE_POLICY_UPDATE_WB_IMPACT_OTHERZ,VOLUME_READ_CACHE_POLICY_UPDATE_IMPACT_WRITE)rÚsystemrÚrcrrrÚ capabilitiesBs4ÿÿÿÿÿÿzSimPlugin.capabilitiescCsdtfS)NzStorage simulator)rrrrrÚ plugin_infoXszSimPlugin.plugin_infocCs|j ¡}dd„|DƒS)NcSsg|]}t |¡‘qSr©r r©Ú.0ÚsrrrÚ ]óz%SimPlugin.systems..)rÚsystems)rrZsim_syssrrrr-[s zSimPlugin.systemscCs|j ||¡Sr )rÚsystem_read_cache_pct_update)rr#Zread_pctrrrrr._sz&SimPlugin.system_read_cache_pct_updateNcCs"|j |¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Úprrrr+er,z#SimPlugin.pools..)rÚpoolsr)rÚ search_keyÚ search_valuerZ sim_poolsrrrr0bs  þzSimPlugin.poolscCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr'©r)Úvrrrr+kr,z%SimPlugin.volumes..)rÚvolumesr)rr1r2rÚsim_volsrrrr5hs  þzSimPlugin.volumescCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Údrrrr+qr,z#SimPlugin.disks..)rÚdisksr)rr1r2rZ sim_disksrrrr8ns  þzSimPlugin.diskscCs |j |j||||¡}t |¡Sr )rÚ volume_createÚidr r)rÚpoolZ volume_nameÚ size_bytesZ provisioningrÚsim_volrrrr9ts ÿzSimPlugin.volume_createcCs|j |j|¡Sr )rÚ volume_deleter:©rÚvolumerrrrr>~szSimPlugin.volume_deletecCs|j |j||¡}t |¡Sr )rÚ volume_resizer:r r)rr@Únew_size_bytesrr=rrrrA�s ÿzSimPlugin.volume_resizecCs,|dur|j}n|j}|j |||j||¡Sr )r:Zpool_idrÚvolume_replicate)rr;Úrep_typeÚ volume_srcÚnamerZ dst_pool_idrrrrC†s  ÿzSimPlugin.volume_replicatecCs|j |j|¡Sr )rÚ!volume_replicate_range_block_sizer:©rr#rrrrrGŽsÿz+SimPlugin.volume_replicate_range_block_sizecCs|j ||j|j||¡Sr )rÚvolume_replicate_ranger:)rrDrEZ volume_destZrangesrrrrrI’s þz SimPlugin.volume_replicate_rangecCs|j |j|¡Sr )rÚ volume_enabler:r?rrrrJœszSimPlugin.volume_enablecCs|j |j|¡Sr )rÚvolume_disabler:r?rrrrKŸszSimPlugin.volume_disablecCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Úarrrr+¤r,z+SimPlugin.access_groups..)rZagsr)rr1r2rZsim_agsrrrÚ access_groups¢s ÿzSimPlugin.access_groupscCs |j ||||j|¡}t |¡Sr )rÚaccess_group_creater:r r)rrFÚinit_idÚ init_typer#rÚsim_agrrrrN§s ÿzSimPlugin.access_group_createcCs|j |j|¡Sr )rÚaccess_group_deleter:)rÚ access_grouprrrrrR¬szSimPlugin.access_group_deletecCs|j |j|||¡}t |¡Sr )rÚaccess_group_initiator_addr:r r©rrSrOrPrrQrrrrT¯s ÿz$SimPlugin.access_group_initiator_addcCs|j |j|||¡}t |¡Sr )rÚaccess_group_initiator_deleter:r rrUrrrrV¸s ÿz'SimPlugin.access_group_initiator_deletecCs|j |j|j|¡Sr )rÚ volume_maskr:©rrSr@rrrrrWÁszSimPlugin.volume_maskcCs|j |j|j|¡Sr )rÚ volume_unmaskr:rXrrrrYÄszSimPlugin.volume_unmaskcCs|j |j|¡}dd„|DƒS)NcSsg|]}t |¡‘qSrr'r3rrrr+Êr,z@SimPlugin.volumes_accessible_by_access_group..)rÚ"volumes_accessible_by_access_groupr:)rrSrr6rrrrZÇsÿz,SimPlugin.volumes_accessible_by_access_groupcCs|j |j|¡}dd„|DƒS)NcSsg|]}t |¡‘qSrr'r3rrrr+Ïr,z=SimPlugin.access_groups_granted_to_volume..)rÚaccess_groups_granted_to_volumer:)rr@rr6rrrr[Ìsÿz)SimPlugin.access_groups_granted_to_volumecCs:|r$|r$|dus|dur$ttjdƒ‚|j ||||||¡S)Nz?out_user and out_password only supported if inbound is supplied)r r ZINVALID_ARGUMENTrÚiscsi_chap_auth)rrOZin_userZ in_passwordZout_userZ out_passwordrrrrr\Ñsÿÿþ ÿzSimPlugin.iscsi_chap_authcCs|j |j|¡Sr )rÚvolume_child_dependencyr:r?rrrr]ász!SimPlugin.volume_child_dependencycCs|j |j|¡Sr )rÚvolume_child_dependency_rmr:r?rrrr^äsz$SimPlugin.volume_child_dependency_rmcCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Úfrrrr+ér,z SimPlugin.fs..)rÚfsr)rr1r2rZsim_fssrrrr`çs ÿz SimPlugin.fscCs|j |j||¡}t |¡Sr )rÚ fs_creater:r r)rr;rFr<rÚsim_fsrrrraìszSimPlugin.fs_createcCs|j |j|¡Sr )rÚ fs_deleter:)rr`rrrrrcðszSimPlugin.fs_deletecCs|j |j||¡}t |¡Sr )rÚ fs_resizer:r r)rr`rBrrbrrrrdószSimPlugin.fs_resizecCs2|dur|j |j|d|¡S|j |j||j|¡Sr )rÚfs_cloner:)rZsrc_fsZ dest_fs_nameÚsnapshotrrrrre÷sÿÿzSimPlugin.fs_clonecCs6|dur|j |j||d|¡S|j |j|||j|¡Sr )rÚ fs_file_cloner:)rr`Z src_file_nameZdest_file_namerfrrrrrgþs ÿ ÿzSimPlugin.fs_file_clonecCs|j |j|¡}dd„|DƒS)NcSsg|]}t |¡‘qSrr'r(rrrr+ r,z*SimPlugin.fs_snapshots..)rÚ fs_snapshotsr:)rr`rZ sim_snapsrrrrh szSimPlugin.fs_snapshotscCs|j |j||¡Sr )rÚfs_snapshot_creater:)rr`Z snapshot_namerrrrriszSimPlugin.fs_snapshot_createcCs|j |j|j|¡Sr )rÚfs_snapshot_deleter:)rr`rfrrrrrjszSimPlugin.fs_snapshot_deleteFcCs|j |j|j||||¡Sr )rÚfs_snapshot_restorer:)rr`rfÚfilesZ restore_filesZ all_filesrrrrrksþzSimPlugin.fs_snapshot_restorecCs|j |j||¡Sr )rÚfs_child_dependencyr:©rr`rlrrrrrm szSimPlugin.fs_child_dependencycCs|j |j||¡Sr )rÚfs_child_dependency_rmr:rnrrrro#sz SimPlugin.fs_child_dependency_rmcCsdgS)NZstandardrrrrrÚ export_auth&szSimPlugin.export_authcCs"|j |¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Úerrrr+-r,z%SimPlugin.exports..)rÚexportsr)rr1r2rZsim_expsrrrrr*s  þzSimPlugin.exportsc Cs*|jj||||||||| dd� } t | ¡S)Nr)r)rZ fs_exportr r) rZfs_idZ export_pathZ root_listZrw_listZro_listZanon_uidZanon_gidZ auth_typeÚoptionsrZsim_exprrrÚ export_fs0s ÷ zSimPlugin.export_fscCs|j |j|¡Sr )rZ fs_unexportr:)rZexportrrrrÚ export_removeGszSimPlugin.export_removecCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Útrrrr+Mr,z*SimPlugin.target_ports..)rÚ target_portsr)rr1r2rZsim_tgtsrrrrwJs  þzSimPlugin.target_portscCs |j |¡Sr )rÚvolume_raid_infor?rrrrxPszSimPlugin.volume_raid_infocCs |j |¡Sr )rÚpool_member_info)rr;rrrrrySszSimPlugin.pool_member_infocCs |j |¡Sr )rÚvolume_raid_create_cap_getrHrrrrzVsz$SimPlugin.volume_raid_create_cap_getcCs|j ||||¡Sr )rÚvolume_raid_create)rrFZ raid_typer8Z strip_sizerrrrr{Ys ÿzSimPlugin.volume_raid_createcCs |j |¡Sr )rÚvolume_ident_led_onr?rrrr|]szSimPlugin.volume_ident_led_oncCs |j |¡Sr )rÚvolume_ident_led_offr?rrrr}`szSimPlugin.volume_ident_led_offcCs |j ¡}tdd„|Dƒ||ƒS)NcSsg|]}t |¡‘qSrr')r)Úbrrrr+ir,z'SimPlugin.batteries..)rÚ batteriesr)rr1r2rZ sim_batteriesrrrrcs  þzSimPlugin.batteriescCs |j |¡Sr )rÚvolume_cache_infor?rrrr€lszSimPlugin.volume_cache_infocCs|j ||¡Sr )rÚ!volume_physical_disk_cache_update)rr@Zpdcrrrrr�osz+SimPlugin.volume_physical_disk_cache_updatecCs|j ||¡Sr )rÚvolume_read_cache_policy_update)rr@Zrcprrrrr‚usz)SimPlugin.volume_read_cache_policy_updatecCs|j ||¡Sr )rÚ volume_write_cache_policy_update)rr@Zwcprrrrrƒ{sz*SimPlugin.volume_write_cache_policy_update)r)r)r)r)r)r)r)r)r)r)NNr)NNr)NNr)r)r)r)r)r)r)r)r)NNr)r)r)r)r)r)r)r)r)r)r)r)NNr)r)r)r)Nr)Nr)r)r)r)Fr)r)r)r)NNr)r)r)NNr)r)r)r)r)r)r)FÚ__name__Ú __module__Ú __qualname__Ú__doc__rrrrrÚ staticmethodrrr!r%r&r-r.r0r5r8r9r>rArCrGrIrJrKrMrNrRrTrVrWrYrZr[r\r]r^r`rarcrdrergrhrirjrkrmrorprrrtrurwrxryrzr{r|r}rZ FLAG_RSVDrr€r�r‚rƒrrrrr s¢             û    û     ü ü    ú        û   ú    ö         ý ý ý ýr N) Zlsmrrrrrrrr r Zsim_plugin.simarrayr r rrrrÚs,