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)