a Vd}=@sNddlmZmZmZmZmZmZmZmZm Z ddl m Z GdddeeZ dS)) uri_parseVERSION CapabilitiesINfsIStorageAreaNetworksearch_propertyClientLsmError ErrorNumber)SimArrayc@seZdZdZddZdddZdddZdd d Zdd d Ze d dZ dddZ dddZ dddZ dddZdddZdddZdddZdddZdd d!Zdd"d#Zdd$d%Zdd&d'Zdd(d)Zdd*d+Zdd,d-Zdd.d/Zdd0d1Zdd2d3Zdd4d5Zdd6d7Zdd8d9Zdd:d;Z ddd?Z"dd@dAZ#ddBdCZ$ddDdEZ%ddFdGZ&ddHdIZ'ddJdKZ(ddLdMZ)ddNdOZ*ddPdQZ+ddRdSZ,ddTdUZ-ddVdWZ.ddXdYZ/ddZd[Z0dd]d^Z1dd_d`Z2ddadbZ3ddcddZ4ddedfZ5ddgdhZ6ddidjZ7ddkdlZ8ddmdnZ9ddodpZ:ddqdrZ;ddsdtZdde?j@fdydzZAe?j@fd{d|ZBe?j@fd}d~ZCe?j@fddZDe?j@fddZEdS) SimPluginzU Simple class that implements enough to allow the framework to be exercised. cCsd|_d|_d|_dSN)uripassword sim_array)selfr:/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)rrrtimeoutflagsZqprrrplugin_registers zSimPlugin.plugin_registercCsdSr rrrrrrplugin_unregister'szSimPlugin.plugin_unregistercCs|j||Sr )r job_statusrZjob_idrrrrr*szSimPlugin.job_statuscCs|j||Sr )rjob_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)rmsrrrrr;szSimPlugin.time_out_setcCs |j|Sr )r time_out_getrrrrr!?szSimPlugin.time_out_getcCst}||tjtj|tjtj|tjtj|tjtj|tjtj|tj tj|tj tj|tj tj|tj tj|tj tj|tjtj|Sr )rZ enable_allsetZPOOLS_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)rsystemrrcrrr capabilitiesBs4zSimPlugin.capabilitiescCsdtfS)NzStorage simulator)rrrrr plugin_infoXszSimPlugin.plugin_infocCs|j}dd|DS)NcSsg|]}t|qSrr r.0srrr ]z%SimPlugin.systems..)rsystems)rrZsim_syssrrrr-[s zSimPlugin.systemscCs|j||Sr )rsystem_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..)rpoolsr)r search_key search_valuerZ sim_poolsrrrr0bs  zSimPlugin.poolscCs |j}tdd|D||S)NcSsg|]}t|qSrr'r)vrrrr+kr,z%SimPlugin.volumes..)rvolumesr)rr1r2rsim_volsrrrr5hs  zSimPlugin.volumescCs |j}tdd|D||S)NcSsg|]}t|qSrr')r)drrrr+qr,z#SimPlugin.disks..)rdisksr)rr1r2rZ sim_disksrrrr8ns  zSimPlugin.diskscCs |j|j||||}t|Sr )r volume_createidr r)rpoolZ volume_name size_bytesZ provisioningrsim_volrrrr9ts zSimPlugin.volume_createcCs|j|j|Sr )r volume_deleter:rvolumerrrrr>~szSimPlugin.volume_deletecCs|j|j||}t|Sr )r volume_resizer:r r)rr@new_size_bytesrr=rrrrAs zSimPlugin.volume_resizecCs,|dur|j}n|j}|j|||j||Sr )r:Zpool_idrvolume_replicate)rr;rep_type volume_srcnamerZ dst_pool_idrrrrCs  zSimPlugin.volume_replicatecCs|j|j|Sr )r!volume_replicate_range_block_sizer:rr#rrrrrGsz+SimPlugin.volume_replicate_range_block_sizecCs|j||j|j||Sr )rvolume_replicate_ranger:)rrDrEZ volume_destZrangesrrrrrIs z SimPlugin.volume_replicate_rangecCs|j|j|Sr )r volume_enabler:r?rrrrJszSimPlugin.volume_enablecCs|j|j|Sr )rvolume_disabler:r?rrrrKszSimPlugin.volume_disablecCs |j}tdd|D||S)NcSsg|]}t|qSrr')r)arrrr+r,z+SimPlugin.access_groups..)rZagsr)rr1r2rZsim_agsrrr access_groupss zSimPlugin.access_groupscCs |j||||j|}t|Sr )raccess_group_creater:r r)rrFinit_id init_typer#rsim_agrrrrNs zSimPlugin.access_group_createcCs|j|j|Sr )raccess_group_deleter:)r access_grouprrrrrRszSimPlugin.access_group_deletecCs|j|j|||}t|Sr )raccess_group_initiator_addr:r rrrSrOrPrrQrrrrTs z$SimPlugin.access_group_initiator_addcCs|j|j|||}t|Sr )raccess_group_initiator_deleter:r rrUrrrrVs z'SimPlugin.access_group_initiator_deletecCs|j|j|j|Sr )r volume_maskr:rrSr@rrrrrWszSimPlugin.volume_maskcCs|j|j|j|Sr )r volume_unmaskr:rXrrrrYszSimPlugin.volume_unmaskcCs|j|j|}dd|DS)NcSsg|]}t|qSrr'r3rrrr+r,z@SimPlugin.volumes_accessible_by_access_group..)r"volumes_accessible_by_access_groupr:)rrSrr6rrrrZsz,SimPlugin.volumes_accessible_by_access_groupcCs|j|j|}dd|DS)NcSsg|]}t|qSrr'r3rrrr+r,z=SimPlugin.access_groups_granted_to_volume..)raccess_groups_granted_to_volumer:)rr@rr6rrrr[sz)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_ARGUMENTriscsi_chap_auth)rrOZin_userZ in_passwordZout_userZ out_passwordrrrrr\s zSimPlugin.iscsi_chap_authcCs|j|j|Sr )rvolume_child_dependencyr:r?rrrr]sz!SimPlugin.volume_child_dependencycCs|j|j|Sr )rvolume_child_dependency_rmr:r?rrrr^sz$SimPlugin.volume_child_dependency_rmcCs |j}tdd|D||S)NcSsg|]}t|qSrr')r)frrrr+r,z SimPlugin.fs..)rfsr)rr1r2rZsim_fssrrrr`s z SimPlugin.fscCs|j|j||}t|Sr )r fs_creater:r r)rr;rFr<rsim_fsrrrraszSimPlugin.fs_createcCs|j|j|Sr )r fs_deleter:)rr`rrrrrcszSimPlugin.fs_deletecCs|j|j||}t|Sr )r fs_resizer:r r)rr`rBrrbrrrrdszSimPlugin.fs_resizecCs2|dur|j|j|d|S|j|j||j|Sr )rfs_cloner:)rZsrc_fsZ dest_fs_namesnapshotrrrrreszSimPlugin.fs_clonecCs6|dur|j|j||d|S|j|j|||j|Sr )r fs_file_cloner:)rr`Z src_file_nameZdest_file_namerfrrrrrgs  zSimPlugin.fs_file_clonecCs|j|j|}dd|DS)NcSsg|]}t|qSrr'r(rrrr+ r,z*SimPlugin.fs_snapshots..)r fs_snapshotsr:)rr`rZ sim_snapsrrrrh szSimPlugin.fs_snapshotscCs|j|j||Sr )rfs_snapshot_creater:)rr`Z snapshot_namerrrrriszSimPlugin.fs_snapshot_createcCs|j|j|j|Sr )rfs_snapshot_deleter:)rr`rfrrrrrjszSimPlugin.fs_snapshot_deleteFcCs|j|j|j||||Sr )rfs_snapshot_restorer:)rr`rffilesZ restore_filesZ all_filesrrrrrkszSimPlugin.fs_snapshot_restorecCs|j|j||Sr )rfs_child_dependencyr:rr`rlrrrrrm szSimPlugin.fs_child_dependencycCs|j|j||Sr )rfs_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..)rexportsr)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_typeoptionsrZsim_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 )rvolume_raid_infor?rrrrxPszSimPlugin.volume_raid_infocCs |j|Sr )rpool_member_info)rr;rrrrrySszSimPlugin.pool_member_infocCs |j|Sr )rvolume_raid_create_cap_getrHrrrrzVsz$SimPlugin.volume_raid_create_cap_getcCs|j||||Sr )rvolume_raid_create)rrFZ raid_typer8Z strip_sizerrrrr{Ys zSimPlugin.volume_raid_createcCs |j|Sr )rvolume_ident_led_onr?rrrr|]szSimPlugin.volume_ident_led_oncCs |j|Sr )rvolume_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 )rvolume_cache_infor?rrrrlszSimPlugin.volume_cache_infocCs|j||Sr )r!volume_physical_disk_cache_update)rr@Zpdcrrrrrosz+SimPlugin.volume_physical_disk_cache_updatecCs|j||Sr )rvolume_read_cache_policy_update)rr@Zrcprrrrrusz)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_RSVDrrrrrrrrrr s                                                  r N) Zlsmrrrrrrrr r Zsim_plugin.simarrayr r rrrrs,