00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef LIBSTORAGEMGMT_H
00020 #define LIBSTORAGEMGMT_H
00021
00022 #include "libstoragemgmt_types.h"
00023 #include "libstoragemgmt_common.h"
00024
00025 #include "libstoragemgmt_accessgroups.h"
00026 #include "libstoragemgmt_blockrange.h"
00027 #include "libstoragemgmt_capabilities.h"
00028 #include "libstoragemgmt_disk.h"
00029 #include "libstoragemgmt_error.h"
00030 #include "libstoragemgmt_fs.h"
00031 #include "libstoragemgmt_nfsexport.h"
00032 #include "libstoragemgmt_pool.h"
00033 #include "libstoragemgmt_snapshot.h"
00034 #include "libstoragemgmt_systems.h"
00035 #include "libstoragemgmt_targetport.h"
00036 #include "libstoragemgmt_volumes.h"
00037
00038
00055 #ifdef __cplusplus
00056 extern "C" {
00057 #endif
00058
00070 int LSM_DLL_EXPORT lsm_connect_password(const char *uri,
00071 const char *password,
00072 lsm_connect **conn,
00073 uint32_t timeout,
00074 lsm_error_ptr *e, lsm_flag flags);
00082 int LSM_DLL_EXPORT lsm_connect_close(lsm_connect *conn, lsm_flag flags);
00083
00094 int LSM_DLL_EXPORT lsm_plugin_info_get(lsm_connect *conn, char **desc,
00095 char **version, lsm_flag flags);
00096
00106 int LSM_DLL_EXPORT lsm_available_plugins_list(const char *sep,
00107 lsm_string_list ** plugins,
00108 lsm_flag flags);
00109
00117 int LSM_DLL_EXPORT lsm_connect_timeout_set(lsm_connect *conn,
00118 uint32_t timeout,
00119 lsm_flag flags);
00120
00128 int LSM_DLL_EXPORT lsm_connect_timeout_get(lsm_connect *conn,
00129 uint32_t *timeout,
00130 lsm_flag flags);
00131
00141 int LSM_DLL_EXPORT lsm_job_status_get(lsm_connect *conn,
00142 const char *job_id,
00143 lsm_job_status *status,
00144 uint8_t *percent_complete,
00145 lsm_flag flags);
00146
00158 int LSM_DLL_EXPORT lsm_job_status_pool_get(lsm_connect *conn,
00159 const char *job_id,
00160 lsm_job_status *status,
00161 uint8_t *percent_complete,
00162 lsm_pool **pool,
00163 lsm_flag flags);
00164
00176 int LSM_DLL_EXPORT lsm_job_status_volume_get(lsm_connect *conn,
00177 const char *job_id,
00178 lsm_job_status *status,
00179 uint8_t *percent_complete,
00180 lsm_volume **vol,
00181 lsm_flag flags);
00182
00183
00194 int LSM_DLL_EXPORT lsm_job_status_fs_get(lsm_connect *conn,
00195 const char *job_id,
00196 lsm_job_status *status,
00197 uint8_t *percent_complete,
00198 lsm_fs **fs, lsm_flag flags);
00199
00211 int LSM_DLL_EXPORT lsm_job_status_ss_get(lsm_connect *c,
00212 const char *job,
00213 lsm_job_status * status,
00214 uint8_t * percent_complete,
00215 lsm_fs_ss ** ss, lsm_flag flags);
00216
00224 int LSM_DLL_EXPORT lsm_job_free(lsm_connect *conn, char **job_id,
00225 lsm_flag flags);
00238 int LSM_DLL_EXPORT lsm_capabilities(lsm_connect *conn,
00239 lsm_system *system,
00240 lsm_storage_capabilities **cap,
00241 lsm_flag flags);
00242
00253 int LSM_DLL_EXPORT lsm_pool_list(lsm_connect *conn, char *search_key,
00254 char *search_value,
00255 lsm_pool **pool_array[],
00256 uint32_t *count, lsm_flag flags);
00257
00272 int LSM_DLL_EXPORT lsm_volume_list(lsm_connect *conn,
00273 const char *search_key,
00274 const char *search_value,
00275 lsm_volume ** volumes[],
00276 uint32_t *count, lsm_flag flags);
00277
00289 int LSM_DLL_EXPORT lsm_disk_list(lsm_connect *conn,
00290 const char *search_key,
00291 const char *search_value,
00292 lsm_disk **disks[], uint32_t *count,
00293 lsm_flag flags);
00294
00311 int LSM_DLL_EXPORT lsm_volume_create(lsm_connect *conn,
00312 lsm_pool * pool,
00313 const char *volume_name,
00314 uint64_t size,
00315 lsm_volume_provision_type provisioning,
00316 lsm_volume **new_volume,
00317 char **job, lsm_flag flags);
00318
00330 int LSM_DLL_EXPORT lsm_volume_resize(lsm_connect *conn,
00331 lsm_volume * volume,
00332 uint64_t new_size,
00333 lsm_volume **resized_volume,
00334 char **job, lsm_flag flags);
00335
00350 int LSM_DLL_EXPORT lsm_volume_replicate(lsm_connect *conn,
00351 lsm_pool *pool,
00352 lsm_replication_type rep_type,
00353 lsm_volume *volume_src,
00354 const char *name,
00355 lsm_volume **new_replicant,
00356 char **job, lsm_flag flags);
00357
00366 int LSM_DLL_EXPORT
00367 lsm_volume_replicate_range_block_size(lsm_connect *conn,
00368 lsm_system *system,
00369 uint32_t *bs,
00370 lsm_flag flags);
00371
00385 int LSM_DLL_EXPORT lsm_volume_replicate_range(lsm_connect *conn,
00386 lsm_replication_type rep_type,
00387 lsm_volume *source,
00388 lsm_volume *dest,
00389 lsm_block_range **ranges,
00390 uint32_t num_ranges,
00391 char **job, lsm_flag flags);
00392
00402 int LSM_DLL_EXPORT lsm_volume_delete(lsm_connect *conn,
00403 lsm_volume *volume, char **job,
00404 lsm_flag flags);
00405
00414 int LSM_DLL_EXPORT lsm_volume_enable(lsm_connect *conn, lsm_volume *volume,
00415 lsm_flag flags);
00416
00425 int LSM_DLL_EXPORT lsm_volume_disable(lsm_connect *conn,
00426 lsm_volume * volume, lsm_flag flags);
00427
00440 int LSM_DLL_EXPORT lsm_iscsi_chap_auth(lsm_connect *conn,
00441 const char *init_id,
00442 const char *in_user,
00443 const char *in_password,
00444 const char *out_user,
00445 const char *out_password,
00446 lsm_flag flags);
00447
00458 int LSM_DLL_EXPORT lsm_access_group_list(lsm_connect *conn,
00459 const char *search_key,
00460 const char *search_value,
00461 lsm_access_group **groups[],
00462 uint32_t *group_count,
00463 lsm_flag flags);
00464
00476 int LSM_DLL_EXPORT
00477 lsm_access_group_create(lsm_connect *conn, const char *name,
00478 const char *init_id,
00479 lsm_access_group_init_type init_type,
00480 lsm_system * system,
00481 lsm_access_group **access_group, lsm_flag flags);
00482
00490 int LSM_DLL_EXPORT lsm_access_group_delete(lsm_connect *conn,
00491 lsm_access_group *
00492 access_group, lsm_flag flags);
00493
00504 int LSM_DLL_EXPORT \
00505 lsm_access_group_initiator_add(lsm_connect *conn,
00506 lsm_access_group *access_group,
00507 const char *init_id,
00508 lsm_access_group_init_type init_type,
00509 lsm_access_group **updated_access_group,
00510 lsm_flag flags);
00511
00522 int LSM_DLL_EXPORT
00523 lsm_access_group_initiator_delete(lsm_connect *conn,
00524 lsm_access_group *access_group,
00525 const char *initiator_id,
00526 lsm_access_group_init_type init_type,
00527 lsm_access_group **updated_access_group,
00528 lsm_flag flags);
00529
00538 int LSM_DLL_EXPORT lsm_volume_mask(lsm_connect *conn,
00539 lsm_access_group *access_group,
00540 lsm_volume *volume, lsm_flag flags);
00541
00550 int LSM_DLL_EXPORT lsm_volume_unmask(lsm_connect *conn,
00551 lsm_access_group *access_group,
00552 lsm_volume *volume, lsm_flag flags);
00553
00563 int LSM_DLL_EXPORT
00564 lsm_volumes_accessible_by_access_group(lsm_connect *conn,
00565 lsm_access_group *group,
00566 lsm_volume **volumes[],
00567 uint32_t *count, lsm_flag flags);
00568
00578 int LSM_DLL_EXPORT
00579 lsm_access_groups_granted_to_volume(lsm_connect *conn,
00580 lsm_volume *volume,
00581 lsm_access_group **groups[],
00582 uint32_t *group_count,
00583 lsm_flag flags);
00584
00593 int LSM_DLL_EXPORT lsm_volume_child_dependency(lsm_connect *conn,
00594 lsm_volume *volume,
00595 uint8_t *yes,
00596 lsm_flag flags);
00597
00607 int LSM_DLL_EXPORT \
00608 lsm_volume_child_dependency_delete(lsm_connect *conn, lsm_volume *volume,
00609 char **job, lsm_flag flags);
00610
00620 int LSM_DLL_EXPORT lsm_system_list(lsm_connect *conn,
00621 lsm_system ** systems[],
00622 uint32_t * system_count, lsm_flag flags);
00623
00634 int LSM_DLL_EXPORT lsm_fs_list(lsm_connect *conn, const char *search_key,
00635 const char *search_value, lsm_fs **fs[],
00636 uint32_t *fs_count, lsm_flag flags);
00637
00650 int LSM_DLL_EXPORT lsm_fs_create(lsm_connect *conn, lsm_pool * pool,
00651 const char *name, uint64_t size_bytes,
00652 lsm_fs **fs, char **job, lsm_flag flags);
00653
00663 int LSM_DLL_EXPORT lsm_fs_delete(lsm_connect *conn, lsm_fs *fs,
00664 char **job, lsm_flag flags);
00665
00678 int LSM_DLL_EXPORT lsm_fs_clone(lsm_connect *conn, lsm_fs *src_fs,
00679 const char *name, lsm_fs_ss *optional_ss,
00680 lsm_fs **cloned_fs, char **job,
00681 lsm_flag flags);
00682
00693 int LSM_DLL_EXPORT lsm_fs_child_dependency(lsm_connect *conn, lsm_fs *fs,
00694 lsm_string_list *files,
00695 uint8_t *yes, lsm_flag flags);
00696
00708 int LSM_DLL_EXPORT
00709 lsm_fs_child_dependency_delete(lsm_connect *conn, lsm_fs *fs,
00710 lsm_string_list *files, char **job,
00711 lsm_flag flags);
00712
00724 int LSM_DLL_EXPORT lsm_fs_resize(lsm_connect *conn, lsm_fs *fs,
00725 uint64_t new_size_bytes, lsm_fs **rfs,
00726 char **job_id, lsm_flag flags);
00727
00740 int LSM_DLL_EXPORT lsm_fs_file_clone(lsm_connect *conn, lsm_fs *fs,
00741 const char *src_file_name,
00742 const char *dest_file_name,
00743 lsm_fs_ss *snapshot, char **job,
00744 lsm_flag flags);
00745
00755 int LSM_DLL_EXPORT lsm_fs_ss_list(lsm_connect *conn, lsm_fs *fs,
00756 lsm_fs_ss ** ss[], uint32_t * ss_count,
00757 lsm_flag flags);
00758
00770 int LSM_DLL_EXPORT lsm_fs_ss_create(lsm_connect *c, lsm_fs *fs,
00771 const char *name, lsm_fs_ss **snapshot,
00772 char **job, lsm_flag flags);
00773
00784 int LSM_DLL_EXPORT lsm_fs_ss_delete(lsm_connect *c, lsm_fs *fs,
00785 lsm_fs_ss *ss, char **job, lsm_flag flags);
00786
00801 int LSM_DLL_EXPORT lsm_fs_ss_restore(lsm_connect *c, lsm_fs *fs, lsm_fs_ss *ss,
00802 lsm_string_list *files,
00803 lsm_string_list *restore_files,
00804 int all_files, char **job, lsm_flag flags);
00805
00813 int LSM_DLL_EXPORT lsm_nfs_auth_types(lsm_connect *c, lsm_string_list **types,
00814 lsm_flag flags);
00815
00826 int LSM_DLL_EXPORT lsm_nfs_list(lsm_connect *c,
00827 const char *search_key,
00828 const char *search_value,
00829 lsm_nfs_export **exports[],
00830 uint32_t *count, lsm_flag flags);
00831
00848 int LSM_DLL_EXPORT lsm_nfs_export_fs(lsm_connect *c,
00849 const char *fs_id,
00850 const char *export_path,
00851 lsm_string_list *root_list,
00852 lsm_string_list *rw_list,
00853 lsm_string_list *ro_list,
00854 uint64_t anon_uid,
00855 uint64_t anon_gid,
00856 const char *auth_type,
00857 const char *options,
00858 lsm_nfs_export **exported,
00859 lsm_flag flags);
00860
00868 int LSM_DLL_EXPORT lsm_nfs_export_delete(lsm_connect *c,
00869 lsm_nfs_export * e,
00870 lsm_flag flags);
00871
00882 int LSM_DLL_EXPORT lsm_target_port_list(lsm_connect *c,
00883 const char *search_key,
00884 const char *search_value,
00885 lsm_target_port **target_ports[],
00886 uint32_t *count, lsm_flag flags);
00887
00903 int LSM_DLL_EXPORT lsm_volume_raid_info(lsm_connect *c,
00904 lsm_volume *volume,
00905 lsm_volume_raid_type *raid_type,
00906 uint32_t *strip_size,
00907 uint32_t *disk_count,
00908 uint32_t *min_io_size,
00909 uint32_t *opt_io_size,
00910 lsm_flag flags);
00911
00934 int LSM_DLL_EXPORT lsm_pool_member_info(lsm_connect *c,
00935 lsm_pool *pool,
00936 lsm_volume_raid_type *raid_type,
00937 lsm_pool_member_type *member_type,
00938 lsm_string_list **member_ids,
00939 lsm_flag flags);
00940
00965 int LSM_DLL_EXPORT
00966 lsm_volume_raid_create_cap_get(lsm_connect *c, lsm_system *system,
00967 uint32_t **supported_raid_types,
00968 uint32_t *supported_raid_type_count,
00969 uint32_t **supported_strip_sizes,
00970 uint32_t *supported_strip_size_count,
00971 lsm_flag flags);
00972
00999 int LSM_DLL_EXPORT lsm_volume_raid_create(lsm_connect *c,
01000 const char *name,
01001 lsm_volume_raid_type raid_type,
01002 lsm_disk *disks[],
01003 uint32_t disk_count,
01004 uint32_t strip_size,
01005 lsm_volume **new_volume,
01006 lsm_flag flags);
01007
01008 #ifdef __cplusplus
01009 }
01010 #endif
01011 #endif