zonemgr-1 - API for Zones administration
#include <rad/client/1/zonemgr.h> cc [ flag... ] file... -lzonemgr1_client [ library... ] interface ZoneManager zonemgr_EvacuationResult_t * evacuationState ; (ro) rc_err_t zonemgr_ZoneManager_create(rc_instance_t *inst, const char *name, const char *path, const char *template, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_delete(rc_instance_t *inst, const char *name, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_createConfig(rc_instance_t *inst, const char *template, rc_instance_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_importConfig(rc_instance_t *inst, boolean_t noexecute, const char *name, const char **configuration, int configuration_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_connectRemote(rc_instance_t *inst, const char *uri, const char *password, const char *SSH_AUTH_SOCK, rc_instance_t **result, zonemgr_MigrationError_t **error); rc_err_t zonemgr_ZoneManager_initEvacuate(rc_instance_t *inst, boolean_t *isReturn, boolean_t *allowPartial, boolean_t *dryRun, boolean_t *evacuateAll, boolean_t *overwriteConfig, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); rc_err_t zonemgr_ZoneManager_evacuate(rc_instance_t *inst, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); rc_err_t zonemgr_ZoneManager_cancelEvacuate(rc_instance_t *inst, zonemgr_EvacuationError_t **error); typedef void (*zonemgr_ZoneManager_stateChange_cb_f)(rc_instance_t *inst, zonemgr_StateChange_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_ZoneManager_subscribe_stateChange(rc_instance_t *inst, zonemgr_ZoneManager_stateChange_cb_f cb, void *arg); rc_err_t zonemgr_ZoneManager_unsubscribe_stateChange(rc_instance_t *inst, void **arg); typedef void (*zonemgr_ZoneManager_evacuationProgress_cb_f)(rc_instance_t *inst, zonemgr_EvacuationProgress_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_ZoneManager_subscribe_evacuationProgress(rc_instance_t *inst, zonemgr_ZoneManager_evacuationProgress_cb_f cb, void *arg); rc_err_t zonemgr_ZoneManager_unsubscribe_evacuationProgress(rc_instance_t *inst, void **arg); interface Zone const char ** auxstate ; (ro) const char * brand ; (ro) int id ; (ro) const char * uuid ; (ro) const char * name ; (ro) const char * state ; (ro) rc_err_t zonemgr_Zone_cancelConfig(rc_instance_t *inst, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_exportConfig(rc_instance_t *inst, boolean_t *includeEdits, boolean_t *liveMode, boolean_t *reimport, char **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_update(rc_instance_t *inst, boolean_t noexecute, const char **commands, int commands_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_editConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_commitConfig(rc_instance_t *inst, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_configIsLive(rc_instance_t *inst, boolean_t *result); rc_err_t zonemgr_Zone_configIsStale(rc_instance_t *inst, boolean_t *result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_addResource(rc_instance_t *inst, zonemgr_Resource_t *resource, zonemgr_Resource_t *scope, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_reloadConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_removeResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_getResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Resource_t ***result, int *result_cnt, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_getResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Property_t ***result, int *result_cnt, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_setResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Property_t **properties, int properties_count, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_clearResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_apply(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_attach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_boot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_clone(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_detach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_halt(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_install(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_mark(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_migrate(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_move(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_rename(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_ready(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_reboot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_savecore(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_shutdown(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_suspend(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_uninstall(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_verify(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_prepareForMigration(rc_instance_t *inst, zonemgr_MigrationError_t **error); rc_err_t zonemgr_Zone_initMigration(rc_instance_t *inst, zonemgr_MigrationType_t type, const rc_instance_t *conn, const char *cipher, boolean_t *overwriteConfig, rc_instance_t **result, zonemgr_MigrationError_t **error); typedef void (*zonemgr_Zone_configChange_cb_f)(rc_instance_t *inst, zonemgr_ConfigChange_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_Zone_subscribe_configChange(rc_instance_t *inst, zonemgr_Zone_configChange_cb_f cb, void *arg); rc_err_t zonemgr_Zone_unsubscribe_configChange(rc_instance_t *inst, void **arg); typedef void (*zonemgr_Zone_migrationProgress_cb_f)(rc_instance_t *inst, zonemgr_MigrationProgress_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_Zone_subscribe_migrationProgress(rc_instance_t *inst, zonemgr_Zone_migrationProgress_cb_f cb, void *arg); rc_err_t zonemgr_Zone_unsubscribe_migrationProgress(rc_instance_t *inst, void **arg); interface ZoneInfo const char * brand ; (ro) int id ; (ro) const char * uuid ; (ro) const char * name ; (ro) boolean_t isGlobal ; (ro) interface MigrationConnection boolean_t supportsMultipleZones ; (ro) const char * hostname ; (ro) boolean_t supportsSolarisZones ; (ro) boolean_t * supportsSolaris10Zones ; (ro) rc_err_t zonemgr_MigrationConnection_getSupportedCiphers(rc_instance_t *inst, zonemgr_SupportedCiphers_t **result, zonemgr_MigrationError_t **error); interface ZoneMigration zonemgr_MigrationState_t state ; (ro) rc_err_t zonemgr_ZoneMigration_migrate(rc_instance_t *inst, boolean_t *suspendAtStart, zonemgr_MigrationAttach_t *attachOptions, zonemgr_MigrationError_t **error); rc_err_t zonemgr_ZoneMigration_cancel(rc_instance_t *inst, zonemgr_MigrationError_t **error); Enumerated Types enum ErrorCode typedef enum zonemgr_ErrorCode { ZEC_NONE = 0, ZEC_FRAMEWORK_ERROR = 1, ZEC_SNAPSHOT_ERROR = 2, ZEC_COMMAND_ERROR = 3, ZEC_RESOURCE_ALREADY_EXISTS = 4, ZEC_RESOURCE_NOT_FOUND = 5, ZEC_RESOURCE_TOO_MANY = 6, ZEC_RESOURCE_UNKNOWN = 7, ZEC_ALREADY_EDITING = 8, ZEC_INCOMPLETE_NO_CONFIG = 9, ZEC_PROPERTY_UNKNOWN = 10, ZEC_NOT_EDITING = 11, ZEC_SYSTEM_ERROR = 12, ZEC_INVALID_ARGUMENT = 13, ZEC_INVALID_ZONE_STATE = 14, } zonemgr_ErrorCode_t; enum PropertyValueType typedef enum zonemgr_PropertyValueType { ZPVT_PROP_SIMPLE = 0, ZPVT_PROP_LIST = 1, ZPVT_PROP_COMPLEX = 2, } zonemgr_PropertyValueType_t; enum MigrationOperation typedef enum zonemgr_MigrationOperation { ZMO_FRAMEWORK = 0, ZMO_CONNECT = 1, ZMO_INIT_CRYPTO = 2, ZMO_CONFIG_CHECK = 3, ZMO_CONFIGURE = 4, ZMO_ATTACH = 5, ZMO_BOOT = 6, ZMO_MIGRATE_INITIAL = 7, ZMO_MIGRATE = 8, ZMO_SUSPEND = 9, ZMO_RESTART = 10, ZMO_HALT = 11, ZMO_DETACH = 12, ZMO_UNCONFIGURE = 13, ZMO_COMPLETE = 14, ZMO_CANCEL = 15, } zonemgr_MigrationOperation_t; enum ErrorDomain typedef enum zonemgr_ErrorDomain { ZED_SYSTEM = 0, ZED_ZONECFG = 1, } zonemgr_ErrorDomain_t; enum MigrationState typedef enum zonemgr_MigrationState { ZMS_NONE = 0, ZMS_INITIALIZED = 1, ZMS_MIGRATING = 2, ZMS_COMPLETED = 3, } zonemgr_MigrationState_t; enum MigrationType typedef enum zonemgr_MigrationType { ZMT_LIVE = 0, ZMT_COLD = 1, } zonemgr_MigrationType_t; enum MigrationUpdateOpts typedef enum zonemgr_MigrationUpdateOpts { ZMUO_NONE = 0, ZMUO_MIN = 1, ZMUO_ALL = 2, } zonemgr_MigrationUpdateOpts_t; enum MigrationCloneOpts typedef enum zonemgr_MigrationCloneOpts { ZMCO_NONE = 0, ZMCO_FORCE = 1, ZMCO_DENY = 2, } zonemgr_MigrationCloneOpts_t; enum MigrationDestroyOrphanOpt typedef enum zonemgr_MigrationDestroyOrphanOpt { ZMDOO_NONE = 0, ZMDOO_DOSET = 1, } zonemgr_MigrationDestroyOrphanOpt_t; enum MigrationLastBootedOpt typedef enum zonemgr_MigrationLastBootedOpt { ZMLBO_NONE = 0, ZMLBO_LBSET = 1, } zonemgr_MigrationLastBootedOpt_t; enum MigrationLastMountedOpt typedef enum zonemgr_MigrationLastMountedOpt { ZMLMO_NONE = 0, ZMLMO_LMSET = 1, } zonemgr_MigrationLastMountedOpt_t; enum MigrationMatchedOpt typedef enum zonemgr_MigrationMatchedOpt { ZMMO_NONE = 0, ZMMO_MSET = 1, } zonemgr_MigrationMatchedOpt_t; enum EvacuationStatus typedef enum zonemgr_EvacuationStatus { ZES_SUCCESS = 0, ZES_FAIL = 1, ZES_PARTIAL_FAIL = 2, } zonemgr_EvacuationStatus_t; enum EvacuationErrorCode typedef enum zonemgr_EvacuationErrorCode { ZEEC_FRAMEWORK = 0, ZEEC_EVACUATION_IN_PROGRESS = 1, ZEEC_EVACUATION_NOT_INITED = 2, ZEEC_NO_EVACUATION_TO_RETURN = 3, ZEEC_NO_EVACUATION_TO_CANCEL = 4, ZEEC_EVACUATION_NOT_PERMITTED = 5, ZEEC_NO_ZONES_TO_EVACUATE = 6, ZEEC_EVACUATION_CANCELED = 7, } zonemgr_EvacuationErrorCode_t; enum MigrationMilestone typedef enum zonemgr_MigrationMilestone { ZMM_MIGRATE_INITIALIZING = 0, ZMM_MIGRATE_INITIALIZATION_COMPLETE = 1, ZMM_MIGRATE_INITIALIZATION_FAIL = 2, ZMM_MIGRATING = 3, ZMM_MIGRATE_COMPLETE = 4, ZMM_MIGRATE_FAIL = 5, ZMM_EVACUATE_INITIALIZING = 6, ZMM_EVACUATE_INITIALIZATION_COMPLETE = 7, ZMM_EVACUATE_INITIALIZATION_FAIL = 8, ZMM_EVACUATING = 9, ZMM_EVACUATE_COMPLETE = 10, ZMM_EVACUATE_FAIL = 11, ZMM_EVACUATE_CANCELED = 12, } zonemgr_MigrationMilestone_t; enum MigrationStatus typedef enum zonemgr_MigrationStatus { ZMS_SUCCESS = 0, ZMS_MIGRATE_NOT_ATTEMPTED = 1, ZMS_MIGRATION_ERROR = 2, ZMS_SYSTEM_ERROR = 3, ZMS_NOMEM_ERROR = 4, ZMS_NOTFOUND_ERROR = 5, ZMS_PRIV_ERROR = 6, } zonemgr_MigrationStatus_t; Structured Types struct Result typedef struct zonemgr_Result zonemgr_Result_t; struct zonemgr_Result { zonemgr_ErrorCode_t *zr_code; char *zr_str; char *zr_stdout; char *zr_stderr; }; void zonemgr_Result_free(zonemgr_Result_t *in); struct ConfigChange typedef struct zonemgr_ConfigChange zonemgr_ConfigChange_t; struct zonemgr_ConfigChange { char *zcc_zone; }; void zonemgr_ConfigChange_free(zonemgr_ConfigChange_t *in); struct StateChange typedef struct zonemgr_StateChange zonemgr_StateChange_t; struct zonemgr_StateChange { char *zsc_zone; char *zsc_oldstate; char *zsc_newstate; }; void zonemgr_StateChange_free(zonemgr_StateChange_t *in); struct Property typedef struct zonemgr_Property zonemgr_Property_t; struct zonemgr_Property { char *zp_name; char *zp_value; zonemgr_PropertyValueType_t *zp_type; char **zp_listvalue; int zp_listvalue_count; char **zp_complexvalue; int zp_complexvalue_count; }; void zonemgr_Property_free(zonemgr_Property_t *in); struct Resource typedef struct zonemgr_Resource zonemgr_Resource_t; struct zonemgr_Resource { char *zr_type; zonemgr_Property_t **zr_properties; int zr_properties_count; char *zr_parent; }; void zonemgr_Resource_free(zonemgr_Resource_t *in); struct Errno typedef struct zonemgr_Errno zonemgr_Errno_t; struct zonemgr_Errno { zonemgr_ErrorDomain_t ze_domain; int ze_errno; }; void zonemgr_Errno_free(zonemgr_Errno_t *in); struct MigrationError typedef struct zonemgr_MigrationError zonemgr_MigrationError_t; struct zonemgr_MigrationError { zonemgr_MigrationOperation_t zme_operation; zonemgr_Errno_t *zme_err; char *zme_str; }; void zonemgr_MigrationError_free(zonemgr_MigrationError_t *in); struct MigrationAttach typedef struct zonemgr_MigrationAttach zonemgr_MigrationAttach_t; struct zonemgr_MigrationAttach { zonemgr_MigrationUpdateOpts_t zma_update; zonemgr_MigrationCloneOpts_t zma_clone; zonemgr_MigrationDestroyOrphanOpt_t zma_destroyOrphan; zonemgr_MigrationLastBootedOpt_t zma_lastBooted; zonemgr_MigrationLastMountedOpt_t zma_lastMounted; zonemgr_MigrationMatchedOpt_t zma_matched; char *zma_zbe; }; void zonemgr_MigrationAttach_free(zonemgr_MigrationAttach_t *in); struct EvacuationMigrationResult typedef struct zonemgr_EvacuationMigrationResult zonemgr_EvacuationMigrationResult_t; struct zonemgr_EvacuationMigrationResult { char *zemr_zoneName; boolean_t zemr_evacuated; char *zemr_evacuationTarget; zonemgr_MigrationStatus_t zemr_migrationStatus; zonemgr_MigrationError_t *zemr_migrationError; }; void zonemgr_EvacuationMigrationResult_free(zonemgr_EvacuationMigrationResult_t *in); struct EvacuationResult typedef struct zonemgr_EvacuationResult zonemgr_EvacuationResult_t; struct zonemgr_EvacuationResult { zonemgr_EvacuationStatus_t zer_status; boolean_t zer_returning; zonemgr__rad_dict_string_EvacuationMigrationResult_t *zer_migrationResults; }; void zonemgr_EvacuationResult_free(zonemgr_EvacuationResult_t *in); struct EvacuationError typedef struct zonemgr_EvacuationError zonemgr_EvacuationError_t; struct zonemgr_EvacuationError { zonemgr_EvacuationErrorCode_t zee_code; zonemgr_Errno_t *zee_err; char *zee_str; }; void zonemgr_EvacuationError_free(zonemgr_EvacuationError_t *in); struct MigrationProgress typedef struct zonemgr_MigrationProgress zonemgr_MigrationProgress_t; struct zonemgr_MigrationProgress { char *zmp_zone; rc_instance_t *zmp_connection; zonemgr_MigrationOperation_t zmp_operation; char *zmp_str; unsigned int *zmp_percent_complete; }; void zonemgr_MigrationProgress_free(zonemgr_MigrationProgress_t *in); struct EvacuationProgress typedef struct zonemgr_EvacuationProgress zonemgr_EvacuationProgress_t; struct zonemgr_EvacuationProgress { char *zep_zoneName; char *zep_remoteHost; boolean_t zep_returning; zonemgr_MigrationMilestone_t zep_migrationMilestone; unsigned int zep_zoneCount; unsigned long long *zep_transferRate; char *zep_zoneProgress; }; void zonemgr_EvacuationProgress_free(zonemgr_EvacuationProgress_t *in); struct SupportedCiphers typedef struct zonemgr_SupportedCiphers zonemgr_SupportedCiphers_t; struct zonemgr_SupportedCiphers { char **zsc_source; int zsc_source_count; char **zsc_destination; int zsc_destination_count; char *zsc_defaultcipher; }; void zonemgr_SupportedCiphers_free(zonemgr_SupportedCiphers_t *in); Dictionaries Dictionary { string : EvacuationMigrationResult } typedef struct base_rad_dict zonemgr__rad_dict_string_EvacuationMigrationResult_t;
ZONEMGR-1(3rad) RAD Module Definitions ZONEMGR-1(3rad) NAME zonemgr - API for Zones administration SYNOPSIS #include <rad/client/1/zonemgr.h> cc [ flag... ] file... -lzonemgr1_client [ library... ] interface ZoneManager zonemgr_EvacuationResult_t * evacuationState ; (ro) rc_err_t zonemgr_ZoneManager_create(rc_instance_t *inst, const char *name, const char *path, const char *template, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_delete(rc_instance_t *inst, const char *name, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_createConfig(rc_instance_t *inst, const char *template, rc_instance_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_importConfig(rc_instance_t *inst, boolean_t noexecute, const char *name, const char **configuration, int configuration_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_ZoneManager_connectRemote(rc_instance_t *inst, const char *uri, const char *password, const char *SSH_AUTH_SOCK, rc_instance_t **result, zonemgr_MigrationError_t **error); rc_err_t zonemgr_ZoneManager_initEvacuate(rc_instance_t *inst, boolean_t *isReturn, boolean_t *allowPartial, boolean_t *dryRun, boolean_t *evacuateAll, boolean_t *overwriteConfig, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); rc_err_t zonemgr_ZoneManager_evacuate(rc_instance_t *inst, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); rc_err_t zonemgr_ZoneManager_cancelEvacuate(rc_instance_t *inst, zonemgr_EvacuationError_t **error); typedef void (*zonemgr_ZoneManager_stateChange_cb_f)(rc_instance_t *inst, zonemgr_StateChange_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_ZoneManager_subscribe_stateChange(rc_instance_t *inst, zonemgr_ZoneManager_stateChange_cb_f cb, void *arg); rc_err_t zonemgr_ZoneManager_unsubscribe_stateChange(rc_instance_t *inst, void **arg); typedef void (*zonemgr_ZoneManager_evacuationProgress_cb_f)(rc_instance_t *inst, zonemgr_EvacuationProgress_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_ZoneManager_subscribe_evacuationProgress(rc_instance_t *inst, zonemgr_ZoneManager_evacuationProgress_cb_f cb, void *arg); rc_err_t zonemgr_ZoneManager_unsubscribe_evacuationProgress(rc_instance_t *inst, void **arg); interface Zone const char ** auxstate ; (ro) const char * brand ; (ro) int id ; (ro) const char * uuid ; (ro) const char * name ; (ro) const char * state ; (ro) rc_err_t zonemgr_Zone_cancelConfig(rc_instance_t *inst, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_exportConfig(rc_instance_t *inst, boolean_t *includeEdits, boolean_t *liveMode, boolean_t *reimport, char **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_update(rc_instance_t *inst, boolean_t noexecute, const char **commands, int commands_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_editConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_commitConfig(rc_instance_t *inst, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_configIsLive(rc_instance_t *inst, boolean_t *result); rc_err_t zonemgr_Zone_configIsStale(rc_instance_t *inst, boolean_t *result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_addResource(rc_instance_t *inst, zonemgr_Resource_t *resource, zonemgr_Resource_t *scope, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_reloadConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_removeResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_getResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Resource_t ***result, int *result_cnt, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_getResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Property_t ***result, int *result_cnt, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_setResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Property_t **properties, int properties_count, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_clearResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_apply(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_attach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_boot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_clone(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_detach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_halt(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_install(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_mark(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_migrate(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_move(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_rename(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_ready(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_reboot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_savecore(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_shutdown(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_suspend(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_uninstall(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_verify(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); rc_err_t zonemgr_Zone_prepareForMigration(rc_instance_t *inst, zonemgr_MigrationError_t **error); rc_err_t zonemgr_Zone_initMigration(rc_instance_t *inst, zonemgr_MigrationType_t type, const rc_instance_t *conn, const char *cipher, boolean_t *overwriteConfig, rc_instance_t **result, zonemgr_MigrationError_t **error); typedef void (*zonemgr_Zone_configChange_cb_f)(rc_instance_t *inst, zonemgr_ConfigChange_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_Zone_subscribe_configChange(rc_instance_t *inst, zonemgr_Zone_configChange_cb_f cb, void *arg); rc_err_t zonemgr_Zone_unsubscribe_configChange(rc_instance_t *inst, void **arg); typedef void (*zonemgr_Zone_migrationProgress_cb_f)(rc_instance_t *inst, zonemgr_MigrationProgress_t *payload, struct timespec ts, void *arg); rc_err_t zonemgr_Zone_subscribe_migrationProgress(rc_instance_t *inst, zonemgr_Zone_migrationProgress_cb_f cb, void *arg); rc_err_t zonemgr_Zone_unsubscribe_migrationProgress(rc_instance_t *inst, void **arg); interface ZoneInfo const char * brand ; (ro) int id ; (ro) const char * uuid ; (ro) const char * name ; (ro) boolean_t isGlobal ; (ro) interface MigrationConnection boolean_t supportsMultipleZones ; (ro) const char * hostname ; (ro) boolean_t supportsSolarisZones ; (ro) boolean_t * supportsSolaris10Zones ; (ro) rc_err_t zonemgr_MigrationConnection_getSupportedCiphers(rc_instance_t *inst, zonemgr_SupportedCiphers_t **result, zonemgr_MigrationError_t **error); interface ZoneMigration zonemgr_MigrationState_t state ; (ro) rc_err_t zonemgr_ZoneMigration_migrate(rc_instance_t *inst, boolean_t *suspendAtStart, zonemgr_MigrationAttach_t *attachOptions, zonemgr_MigrationError_t **error); rc_err_t zonemgr_ZoneMigration_cancel(rc_instance_t *inst, zonemgr_MigrationError_t **error); Enumerated Types enum ErrorCode typedef enum zonemgr_ErrorCode { ZEC_NONE = 0, ZEC_FRAMEWORK_ERROR = 1, ZEC_SNAPSHOT_ERROR = 2, ZEC_COMMAND_ERROR = 3, ZEC_RESOURCE_ALREADY_EXISTS = 4, ZEC_RESOURCE_NOT_FOUND = 5, ZEC_RESOURCE_TOO_MANY = 6, ZEC_RESOURCE_UNKNOWN = 7, ZEC_ALREADY_EDITING = 8, ZEC_INCOMPLETE_NO_CONFIG = 9, ZEC_PROPERTY_UNKNOWN = 10, ZEC_NOT_EDITING = 11, ZEC_SYSTEM_ERROR = 12, ZEC_INVALID_ARGUMENT = 13, ZEC_INVALID_ZONE_STATE = 14, } zonemgr_ErrorCode_t; enum PropertyValueType typedef enum zonemgr_PropertyValueType { ZPVT_PROP_SIMPLE = 0, ZPVT_PROP_LIST = 1, ZPVT_PROP_COMPLEX = 2, } zonemgr_PropertyValueType_t; enum MigrationOperation typedef enum zonemgr_MigrationOperation { ZMO_FRAMEWORK = 0, ZMO_CONNECT = 1, ZMO_INIT_CRYPTO = 2, ZMO_CONFIG_CHECK = 3, ZMO_CONFIGURE = 4, ZMO_ATTACH = 5, ZMO_BOOT = 6, ZMO_MIGRATE_INITIAL = 7, ZMO_MIGRATE = 8, ZMO_SUSPEND = 9, ZMO_RESTART = 10, ZMO_HALT = 11, ZMO_DETACH = 12, ZMO_UNCONFIGURE = 13, ZMO_COMPLETE = 14, ZMO_CANCEL = 15, } zonemgr_MigrationOperation_t; enum ErrorDomain typedef enum zonemgr_ErrorDomain { ZED_SYSTEM = 0, ZED_ZONECFG = 1, } zonemgr_ErrorDomain_t; enum MigrationState typedef enum zonemgr_MigrationState { ZMS_NONE = 0, ZMS_INITIALIZED = 1, ZMS_MIGRATING = 2, ZMS_COMPLETED = 3, } zonemgr_MigrationState_t; enum MigrationType typedef enum zonemgr_MigrationType { ZMT_LIVE = 0, ZMT_COLD = 1, } zonemgr_MigrationType_t; enum MigrationUpdateOpts typedef enum zonemgr_MigrationUpdateOpts { ZMUO_NONE = 0, ZMUO_MIN = 1, ZMUO_ALL = 2, } zonemgr_MigrationUpdateOpts_t; enum MigrationCloneOpts typedef enum zonemgr_MigrationCloneOpts { ZMCO_NONE = 0, ZMCO_FORCE = 1, ZMCO_DENY = 2, } zonemgr_MigrationCloneOpts_t; enum MigrationDestroyOrphanOpt typedef enum zonemgr_MigrationDestroyOrphanOpt { ZMDOO_NONE = 0, ZMDOO_DOSET = 1, } zonemgr_MigrationDestroyOrphanOpt_t; enum MigrationLastBootedOpt typedef enum zonemgr_MigrationLastBootedOpt { ZMLBO_NONE = 0, ZMLBO_LBSET = 1, } zonemgr_MigrationLastBootedOpt_t; enum MigrationLastMountedOpt typedef enum zonemgr_MigrationLastMountedOpt { ZMLMO_NONE = 0, ZMLMO_LMSET = 1, } zonemgr_MigrationLastMountedOpt_t; enum MigrationMatchedOpt typedef enum zonemgr_MigrationMatchedOpt { ZMMO_NONE = 0, ZMMO_MSET = 1, } zonemgr_MigrationMatchedOpt_t; enum EvacuationStatus typedef enum zonemgr_EvacuationStatus { ZES_SUCCESS = 0, ZES_FAIL = 1, ZES_PARTIAL_FAIL = 2, } zonemgr_EvacuationStatus_t; enum EvacuationErrorCode typedef enum zonemgr_EvacuationErrorCode { ZEEC_FRAMEWORK = 0, ZEEC_EVACUATION_IN_PROGRESS = 1, ZEEC_EVACUATION_NOT_INITED = 2, ZEEC_NO_EVACUATION_TO_RETURN = 3, ZEEC_NO_EVACUATION_TO_CANCEL = 4, ZEEC_EVACUATION_NOT_PERMITTED = 5, ZEEC_NO_ZONES_TO_EVACUATE = 6, ZEEC_EVACUATION_CANCELED = 7, } zonemgr_EvacuationErrorCode_t; enum MigrationMilestone typedef enum zonemgr_MigrationMilestone { ZMM_MIGRATE_INITIALIZING = 0, ZMM_MIGRATE_INITIALIZATION_COMPLETE = 1, ZMM_MIGRATE_INITIALIZATION_FAIL = 2, ZMM_MIGRATING = 3, ZMM_MIGRATE_COMPLETE = 4, ZMM_MIGRATE_FAIL = 5, ZMM_EVACUATE_INITIALIZING = 6, ZMM_EVACUATE_INITIALIZATION_COMPLETE = 7, ZMM_EVACUATE_INITIALIZATION_FAIL = 8, ZMM_EVACUATING = 9, ZMM_EVACUATE_COMPLETE = 10, ZMM_EVACUATE_FAIL = 11, ZMM_EVACUATE_CANCELED = 12, } zonemgr_MigrationMilestone_t; enum MigrationStatus typedef enum zonemgr_MigrationStatus { ZMS_SUCCESS = 0, ZMS_MIGRATE_NOT_ATTEMPTED = 1, ZMS_MIGRATION_ERROR = 2, ZMS_SYSTEM_ERROR = 3, ZMS_NOMEM_ERROR = 4, ZMS_NOTFOUND_ERROR = 5, ZMS_PRIV_ERROR = 6, } zonemgr_MigrationStatus_t; Structured Types struct Result typedef struct zonemgr_Result zonemgr_Result_t; struct zonemgr_Result { zonemgr_ErrorCode_t *zr_code; char *zr_str; char *zr_stdout; char *zr_stderr; }; void zonemgr_Result_free(zonemgr_Result_t *in); struct ConfigChange typedef struct zonemgr_ConfigChange zonemgr_ConfigChange_t; struct zonemgr_ConfigChange { char *zcc_zone; }; void zonemgr_ConfigChange_free(zonemgr_ConfigChange_t *in); struct StateChange typedef struct zonemgr_StateChange zonemgr_StateChange_t; struct zonemgr_StateChange { char *zsc_zone; char *zsc_oldstate; char *zsc_newstate; }; void zonemgr_StateChange_free(zonemgr_StateChange_t *in); struct Property typedef struct zonemgr_Property zonemgr_Property_t; struct zonemgr_Property { char *zp_name; char *zp_value; zonemgr_PropertyValueType_t *zp_type; char **zp_listvalue; int zp_listvalue_count; char **zp_complexvalue; int zp_complexvalue_count; }; void zonemgr_Property_free(zonemgr_Property_t *in); struct Resource typedef struct zonemgr_Resource zonemgr_Resource_t; struct zonemgr_Resource { char *zr_type; zonemgr_Property_t **zr_properties; int zr_properties_count; char *zr_parent; }; void zonemgr_Resource_free(zonemgr_Resource_t *in); struct Errno typedef struct zonemgr_Errno zonemgr_Errno_t; struct zonemgr_Errno { zonemgr_ErrorDomain_t ze_domain; int ze_errno; }; void zonemgr_Errno_free(zonemgr_Errno_t *in); struct MigrationError typedef struct zonemgr_MigrationError zonemgr_MigrationError_t; struct zonemgr_MigrationError { zonemgr_MigrationOperation_t zme_operation; zonemgr_Errno_t *zme_err; char *zme_str; }; void zonemgr_MigrationError_free(zonemgr_MigrationError_t *in); struct MigrationAttach typedef struct zonemgr_MigrationAttach zonemgr_MigrationAttach_t; struct zonemgr_MigrationAttach { zonemgr_MigrationUpdateOpts_t zma_update; zonemgr_MigrationCloneOpts_t zma_clone; zonemgr_MigrationDestroyOrphanOpt_t zma_destroyOrphan; zonemgr_MigrationLastBootedOpt_t zma_lastBooted; zonemgr_MigrationLastMountedOpt_t zma_lastMounted; zonemgr_MigrationMatchedOpt_t zma_matched; char *zma_zbe; }; void zonemgr_MigrationAttach_free(zonemgr_MigrationAttach_t *in); struct EvacuationMigrationResult typedef struct zonemgr_EvacuationMigrationResult zonemgr_EvacuationMigrationResult_t; struct zonemgr_EvacuationMigrationResult { char *zemr_zoneName; boolean_t zemr_evacuated; char *zemr_evacuationTarget; zonemgr_MigrationStatus_t zemr_migrationStatus; zonemgr_MigrationError_t *zemr_migrationError; }; void zonemgr_EvacuationMigrationResult_free(zonemgr_EvacuationMigrationResult_t *in); struct EvacuationResult typedef struct zonemgr_EvacuationResult zonemgr_EvacuationResult_t; struct zonemgr_EvacuationResult { zonemgr_EvacuationStatus_t zer_status; boolean_t zer_returning; zonemgr__rad_dict_string_EvacuationMigrationResult_t *zer_migrationResults; }; void zonemgr_EvacuationResult_free(zonemgr_EvacuationResult_t *in); struct EvacuationError typedef struct zonemgr_EvacuationError zonemgr_EvacuationError_t; struct zonemgr_EvacuationError { zonemgr_EvacuationErrorCode_t zee_code; zonemgr_Errno_t *zee_err; char *zee_str; }; void zonemgr_EvacuationError_free(zonemgr_EvacuationError_t *in); struct MigrationProgress typedef struct zonemgr_MigrationProgress zonemgr_MigrationProgress_t; struct zonemgr_MigrationProgress { char *zmp_zone; rc_instance_t *zmp_connection; zonemgr_MigrationOperation_t zmp_operation; char *zmp_str; unsigned int *zmp_percent_complete; }; void zonemgr_MigrationProgress_free(zonemgr_MigrationProgress_t *in); struct EvacuationProgress typedef struct zonemgr_EvacuationProgress zonemgr_EvacuationProgress_t; struct zonemgr_EvacuationProgress { char *zep_zoneName; char *zep_remoteHost; boolean_t zep_returning; zonemgr_MigrationMilestone_t zep_migrationMilestone; unsigned int zep_zoneCount; unsigned long long *zep_transferRate; char *zep_zoneProgress; }; void zonemgr_EvacuationProgress_free(zonemgr_EvacuationProgress_t *in); struct SupportedCiphers typedef struct zonemgr_SupportedCiphers zonemgr_SupportedCiphers_t; struct zonemgr_SupportedCiphers { char **zsc_source; int zsc_source_count; char **zsc_destination; int zsc_destination_count; char *zsc_defaultcipher; }; void zonemgr_SupportedCiphers_free(zonemgr_SupportedCiphers_t *in); Dictionaries Dictionary { string : EvacuationMigrationResult } typedef struct base_rad_dict zonemgr__rad_dict_string_EvacuationMigrationResult_t; DESCRIPTION API com.oracle.solaris.rad.zonemgr [1] This API provides functionality for the configuration and administration of Zones subsystem. The API provides a snapshot of the state of zones. The snapshot can be updated externally, either in another RAD session or by some other mechanism. This means that operations like commitConfig() may fail due to the changes introduced by other agents. The API detects and reports the creation and deletion of zones as well as configuration changes for individual zones. Some zones properties are accessed more frequently than others, for example, name. These properties are specifically exported as properties of the RAD interface as well as included in the list of zone properties. Three properties, id, state and auxstate, are not part of the configuration snapshot. These properties can vary without invalidating the integrity of the snapshot. These properties are documented as dynamic. The following sample Python clients illustrate some simple interactions with the module. INTERFACES interface ZoneManager Manage zones on this system Create and delete zones. Changes in the state of zones can be monitored through the StateChange event. ZoneManager Properties zonemgr_EvacuationResult_t * evacuationState (read-only, nullable) -- The current evacuation state Available since version 1.4. rc_err_t zonemgr_ZoneManager_get_evacuationState(rc_instance_t *inst, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); Get property value. Arguments: inst -- RAD instance result -- Property value returned error Read Error: zonemgr_EvacuationError_t ** ZoneManager Methods rc_err_t zonemgr_ZoneManager_create(rc_instance_t *inst, const char *name, const char *path, const char *template, zonemgr_Result_t **result, zonemgr_Result_t **error); Create a zone Create a zone with the given name. Arguments: inst -- RAD instance name path (nullable) template (nullable) result error rc_err_t zonemgr_ZoneManager_delete(rc_instance_t *inst, const char *name, zonemgr_Result_t **result, zonemgr_Result_t **error); Delete a zone Arguments: inst -- RAD instance name result error rc_err_t zonemgr_ZoneManager_createConfig(rc_instance_t *inst, const char *template, rc_instance_t **result, zonemgr_Result_t **error); Create an ephemeral configuration Create a configuration for editing without a zone name. This can be used to build a configuration, then export it, but it cannot be directly saved with commitConfig(). Arguments: inst -- RAD instance template (nullable) result error rc_err_t zonemgr_ZoneManager_importConfig(rc_instance_t *inst, boolean_t noexecute, const char *name, const char **configuration, int configuration_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Import a zone The supplied configuration must be in a format that could be used in a zonecfg command file - e.g. output of zonecfg export. Arguments: inst -- RAD instance noexecute -- If true, do not execute the commands, but verify that they would result in a legal zone configuration. name configuration -- Command details configuration_count -- Number of items in configuration array result error rc_err_t zonemgr_ZoneManager_connectRemote(rc_instance_t *inst, const char *uri, const char *password, const char *SSH_AUTH_SOCK, rc_instance_t **result, zonemgr_MigrationError_t **error); Connect to a remote host for migration purposes Connect to the zone migration handler on a remote host represented by the given RAD URI. If required, an interactive password can be supplied in addition to the URI. If the URI requires a password, but none is provided, ENOENT will be returned. If an ssh URI is used, it must be already configured in promptless mode (e.g. no need for host key verification). Available since version 1.3. Arguments: inst -- RAD instance uri -- The RAD URI to connect to password (nullable) -- The password to use if required SSH_AUTH_SOCK (nullable) -- SSH_AUTH_SOCK environment variable value to set before attempting an connection to the remote system. Only applies if the URI scheme is ssh. Available since version 1.10. result error rc_err_t zonemgr_ZoneManager_initEvacuate(rc_instance_t *inst, boolean_t *isReturn, boolean_t *allowPartial, boolean_t *dryRun, boolean_t *evacuateAll, boolean_t *overwriteConfig, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); Initialize a zone evacuation Individual zone migration targets are determined by the SMF property "evacuation/target" for each zone's SMF instance to be part of an evacuation. For each zone, connect to the zone migration handler on a remote host represented by the configured RAD URI. The URI provided must allow for non-interactive authentication. If it is desired to track the progress of individual migrations for zones specified for evacuation, the client may subscribe to the MigrationProgress event for each of those zones. If the optional "allowPartial" argument is set to true, this method can still succeed even if some of the individual migration initializations fail. If an ssh URI is used, it must be already configured in promptless mode (e.g. no need for host key verification). On a failure, the error returned contains a mapping of the zone names to the individual initialization errors encountered. Available since version 1.4. Arguments: inst -- RAD instance isReturn (nullable) -- Initialize for a return evacuation At least one zone must be evacuated, and in a state ready to migrate back, for this mode to pass initialization. allowPartial (nullable) -- Allow initialization even if some zones fail dryRun (nullable) -- Only perform an evacuation dry run evacuateAll (nullable) -- Evacuate both running and non-running (installed) zones Non-running zones are cold migrated to the destination host, while running zones are still live migrated. This can be useful for decommissioning a host. overwriteConfig (nullable) -- Overwrite configurations of all zones on the remote host. result error rc_err_t zonemgr_ZoneManager_evacuate(rc_instance_t *inst, zonemgr_EvacuationResult_t **result, zonemgr_EvacuationError_t **error); Perform a zone evacuation An evacuation of the zone migrations initialized in initEvacuate() will be performed when this method is invoked. This method is synchronous and will return once all migrations are complete (or failed). If initEvacuate() was called with isReturn set, then this will perform a return evacuation: zones previously evacuated will be migrated back from the destination to this source host. cancelEvacuate() may be called from another thread to cancel the evacuation in progress. On a failure, the error returned contains a mapping of the zone names to the individual migration errors encountered. It is possible for some migrations to fail while others succeeded. Available since version 1.4. Arguments: inst -- RAD instance result error rc_err_t zonemgr_ZoneManager_cancelEvacuate(rc_instance_t *inst, zonemgr_EvacuationError_t **error); Cancel a Zone Evacuation Cancel a zone evacuation (or evacuation return) in any active state. Because evacuation methods are synchronous, this method needs to be called from another thread to cancel an ongoing initialization or evacuation. cancelEvacuate() can also be called after a successful initEvacuate() to clear the initialized state. Available since version 1.4. Arguments: inst -- RAD instance error ZoneManager Retrieve rc_err_t zonemgr_ZoneManager__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a ZoneManager object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneManager__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a ZoneManager instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneManager__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available ZoneManager instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key ZoneManager Events stateChange typedef void (*zonemgr_ZoneManager_stateChange_cb_f)(rc_instance_t *inst, zonemgr_StateChange_t *payload, struct timespec ts, void *arg); Function invoked when event "stateChange" occurs. Arguments: inst -- RAD instance that generated the event payload -- Event payload ts -- Time stamp arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_ZoneManager_subscribe_stateChange(rc_instance_t *inst, zonemgr_ZoneManager_stateChange_cb_f cb, void *arg); Subscribe to event "stateChange". Arguments: inst -- RAD instance cb -- Event callback function arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_ZoneManager_unsubscribe_stateChange(rc_instance_t *inst, void **arg); Unsubscribe from event "stateChange". Arguments: inst -- RAD instance arg -- User data returned evacuationProgress typedef void (*zonemgr_ZoneManager_evacuationProgress_cb_f)(rc_instance_t *inst, zonemgr_EvacuationProgress_t *payload, struct timespec ts, void *arg); Function invoked when event "evacuationProgress" occurs. Arguments: inst -- RAD instance that generated the event payload -- Event payload ts -- Time stamp arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_ZoneManager_subscribe_evacuationProgress(rc_instance_t *inst, zonemgr_ZoneManager_evacuationProgress_cb_f cb, void *arg); Subscribe to event "evacuationProgress". Arguments: inst -- RAD instance cb -- Event callback function arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_ZoneManager_unsubscribe_evacuationProgress(rc_instance_t *inst, void **arg); Unsubscribe from event "evacuationProgress". Arguments: inst -- RAD instance arg -- User data returned interface Zone Operations that affect a single zone Represents an individual zone. All zone configuration and administrative actions are represented in this interface. Changes of the zone configuration can be monitored through the configChange event. Zone Properties const char ** auxstate (read-only, nullable) -- Zone auxiliary state The list of zone auxiliary states. This property is dynamic, can be modified externally, and can be empty. rc_err_t zonemgr_Zone_get_auxstate(rc_instance_t *inst, char ***result, int *result_cnt, zonemgr_Result_t **error); Get property value. Arguments: inst -- RAD instance result -- Property value returned result_cnt -- Number of items in result array error Read Error: zonemgr_Result_t ** const char * brand (read-only) -- Zone brand The brand of the zone. This is equivalent to the "brand" property in the global resource. rc_err_t zonemgr_Zone_get_brand(rc_instance_t *inst, char **result, zonemgr_Result_t **error); Get property value. Arguments: inst -- RAD instance result -- Property value returned error Read Error: zonemgr_Result_t ** int id (read-only) -- Zone id The ID of the zone. This property is dynamic and can be modified externally. If a zone reboots, the zone ID will change. rc_err_t zonemgr_Zone_get_id(rc_instance_t *inst, int *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned const char * uuid (read-only, nullable) -- The UUID of the zone rc_err_t zonemgr_Zone_get_uuid(rc_instance_t *inst, char **result, zonemgr_Result_t **error); Get property value. Arguments: inst -- RAD instance result -- Property value returned error Read Error: zonemgr_Result_t ** const char * name (read-only) -- Zone name The name of the zone. This is equivalent to the "name" property in the global resource. rc_err_t zonemgr_Zone_get_name(rc_instance_t *inst, char **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned const char * state (read-only) -- Zone state The state of the zone. This property is dynamic and can be modified externally. If a zone is booted, the zone state will change. See zones(7) for zone states reference. rc_err_t zonemgr_Zone_get_state(rc_instance_t *inst, char **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned Zone Methods rc_err_t zonemgr_Zone_cancelConfig(rc_instance_t *inst, zonemgr_Result_t **error); Resets any configuration changes done after editConfig() After the changes are reset, call editConfig() again to begin a new set of modifications. Note that this method will also reread the configuration by using reloadConfig(). Can return NOT_EDITING error if editConfig() has not already been called successfully. This method resets the session liveMode to false. Arguments: inst -- RAD instance error rc_err_t zonemgr_Zone_exportConfig(rc_instance_t *inst, boolean_t *includeEdits, boolean_t *liveMode, boolean_t *reimport, char **result, zonemgr_Result_t **error); Return the exported output for this zone Return a string containing the exported form of the configuration. The output matches the configuration snapshot. Arguments: inst -- RAD instance includeEdits (nullable) -- Include edits in export If true (default if omitted), then the exported configuration will contain the in-flight modifications (if any were made) in the current session, otherwise only the committed on-disk configuration is exported. liveMode (nullable) -- Export live configuration If set to true, live (running) zone configuration is exported as seen at the time of this method call. If not specified, this method honors the session's liveMode. If the zone is not running yet live mode was requested, INVALID_ZONE_STATE error will be raised. reimport (nullable) -- Export in reimportable format If set, the output is directly suitable for re-importing a configuration via importConfig() with reimport set. Default value is false. result error rc_err_t zonemgr_Zone_update(rc_instance_t *inst, boolean_t noexecute, const char **commands, int commands_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Process the supplied commands to update the zone Process the list of commands. A SNAPSHOT_ERROR may result, in which case the configuration is unchanged. If the client still wishes to update the configuration after a SNAPSHOT_ERROR is returned they must refresh their snapshot of zone configuration using reloadConfig() method. (Before calling update() on the refreshed Zone object they should verify that their planned changes are still applicable to the zone configuration.) Arguments: inst -- RAD instance noexecute -- If true, do not execute the commands, but verify that they would result in a legal zone configuration. commands -- Each element is a command, recognizable by zonecfg(8). Failure of any command results in no changes to the zone. commands_count -- Number of items in commands array result error rc_err_t zonemgr_Zone_editConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); Initiate zone configuration editing Calling this method will initiate a configuration modification transaction. It will also update the configuration snapshot if a new on-disk configuration is found. Each configuration editing transaction must either be canceled by a call to cancelConfig(), or changes must be committed using commitConfig(). There can be only one configuration editing transaction open at one time, so a subsequent call to editConfig() without calling cancelConfig() or successfully calling commitConfig() first will result in an ALREADY_EDITING error. Arguments: inst -- RAD instance liveMode (nullable) -- Edit live configuration If set to true, Live Zone Reconfiguration mode is enabled (session liveMode is set to true) and all changes made to the configuration will be applied live to the running zone at the time commitConfig() is called. Can return INVALID_ZONE_STATE if the zone is not running. error rc_err_t zonemgr_Zone_commitConfig(rc_instance_t *inst, zonemgr_Result_t **error); Commit the current configuration Tries to save the configuration changes made by addResource(), removeResources() and setResourceProperties(), clearResourceProperties() since the last call to editConfig(). If external changes were made subsequent to editConfig(), no changes are saved and SNAPSHOT_ERROR is returned, indicating that the user should either abandon the changed configuration or call editConfig() to reread the current zone configuration, redo the changes, and try to save again. See the SNAPSHOT_ERROR description for more information. A NOT_EDITING error can be returned if editConfig() has not already been called successfully. The configuration is applied to running zone if the session's liveMode was set to true. However if the zone was not running any more, the INVALID_ZONE_STATE error will be raised. The session liveMode is not reset. Arguments: inst -- RAD instance error rc_err_t zonemgr_Zone_configIsLive(rc_instance_t *inst, boolean_t *result); Returns session's liveMode setting as set by preceding editConfig() or reloadConfig() method calls. Arguments: inst -- RAD instance result rc_err_t zonemgr_Zone_configIsStale(rc_instance_t *inst, boolean_t *result, zonemgr_Result_t **error); Checks whether a configuration snapshot captured by the instance is stale, meaning that changes to the zone configuration were done by an external process in the interim. Arguments: inst -- RAD instance result error rc_err_t zonemgr_Zone_addResource(rc_instance_t *inst, zonemgr_Resource_t *resource, zonemgr_Resource_t *scope, zonemgr_Result_t **error); Add a resource to the zone configuration While the change to the configuration is not saved until a successful call is made to commitConfig(), this resource is accessible by getResources(), getResourceProperties(), and setResourceProperties(), as well as by removeResources() methods. Returns RESOURCE_ALREADY_EXISTS if the resource being added is not unique. The NOT_EDITING error can be returned if editConfig() has not yet been called successfully. Arguments: inst -- RAD instance resource scope (nullable) -- Specify where to add the new resource to. See mac in anet resource example above. error rc_err_t zonemgr_Zone_reloadConfig(rc_instance_t *inst, boolean_t *liveMode, zonemgr_Result_t **error); Reload zone configuration snapshot This method should be used to reload the configuration snapshot from the on-disk zone configuration, which could have been changed by an external process. All uncommitted edits will be discarded. Arguments: inst -- RAD instance liveMode (nullable) -- If specified, the session liveMode will be set. If not specified, this method honors the session's liveMode as set previously by editConfig() or reloadConfig(). INVALID_ZONE_STATE error can be raise if live reconfiguration was requested but the zone was not running. error rc_err_t zonemgr_Zone_removeResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Result_t **error); Delete resource(s) matching filter from the zone configuration This method can fail with RESOURCE_NOT_FOUND if the filter does not match any resource. A NOT_EDITING error can be returned if editConfig() has not yet been called successfully. Arguments: inst -- RAD instance filter scope (nullable) -- Specify where to remove the resource(s) from. Used for example to remove non-primary mac address(es) from a particular anet resource. error rc_err_t zonemgr_Zone_getResources(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Resource_t *scope, zonemgr_Resource_t ***result, int *result_cnt, zonemgr_Result_t **error); Return a list of zero or more resources matching given filter Arguments: inst -- RAD instance filter (nullable) -- Filter to use If NULL, all resources are returned. The INVALID_ARGUMENT error is returned if filter type is empty. The RESOURCE_UNKNOWN error is returned if filter type is an unknown resource type. Refer to zonecfg(8) for a list of valid resource types. scope (nullable) -- Scope of resource(s) Specify where to get the resource(s) from. Used for example to get a list of non-primary mac addresses for a particular anet resource. result result_cnt -- Number of items in result array error rc_err_t zonemgr_Zone_getResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Property_t ***result, int *result_cnt, zonemgr_Result_t **error); Returns a list of zero or more properties This method can fail with RESOURCE_NOT_FOUND if filter does not match any resource, with RESOURCE_TOO_MANY if more than one resource matches, or with RESOURCE_UNKNOWN if filter type is not a known resource type. Arguments: inst -- RAD instance filter properties (nullable) -- Names of the properties the caller is interested in. If NULL, all properties are returned. properties_count -- Number of items in properties array result result_cnt -- Number of items in result array error rc_err_t zonemgr_Zone_setResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, zonemgr_Property_t **properties, int properties_count, zonemgr_Result_t **error); Set property values of given resource This method can fail with RESOURCE_NOT_FOUND if the filter does not match any resource, RESOURCE_UNKNOWN in the case of an invalid filter type, or RESOURCE_TOO_MANY if more than one resource matches. If an error occurs when setting the properties, the SYSTEM_ERROR is returned and Result.str should be inspected to obtain detailed information about the failure. The PROPERTY_UNKNOWN error can be returned if a property of the given name did not exist in that particular resource and the INVALID_ARGUMENT error can be returned if properties argument is an empty list. The NOT_EDITING error can be returned if editConfig() has not yet been called successfully. In the following example please notice the listvalue named argument that needs to be used when constructing Property with list of simple value. See zonecfg(8) manual page for detailed information about individual resources and properties. Next example shows how to find particular non-primary mac address in an anet resource and set its properties. Please note this example is supposed to work on solaris-kz branded zones only. Arguments: inst -- RAD instance filter properties properties_count -- Number of items in properties array error rc_err_t zonemgr_Zone_clearResourceProperties(rc_instance_t *inst, zonemgr_Resource_t *filter, const char **properties, int properties_count, zonemgr_Result_t **error); Clear property values of given resource This method can fail with RESOURCE_NOT_FOUND if the filter does not match any resource or RESOURCE_TOO_MANY if more than one resource matches. The PROPERTY_UNKNOWN error can be returned if a property of the given name did not exist in that particular resource and the INVALID_ARGUMENT error can be returned if the properties argument is an empty list. A NOT_EDITING error can be returned if editConfig() has not yet been called successfully. Arguments: inst -- RAD instance filter properties -- Names of the properties to clear properties_count -- Number of items in properties array error rc_err_t zonemgr_Zone_apply(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Apply configuration to the running zone Can fail with INVALID_ZONE_STATE if the zone is not running. Arguments: inst -- RAD instance options (nullable) -- Command options as described in zoneadm(8) options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_attach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Attach a zone This method is equivalent to using zoneadm(8) attach on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_boot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Boot a zone This method is equivalent to using zoneadm(8) boot on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_clone(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Clone a zone This method is equivalent to using zoneadm(8) clone on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_detach(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Detach a zone This method is equivalent to using zoneadm(8) detach on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_halt(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Halt a zone This method is equivalent to using zoneadm(8) halt on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_install(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Install a zone This method is equivalent to using zoneadm(8) install on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_mark(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Mark a zone state This method is equivalent to using zoneadm(8) mark on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_migrate(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Migrate a zone to a different system This method is equivalent to using zoneadm(8) migrate on a zone. Note that the RAD URI specified must not require interactive authentication (e.g. a password prompt). See prepareForMigration() for a more complete API. Available since version 1.1. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_move(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Move a zone This method is equivalent to using zoneadm(8) move on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_rename(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Rename a zone This method is equivalent to using zoneadm(8) rename on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_ready(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Ready a zone This method is equivalent to using zoneadm(8) ready on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_reboot(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Reboot a zone This method is equivalent to using zoneadm(8) reboot on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_savecore(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Save crash dump of a zone This method is equivalent to using zoneadm(8) savecore on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_shutdown(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Shutdown a zone This method is equivalent to using zoneadm(8) shutdown on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_suspend(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Suspend a zone This method is equivalent to using zoneadm(8) suspend on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_uninstall(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Uninstall a zone This method is equivalent to using zoneadm(8) uninstall on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_verify(rc_instance_t *inst, const char **options, int options_count, zonemgr_Result_t **result, zonemgr_Result_t **error); Verify a zone This method is equivalent to using zoneadm(8) verify on a zone. Arguments: inst -- RAD instance options (nullable) -- Command options options_count -- Number of items in options array result error rc_err_t zonemgr_Zone_prepareForMigration(rc_instance_t *inst, zonemgr_MigrationError_t **error); Prepare a zone for migration Prepare the zone for migration. This verifies the zone configuration, and sets the migrating-out auxiliary state. Available since version 1.3. Arguments: inst -- RAD instance error rc_err_t zonemgr_Zone_initMigration(rc_instance_t *inst, zonemgr_MigrationType_t type, const rc_instance_t *conn, const char *cipher, boolean_t *overwriteConfig, rc_instance_t **result, zonemgr_MigrationError_t **error); Initialize a migration to a particular host The given RAD connection is used to prepare the destination host for receiving a migration of the zone. This includes checking of configuration. The returned ZoneMigration object will be in the INITIALIZED state. Note that MigrationProgress events are fired as part of this configuration, so you may want to subscribe prior to calling this routine. Available since version 1.3. Arguments: inst -- RAD instance type -- Migration type conn (nullable) -- The remote host connection to use If this argument is not specified, the evacuation target is used to determine the remote host. cipher (nullable) -- The cipher to use; if not specified, the default is used overwriteConfig (nullable) -- Overwrite any zone configuration on the remote host. result error Zone Retrieve rc_err_t zonemgr_Zone__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a Zone object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_Zone__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a Zone instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_Zone__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available Zone instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key Zone Events configChange typedef void (*zonemgr_Zone_configChange_cb_f)(rc_instance_t *inst, zonemgr_ConfigChange_t *payload, struct timespec ts, void *arg); Function invoked when event "configChange" occurs. Arguments: inst -- RAD instance that generated the event payload -- Event payload ts -- Time stamp arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_Zone_subscribe_configChange(rc_instance_t *inst, zonemgr_Zone_configChange_cb_f cb, void *arg); Subscribe to event "configChange". Arguments: inst -- RAD instance cb -- Event callback function arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_Zone_unsubscribe_configChange(rc_instance_t *inst, void **arg); Unsubscribe from event "configChange". Arguments: inst -- RAD instance arg -- User data returned migrationProgress typedef void (*zonemgr_Zone_migrationProgress_cb_f)(rc_instance_t *inst, zonemgr_MigrationProgress_t *payload, struct timespec ts, void *arg); Function invoked when event "migrationProgress" occurs. Arguments: inst -- RAD instance that generated the event payload -- Event payload ts -- Time stamp arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_Zone_subscribe_migrationProgress(rc_instance_t *inst, zonemgr_Zone_migrationProgress_cb_f cb, void *arg); Subscribe to event "migrationProgress". Arguments: inst -- RAD instance cb -- Event callback function arg -- User data: custom parameter to invoke the function with rc_err_t zonemgr_Zone_unsubscribe_migrationProgress(rc_instance_t *inst, void **arg); Unsubscribe from event "migrationProgress". Arguments: inst -- RAD instance arg -- User data returned interface ZoneInfo Report on the zone in which this instance is executing Information about the current zone can be accessed. ZoneInfo Properties const char * brand (read-only) -- The brand of the zone in which this interface is executing rc_err_t zonemgr_ZoneInfo_get_brand(rc_instance_t *inst, char **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned int id (read-only) -- The ID of the zone in which this interface is executing rc_err_t zonemgr_ZoneInfo_get_id(rc_instance_t *inst, int *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned const char * uuid (read-only, nullable) -- The UUID of the zone in which this interface is executing rc_err_t zonemgr_ZoneInfo_get_uuid(rc_instance_t *inst, char **result, zonemgr_Result_t **error); Get property value. Arguments: inst -- RAD instance result -- Property value returned error Read Error: zonemgr_Result_t ** const char * name (read-only) -- The name of the zone in which this instance is executing rc_err_t zonemgr_ZoneInfo_get_name(rc_instance_t *inst, char **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned boolean_t isGlobal (read-only) -- Is this instance executing in a global zone? rc_err_t zonemgr_ZoneInfo_get_isGlobal(rc_instance_t *inst, boolean_t *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned ZoneInfo Retrieve rc_err_t zonemgr_ZoneInfo__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a ZoneInfo object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneInfo__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a ZoneInfo instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneInfo__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available ZoneInfo instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key interface MigrationConnection A connection to a particular remote host Available since version 1.3. MigrationConnection Properties boolean_t supportsMultipleZones (read-only) -- Can the connection can be shared among multiple zones? rc_err_t zonemgr_MigrationConnection_get_supportsMultipleZones(rc_instance_t *inst, boolean_t *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned const char * hostname (read-only) -- The remote hostname as supplied in the URI rc_err_t zonemgr_MigrationConnection_get_hostname(rc_instance_t *inst, char **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned boolean_t supportsSolarisZones (read-only) -- Can the connection support Solaris Zones? rc_err_t zonemgr_MigrationConnection_get_supportsSolarisZones(rc_instance_t *inst, boolean_t *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned boolean_t * supportsSolaris10Zones (read-only, nullable) -- Can the connection support solaris10 Zones? Available since version 1.7. rc_err_t zonemgr_MigrationConnection_get_supportsSolaris10Zones(rc_instance_t *inst, boolean_t **result); Get property value. Arguments: inst -- RAD instance result -- Property value returned MigrationConnection Methods rc_err_t zonemgr_MigrationConnection_getSupportedCiphers(rc_instance_t *inst, zonemgr_SupportedCiphers_t **result, zonemgr_MigrationError_t **error); Return the ciphers supported for encrypted live migration Arguments: inst -- RAD instance result error MigrationConnection Retrieve rc_err_t zonemgr_MigrationConnection__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a MigrationConnection object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_MigrationConnection__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a MigrationConnection instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_MigrationConnection__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available MigrationConnection instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key interface ZoneMigration Represents an ongoing zone migration A migration may be cancelled at an arbitrary point, for example if the zone is halted and deleted. Available since version 1.3. ZoneMigration Properties zonemgr_MigrationState_t state (read-only) -- Current migration state Only a ZoneMigration object in state INITIALIZED can be used by the migrate() method. rc_err_t zonemgr_ZoneMigration_get_state(rc_instance_t *inst, zonemgr_MigrationState_t *result); Get property value. Arguments: inst -- RAD instance result -- Property value returned ZoneMigration Methods rc_err_t zonemgr_ZoneMigration_migrate(rc_instance_t *inst, boolean_t *suspendAtStart, zonemgr_MigrationAttach_t *attachOptions, zonemgr_MigrationError_t **error); Migrate the zone An ongoing migration generates MigrationProgress events for the subject zone on the source host. The ZoneMigration object should be in state INITIALIZED. During the migration, this method will set the state to MIGRATING. After successful completion the state will be COMPLETED. In the case of certain errors, the state may become NONE instead of INITIALIZED, and the process must be restarted from prepareForMigration(). This routine waits synchronously for migration to complete. However, a separate client thread can call cancel() to asynchronously cancel a migration. Arguments: inst -- RAD instance suspendAtStart (nullable) -- Debug option: suspend the guest at the start attachOptions (nullable) -- Migration options for attach of solaris zone Available since version 1.5. error rc_err_t zonemgr_ZoneMigration_cancel(rc_instance_t *inst, zonemgr_MigrationError_t **error); Cancel an ongoing migration Cancel an ongoing or prepared migration. After this call (if successful), the state is NONE, and migration must be restarted from prepareForMigration(). A cancellation may fail due to an internal error, or if state on the remote system cannot be cleanly torn down (for example, if detach fails). Arguments: inst -- RAD instance error ZoneMigration Retrieve rc_err_t zonemgr_ZoneMigration__rad_get_name(adr_name_t **result, int n, ...); Obtain RAD name of a ZoneMigration object. Arguments: result -- RAD name n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneMigration__rad_lookup(rc_conn_t *c, boolean_t strict, rc_instance_t **result, int n, ...); Lookup a ZoneMigration instance. Construct a RAD name for the interface based on the provided key-value pairs and perform a lookup. If successful, instance reference is returned in the result. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning result -- RAD instance n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key rc_err_t zonemgr_ZoneMigration__rad_list(rc_conn_t *c, boolean_t strict, adr_pattern_scheme_t scheme, adr_name_t ***result, int *result_count, int n, ...); List RAD names of a available ZoneMigration instances. Returns an array and array size of matching object names. Arguments: c -- RAD connection handle strict -- Strict (B_TRUE) or relaxed (B_FALSE) versioning scheme -- Apply glob (NS_GLOB) or regex (NS_REGEX) matching result -- Array of RAD names result_count -- Number of names in result array n -- Number of key-value pairs provided as variadic arguments ... -- Optional key-value pairs that compose the primary key ENUMERATED TYPES enum ErrorCode -- Errors typedef enum zonemgr_ErrorCode { ZEC_NONE = 0, ZEC_FRAMEWORK_ERROR = 1, ZEC_SNAPSHOT_ERROR = 2, ZEC_COMMAND_ERROR = 3, ZEC_RESOURCE_ALREADY_EXISTS = 4, ZEC_RESOURCE_NOT_FOUND = 5, ZEC_RESOURCE_TOO_MANY = 6, ZEC_RESOURCE_UNKNOWN = 7, ZEC_ALREADY_EDITING = 8, ZEC_INCOMPLETE_NO_CONFIG = 9, ZEC_PROPERTY_UNKNOWN = 10, ZEC_NOT_EDITING = 11, ZEC_SYSTEM_ERROR = 12, ZEC_INVALID_ARGUMENT = 13, ZEC_INVALID_ZONE_STATE = 14, } zonemgr_ErrorCode_t; ZEC_NONE (0) -- No error ZEC_FRAMEWORK_ERROR (1) -- An error occurred within the RAD framework ZEC_SNAPSHOT_ERROR (2) -- Operation inconsistent with the snapshot The user accesses the zone configuration details through a snapshot. This snapshot is captured when the user references a Zone instance. If the framework detects that the user intends to perform an operation that would be inconsistent with external changes made after the creation of the snapshot, the operation fails and this error is returned. ZEC_COMMAND_ERROR (3) -- An error occurred in the requested operation ZEC_RESOURCE_ALREADY_EXISTS (4) -- Resource to be added already exists ZEC_RESOURCE_NOT_FOUND (5) -- Unable to find a resource matching given filter ZEC_RESOURCE_TOO_MANY (6) -- Too many matching resources If the filter provided matches more than one resource, this error can be returned by methods that operate on one particular resource. ZEC_RESOURCE_UNKNOWN (7) -- The resource of the particular type is not known ZEC_ALREADY_EDITING (8) -- Already editing configuration This error is returned by editConfig() when there was a prior call to editConfig(), and an active zone configuration editing session still exists. The session has not been cancelled by cancelConfig(), or committed by a successful commitConfig() call. ZEC_INCOMPLETE_NO_CONFIG (9) -- Cannot edit an incomplete zone with no configuration file This error is returned by editConfig() when the zone is in an incomplete state with a non-existent configuration file. ZEC_PROPERTY_UNKNOWN (10) -- The given property does not exist ZEC_NOT_EDITING (11) -- Calling configuration modification methods is not allowed outside of transaction. ZEC_SYSTEM_ERROR (12) -- System error This error code is a result of an error in a low-level system component or library where it's impractical to expose that particular error code through the Zone interface. Detailed information about the error, if available, will be made available through str field of the Result structure. ZEC_INVALID_ARGUMENT (13) -- Invalid method argument(s) ZEC_INVALID_ZONE_STATE (14) -- Invalid zone state This error is raised in case Live Zone Reconfiguration mode was requested, but the zone in question wasn't running. enum PropertyValueType -- The type of property typedef enum zonemgr_PropertyValueType { ZPVT_PROP_SIMPLE = 0, ZPVT_PROP_LIST = 1, ZPVT_PROP_COMPLEX = 2, } zonemgr_PropertyValueType_t; PROP_COMPLEX is obsolete and is never used. ZPVT_PROP_SIMPLE (0) ZPVT_PROP_LIST (1) ZPVT_PROP_COMPLEX (2) enum MigrationOperation -- A particular operation as part of a zone migration typedef enum zonemgr_MigrationOperation { ZMO_FRAMEWORK = 0, ZMO_CONNECT = 1, ZMO_INIT_CRYPTO = 2, ZMO_CONFIG_CHECK = 3, ZMO_CONFIGURE = 4, ZMO_ATTACH = 5, ZMO_BOOT = 6, ZMO_MIGRATE_INITIAL = 7, ZMO_MIGRATE = 8, ZMO_SUSPEND = 9, ZMO_RESTART = 10, ZMO_HALT = 11, ZMO_DETACH = 12, ZMO_UNCONFIGURE = 13, ZMO_COMPLETE = 14, ZMO_CANCEL = 15, } zonemgr_MigrationOperation_t; ZMO_FRAMEWORK (0) -- A system operation (e.g. fork()) ZMO_CONNECT (1) -- Connecting to a remote host ZMO_INIT_CRYPTO (2) -- Encryption setup ZMO_CONFIG_CHECK (3) -- Pre-flight configuration check ZMO_CONFIGURE (4) -- Zone configuration ZMO_ATTACH (5) -- Zone attach ZMO_BOOT (6) -- Zone boot ZMO_MIGRATE_INITIAL (7) -- Initial copy during migration ZMO_MIGRATE (8) -- Migrating modified memory ZMO_SUSPEND (9) -- Suspending the zone ZMO_RESTART (10) -- Restarting the zone ZMO_HALT (11) -- Zone halt ZMO_DETACH (12) -- Zone detach ZMO_UNCONFIGURE (13) -- Zone unconfigure ZMO_COMPLETE (14) -- Migration completion ZMO_CANCEL (15) -- Migration cancellation enum ErrorDomain -- Type of error number typedef enum zonemgr_ErrorDomain { ZED_SYSTEM = 0, ZED_ZONECFG = 1, } zonemgr_ErrorDomain_t; ZED_SYSTEM (0) -- As per strerror() ZED_ZONECFG (1) -- As per zonecfg_strerror() enum MigrationState -- Current migration state typedef enum zonemgr_MigrationState { ZMS_NONE = 0, ZMS_INITIALIZED = 1, ZMS_MIGRATING = 2, ZMS_COMPLETED = 3, } zonemgr_MigrationState_t; ZMS_NONE (0) -- No migration state ZMS_INITIALIZED (1) -- Migration is initialized Migration state is initialized on remote host and ready to begin migration. ZMS_MIGRATING (2) -- Migration is underway ZMS_COMPLETED (3) -- Migration is completed enum MigrationType typedef enum zonemgr_MigrationType { ZMT_LIVE = 0, ZMT_COLD = 1, } zonemgr_MigrationType_t; ZMT_LIVE (0) -- Live migration. ZMT_COLD (1) -- Cold migration. enum MigrationUpdateOpts -- Migration options for update of packages on attach typedef enum zonemgr_MigrationUpdateOpts { ZMUO_NONE = 0, ZMUO_MIN = 1, ZMUO_ALL = 2, } zonemgr_MigrationUpdateOpts_t; ZMUO_NONE (0) -- No update of packages on attach ZMUO_MIN (1) -- Update minimal number of packages on attach ZMUO_ALL (2) -- Update all packages on attach enum MigrationCloneOpts -- Migration options for clone of ZBE typedef enum zonemgr_MigrationCloneOpts { ZMCO_NONE = 0, ZMCO_FORCE = 1, ZMCO_DENY = 2, } zonemgr_MigrationCloneOpts_t; ZMCO_NONE (0) -- Use default clone behavior on migrate ZMCO_FORCE (1) -- Force ZBE clone on migrate ZMCO_DENY (2) -- Do not clone ZBE on migrate enum MigrationDestroyOrphanOpt -- Migration option for destroy-orphan-zbes on attach typedef enum zonemgr_MigrationDestroyOrphanOpt { ZMDOO_NONE = 0, ZMDOO_DOSET = 1, } zonemgr_MigrationDestroyOrphanOpt_t; ZMDOO_NONE (0) -- No destroy-orphan-zbes option given. ZMDOO_DOSET (1) -- Destroy orphan ZBEs on attach. enum MigrationLastBootedOpt -- Migration option for last-booted ZBE selection on attach typedef enum zonemgr_MigrationLastBootedOpt { ZMLBO_NONE = 0, ZMLBO_LBSET = 1, } zonemgr_MigrationLastBootedOpt_t; ZMLBO_NONE (0) -- No last-booted option given. ZMLBO_LBSET (1) -- Select last-booted ZBE on attach enum MigrationLastMountedOpt -- Migration option for last-mounted ZBE selection on attach typedef enum zonemgr_MigrationLastMountedOpt { ZMLMO_NONE = 0, ZMLMO_LMSET = 1, } zonemgr_MigrationLastMountedOpt_t; ZMLMO_NONE (0) -- No last-mounted option given. ZMLMO_LMSET (1) -- Select last-mounted ZBE on attach enum MigrationMatchedOpt -- Migration option for matched ZBE selection on attach typedef enum zonemgr_MigrationMatchedOpt { ZMMO_NONE = 0, ZMMO_MSET = 1, } zonemgr_MigrationMatchedOpt_t; ZMMO_NONE (0) -- No matched option given. ZMMO_MSET (1) -- Select active ZBE matching current global zone enum EvacuationStatus -- Evacuation operation status typedef enum zonemgr_EvacuationStatus { ZES_SUCCESS = 0, ZES_FAIL = 1, ZES_PARTIAL_FAIL = 2, } zonemgr_EvacuationStatus_t; ZES_SUCCESS (0) -- Operation succeeded for all zones ZES_FAIL (1) -- Entire operation failed ZES_PARTIAL_FAIL (2) -- Operation failed for one or more zones enum EvacuationErrorCode -- Evacuation error code typedef enum zonemgr_EvacuationErrorCode { ZEEC_FRAMEWORK = 0, ZEEC_EVACUATION_IN_PROGRESS = 1, ZEEC_EVACUATION_NOT_INITED = 2, ZEEC_NO_EVACUATION_TO_RETURN = 3, ZEEC_NO_EVACUATION_TO_CANCEL = 4, ZEEC_EVACUATION_NOT_PERMITTED = 5, ZEEC_NO_ZONES_TO_EVACUATE = 6, ZEEC_EVACUATION_CANCELED = 7, } zonemgr_EvacuationErrorCode_t; ZEEC_FRAMEWORK (0) -- Framework or general system failure ZEEC_EVACUATION_IN_PROGRESS (1) -- Evacuation already underway Either an evacuation is already initialized, or one is currently under way. ZEEC_EVACUATION_NOT_INITED (2) -- Evacuation not yet initialized initEvacuate() has not been called prior to a evacuate() call. ZEEC_NO_EVACUATION_TO_RETURN (3) -- No evacuation to return Returned when there are no evacuated zones to return. ZEEC_NO_EVACUATION_TO_CANCEL (4) -- No evacuation to cancel Returned from cancelEvacuate() when there is no active (either initialized or running) evacuation. ZEEC_EVACUATION_NOT_PERMITTED (5) -- Evacuation not permited ZEEC_NO_ZONES_TO_EVACUATE (6) -- No suitable zones to migrate ZEEC_EVACUATION_CANCELED (7) -- Evacuation has been canceled enum MigrationMilestone -- A particular migration milestone or state as part of an evacuation typedef enum zonemgr_MigrationMilestone { ZMM_MIGRATE_INITIALIZING = 0, ZMM_MIGRATE_INITIALIZATION_COMPLETE = 1, ZMM_MIGRATE_INITIALIZATION_FAIL = 2, ZMM_MIGRATING = 3, ZMM_MIGRATE_COMPLETE = 4, ZMM_MIGRATE_FAIL = 5, ZMM_EVACUATE_INITIALIZING = 6, ZMM_EVACUATE_INITIALIZATION_COMPLETE = 7, ZMM_EVACUATE_INITIALIZATION_FAIL = 8, ZMM_EVACUATING = 9, ZMM_EVACUATE_COMPLETE = 10, ZMM_EVACUATE_FAIL = 11, ZMM_EVACUATE_CANCELED = 12, } zonemgr_MigrationMilestone_t; ZMM_MIGRATE_INITIALIZING (0) -- Migration is initializing ZMM_MIGRATE_INITIALIZATION_COMPLETE (1) -- Migration has initialized ZMM_MIGRATE_INITIALIZATION_FAIL (2) -- Migration initalizing has failed ZMM_MIGRATING (3) -- Migration is underway ZMM_MIGRATE_COMPLETE (4) -- Migration has completed ZMM_MIGRATE_FAIL (5) -- Migration has failed ZMM_EVACUATE_INITIALIZING (6) -- Evacuation is initializing ZMM_EVACUATE_INITIALIZATION_COMPLETE (7) -- Evacuation has initialized ZMM_EVACUATE_INITIALIZATION_FAIL (8) -- Evacuation initalizing has failed ZMM_EVACUATING (9) -- Evacuation is underway ZMM_EVACUATE_COMPLETE (10) -- Evacuation has completed ZMM_EVACUATE_FAIL (11) -- Evacuation has failed ZMM_EVACUATE_CANCELED (12) -- Evacuation has been canceled enum MigrationStatus -- Individual migration error status in an evacuation typedef enum zonemgr_MigrationStatus { ZMS_SUCCESS = 0, ZMS_MIGRATE_NOT_ATTEMPTED = 1, ZMS_MIGRATION_ERROR = 2, ZMS_SYSTEM_ERROR = 3, ZMS_NOMEM_ERROR = 4, ZMS_NOTFOUND_ERROR = 5, ZMS_PRIV_ERROR = 6, } zonemgr_MigrationStatus_t; ZMS_SUCCESS (0) -- Success ZMS_MIGRATE_NOT_ATTEMPTED (1) -- Did not attempt to migrate zone In evacuations where a partial init was allowed, this status is set for those zone migrations that failed initialization. With this error, there will be an additional error payload with more details. ZMS_MIGRATION_ERROR (2) -- Module generated migration specific error A zone failed to migrate. With this error, there will be an additional error payload with more details. ZMS_SYSTEM_ERROR (3) -- General system error ZMS_NOMEM_ERROR (4) -- Out of memory ZMS_NOTFOUND_ERROR (5) -- Zone not found error ZMS_PRIV_ERROR (6) -- Insufficient privileges error STRUCTURED TYPES struct Result -- An error occurred for the given operation typedef struct zonemgr_Result zonemgr_Result_t; struct zonemgr_Result { zonemgr_ErrorCode_t *zr_code; char *zr_str; char *zr_stdout; char *zr_stderr; }; void zonemgr_Result_free(zonemgr_Result_t *in); Fields: zr_code -- Error code zr_str -- Error string String representation of the actual error possibly including the information gathered from the low-level error. zr_stdout -- Contents of the standard out of a subprocess zr_stderr -- Contents of the standard error of a subprocess struct ConfigChange -- The payload of a configChange event typedef struct zonemgr_ConfigChange zonemgr_ConfigChange_t; struct zonemgr_ConfigChange { char *zcc_zone; }; void zonemgr_ConfigChange_free(zonemgr_ConfigChange_t *in); Fields: zcc_zone struct StateChange -- The payload of a stateChange event typedef struct zonemgr_StateChange zonemgr_StateChange_t; struct zonemgr_StateChange { char *zsc_zone; char *zsc_oldstate; char *zsc_newstate; }; void zonemgr_StateChange_free(zonemgr_StateChange_t *in); Fields: zsc_zone zsc_oldstate zsc_newstate struct Property -- A Resource property typedef struct zonemgr_Property zonemgr_Property_t; struct zonemgr_Property { char *zp_name; char *zp_value; zonemgr_PropertyValueType_t *zp_type; char **zp_listvalue; int zp_listvalue_count; char **zp_complexvalue; int zp_complexvalue_count; }; void zonemgr_Property_free(zonemgr_Property_t *in); complexvalue is obsolete and never used. Fields: zp_name zp_value zp_type zp_listvalue zp_listvalue_count zp_complexvalue zp_complexvalue_count struct Resource -- A zone resource typedef struct zonemgr_Resource zonemgr_Resource_t; struct zonemgr_Resource { char *zr_type; zonemgr_Property_t **zr_properties; int zr_properties_count; char *zr_parent; }; void zonemgr_Resource_free(zonemgr_Resource_t *in); This structure is used for storing information about an individual zone configuration resource. The structure can also be used for filtering resources in methods such as getResources(), removeResources(), getResourceProperties() and setResourceProperties. The rules for matching individual configuration resources are as follows: 1. Resources are matched based on the filter's type attribute first. 2. If the properties attribute of the filter is NULL (or is an empty array), then no additional filtering is done. 3. If the properties attribute is a non-empty array of property elements, the resource is first checked to determine if it contains a property of this name. Then a check is performed to confirm that the property simple value matches (that is, the value attribute of the property in the filter object is not NULL) 4. Step 3 is evaluated for each Property in the filter object. If all checks evaluate to true (that is, property is present and possibly has the requested value if specified in the filter object), then the Resource is added to the list of matches. See examples and specific documentation for individual methods which accept Resource as filter argument. Fields: zr_type zr_properties zr_properties_count zr_parent -- Implementation detail Private implementation detail to supported hierarchically nested resources. struct Errno -- Error number description typedef struct zonemgr_Errno zonemgr_Errno_t; struct zonemgr_Errno { zonemgr_ErrorDomain_t ze_domain; int ze_errno; }; void zonemgr_Errno_free(zonemgr_Errno_t *in); Fields: ze_domain ze_errno struct MigrationError -- An error occurred for the given migration operation typedef struct zonemgr_MigrationError zonemgr_MigrationError_t; struct zonemgr_MigrationError { zonemgr_MigrationOperation_t zme_operation; zonemgr_Errno_t *zme_err; char *zme_str; }; void zonemgr_MigrationError_free(zonemgr_MigrationError_t *in); Note that the error string includes any expanded strerror() equivalent. Fields: zme_operation zme_err zme_str struct MigrationAttach -- Migration options for attach of solaris zone typedef struct zonemgr_MigrationAttach zonemgr_MigrationAttach_t; struct zonemgr_MigrationAttach { zonemgr_MigrationUpdateOpts_t zma_update; zonemgr_MigrationCloneOpts_t zma_clone; zonemgr_MigrationDestroyOrphanOpt_t zma_destroyOrphan; zonemgr_MigrationLastBootedOpt_t zma_lastBooted; zonemgr_MigrationLastMountedOpt_t zma_lastMounted; zonemgr_MigrationMatchedOpt_t zma_matched; char *zma_zbe; }; void zonemgr_MigrationAttach_free(zonemgr_MigrationAttach_t *in); Fields: zma_update zma_clone zma_destroyOrphan zma_lastBooted zma_lastMounted zma_matched zma_zbe -- Attach specified ZBE struct EvacuationMigrationResult -- A single migration status within an evacuation typedef struct zonemgr_EvacuationMigrationResult zonemgr_EvacuationMigrationResult_t; struct zonemgr_EvacuationMigrationResult { char *zemr_zoneName; boolean_t zemr_evacuated; char *zemr_evacuationTarget; zonemgr_MigrationStatus_t zemr_migrationStatus; zonemgr_MigrationError_t *zemr_migrationError; }; void zonemgr_EvacuationMigrationResult_free(zonemgr_EvacuationMigrationResult_t *in); A migration status within an evacuation. Fields: zemr_zoneName zemr_evacuated zemr_evacuationTarget zemr_migrationStatus zemr_migrationError struct EvacuationResult -- An evacuation operation result typedef struct zonemgr_EvacuationResult zonemgr_EvacuationResult_t; struct zonemgr_EvacuationResult { zonemgr_EvacuationStatus_t zer_status; boolean_t zer_returning; zonemgr__rad_dict_string_EvacuationMigrationResult_t *zer_migrationResults; }; void zonemgr_EvacuationResult_free(zonemgr_EvacuationResult_t *in); Results of an evacuation operation. Includes the evacuation status, and a mapping of zone names to corresponding migration status values in the form of EvacuationMigrationResults. Fields: zer_status zer_returning -- The result is for an evacuation return operation zer_migrationResults struct EvacuationError -- A fatal error occurred for an evacuation operation typedef struct zonemgr_EvacuationError zonemgr_EvacuationError_t; struct zonemgr_EvacuationError { zonemgr_EvacuationErrorCode_t zee_code; zonemgr_Errno_t *zee_err; char *zee_str; }; void zonemgr_EvacuationError_free(zonemgr_EvacuationError_t *in); Note that the error string includes any expanded strerror() equivalent. Fields: zee_code zee_err zee_str struct MigrationProgress -- Progress of a migration of a particular zone typedef struct zonemgr_MigrationProgress zonemgr_MigrationProgress_t; struct zonemgr_MigrationProgress { char *zmp_zone; rc_instance_t *zmp_connection; zonemgr_MigrationOperation_t zmp_operation; char *zmp_str; unsigned int *zmp_percent_complete; }; void zonemgr_MigrationProgress_free(zonemgr_MigrationProgress_t *in); Fields: zmp_zone -- The name of the zone zmp_connection -- The migration connection zmp_operation -- The current operation zmp_str -- A summary of the current operation progress zmp_percent_complete -- Percentage complete of this operation Note, this is currently only set for MIGRATE_INITIAL. struct EvacuationProgress -- Progress of an evacuation typedef struct zonemgr_EvacuationProgress zonemgr_EvacuationProgress_t; struct zonemgr_EvacuationProgress { char *zep_zoneName; char *zep_remoteHost; boolean_t zep_returning; zonemgr_MigrationMilestone_t zep_migrationMilestone; unsigned int zep_zoneCount; unsigned long long *zep_transferRate; char *zep_zoneProgress; }; void zonemgr_EvacuationProgress_free(zonemgr_EvacuationProgress_t *in); Fields: zep_zoneName -- The name of the zone For events pertaining to a specific zone migration, this is set to the zone name. For evacuation-wide events (EVACUATION prefix for migrationMilestone), this is not set. zep_remoteHost -- The remote host involved in the migration For evacuations, this is the destination for the migration and for an ongoing return, this is the source of the migration. zep_returning -- The progress is for an evacuation return zep_migrationMilestone -- The completed milestone or migration status zep_zoneCount -- Number of zones for evacuation-wide events zep_transferRate -- Network transfer rate for evacuation (in bytes/second) zep_zoneProgress -- Detailed per zone migration progress message. struct SupportedCiphers -- Supported cipher information for encrypted live migration typedef struct zonemgr_SupportedCiphers zonemgr_SupportedCiphers_t; struct zonemgr_SupportedCiphers { char **zsc_source; int zsc_source_count; char **zsc_destination; int zsc_destination_count; char *zsc_defaultcipher; }; void zonemgr_SupportedCiphers_free(zonemgr_SupportedCiphers_t *in); Fields: zsc_source -- List of ciphers supported on the source (current) host zsc_source_count zsc_destination -- List of ciphers supported on the destination host zsc_destination_count zsc_defaultcipher -- Default cipher used between these two hosts The cipher used by default between these two hosts. May be null if no cipher could be matched, or "none" if the destination host does not support encrypted migration. DICTIONARIES Dictionary { string : EvacuationMigrationResult } Dictionary with a key type of string and a value type of EvacuationMigrationResult. typedef struct base_rad_dict zonemgr__rad_dict_string_EvacuationMigrationResult_t; rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_get(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, const char *key, zonemgr_EvacuationMigrationResult_t **result); Get the value for given key. Arguments: dict -- Dictionary key -- Key value result -- Value returned rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_put(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, const char *key, zonemgr_EvacuationMigrationResult_t *value, zonemgr_EvacuationMigrationResult_t **result); Put a key-value pair into the dictionary. Returns a previous value stored with the same key if one exists. Arguments: dict -- Dictionary key -- Key value value -- Value written result -- Original value for the key rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_contains(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, const char *key); Check whether a key exists in the dictionary. Returns RCE_OK when key exists, RCE_CLIENT_NOTFOUND otherwise. Arguments: dict -- Dictionary key -- Key value rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_remove(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, const char *key, zonemgr_EvacuationMigrationResult_t **result); Remove key-value pair from the dictionary. Returns RCE_OK when key was sucessfully removed, RCE_CLIENT_NOTFOUND otherwise. Arguments: dict -- Dictionary key -- Key value result -- Original value for the key rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_keys(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, char ***result, int *count); Get list of keys from the dictionary. Memory associated with the result array should be freed by the user. Arguments: dict -- Dictionary result -- Array of dictionary keys count -- Number of items in result array rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_values(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, zonemgr_EvacuationMigrationResult_t ***result, int *count); Get list of values from the dictionary. Memory associated with the result array should be freed by the user. Arguments: dict -- Dictionary result -- Array of dictionary values count -- Number of items in result array unsigned int zonemgr__rad_dict_string_EvacuationMigrationResult_size(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict); Get number of key-value pairs in the dictionary. Arguments: dict -- Dictionary zonemgr__rad_dict_string_EvacuationMigrationResult_t * zonemgr__rad_dict_string_EvacuationMigrationResult_create(const rc_instance_t *inst); Create a new, empty dictionary. Returns a pointer to the dictionary, or NULL on error. Arguments: inst -- RAD instance void zonemgr__rad_dict_string_EvacuationMigrationResult_free(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict); Destroy the dictionary and release the allocated memory. Arguments: dict -- Dictionary rc_err_t zonemgr__rad_dict_string_EvacuationMigrationResult_map(zonemgr__rad_dict_string_EvacuationMigrationResult_t *dict, rc_err_t(*func)(const char *, zonemgr_EvacuationMigrationResult_t *, void *), void *arg); Invoke a function with each key-value pair in the dictionary. Arguments: dict -- Dictionary func -- Function to invoke The arguments are: key, value, user-data. arg -- User data: custom parameter to invoke the function with VERSION 1.10 ATTRIBUTES See attributes(7) for descriptions of the following attributes: +--------------------+------------------------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +--------------------+------------------------------------------+ |Availability | system/management/rad/module/rad-zonemgr | +--------------------+------------------------------------------+ |Interface Stability | Private | +--------------------+------------------------------------------+ SEE ALSO rad(8) NOTES 1. Accessing Python documentation for this module: $ pydoc rad.bindings.com.oracle.solaris.rad.zonemgr_1 Solaris 11.4 2017-02-01 ZONEMGR-1(3rad)