Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ././../../../../../../usr/man/man3rad/zonemgr-1.3rad
Real path: /usr/share/man/man3rad/zonemgr-1.3rad
Zurück
'\" t .\" Title: zonemgr-1 .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/> .\" Date: 2017-02-01 .\" Manual: RAD Module Definitions .\" Source: Solaris 11.4 .\" Language: English .\" .TH "ZONEMGR\-1" "3rad" "2017\-02\-01" "Solaris 11.4" "RAD Module Definitions" .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" zonemgr \- API for Zones administration .SH "SYNOPSIS" .nf #include <rad/client/1/zonemgr\&.h> cc [ flag\&.\&.\&. ] file\&.\&.\&. \fB\-lzonemgr1_client\fR [ library\&.\&.\&. ] .fi .SS "interface ZoneManager" .nf zonemgr_EvacuationResult_t *\ \&evacuationState\ \&; (ro) .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_create\fR('u .R rc_err_t \fBzonemgr_ZoneManager_create\fR(rc_instance_t\ *inst, . const\ char\ *name, . const\ char\ *path, . const\ char\ *template, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_delete\fR('u .R rc_err_t \fBzonemgr_ZoneManager_delete\fR(rc_instance_t\ *inst, . const\ char\ *name, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_createConfig\fR('u .R rc_err_t \fBzonemgr_ZoneManager_createConfig\fR(rc_instance_t\ *inst, . const\ char\ *template, . rc_instance_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_importConfig\fR('u .R rc_err_t \fBzonemgr_ZoneManager_importConfig\fR(rc_instance_t\ *inst, . boolean_t\ noexecute, . const\ char\ *name, . const\ char\ **configuration, . int\ configuration_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_connectRemote\fR('u .R rc_err_t \fBzonemgr_ZoneManager_connectRemote\fR(rc_instance_t\ *inst, . const\ char\ *uri, . const\ char\ *password, . const\ char\ *SSH_AUTH_SOCK, . rc_instance_t\ **result, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_initEvacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_initEvacuate\fR(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); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_evacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_evacuate\fR(rc_instance_t\ *inst, . zonemgr_EvacuationResult_t\ **result, . zonemgr_EvacuationError_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_cancelEvacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_cancelEvacuate\fR(rc_instance_t\ *inst, . zonemgr_EvacuationError_t\ **error); .RS .RE .fi .nf .HP \w'typedef\ void\ \fB(*zonemgr_ZoneManager_stateChange_cb_f)\fR('u .R typedef void \fB(*zonemgr_ZoneManager_stateChange_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_StateChange_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_subscribe_stateChange\fR('u .R rc_err_t \fBzonemgr_ZoneManager_subscribe_stateChange\fR(rc_instance_t\ *inst, . zonemgr_ZoneManager_stateChange_cb_f\ cb, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_unsubscribe_stateChange\fR('u .R rc_err_t \fBzonemgr_ZoneManager_unsubscribe_stateChange\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .nf .HP \w'typedef\ void\ \fB(*zonemgr_ZoneManager_evacuationProgress_cb_f)\fR('u .R typedef void \fB(*zonemgr_ZoneManager_evacuationProgress_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_EvacuationProgress_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_subscribe_evacuationProgress\fR('u .R rc_err_t \fBzonemgr_ZoneManager_subscribe_evacuationProgress\fR(rc_instance_t\ *inst, . zonemgr_ZoneManager_evacuationProgress_cb_f\ cb, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_unsubscribe_evacuationProgress\fR('u .R rc_err_t \fBzonemgr_ZoneManager_unsubscribe_evacuationProgress\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .SS "interface Zone" .nf const char **\ \&auxstate\ \&; (ro) .fi .nf const char *\ \&brand\ \&; (ro) .fi .nf int\ \&id\ \&; (ro) .fi .nf const char *\ \&uuid\ \&; (ro) .fi .nf const char *\ \&name\ \&; (ro) .fi .nf const char *\ \&state\ \&; (ro) .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_cancelConfig\fR('u .R rc_err_t \fBzonemgr_Zone_cancelConfig\fR(rc_instance_t\ *inst, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_exportConfig\fR('u .R rc_err_t \fBzonemgr_Zone_exportConfig\fR(rc_instance_t\ *inst, . boolean_t\ *includeEdits, . boolean_t\ *liveMode, . boolean_t\ *reimport, . char\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_update\fR('u .R rc_err_t \fBzonemgr_Zone_update\fR(rc_instance_t\ *inst, . boolean_t\ noexecute, . const\ char\ **commands, . int\ commands_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_editConfig\fR('u .R rc_err_t \fBzonemgr_Zone_editConfig\fR(rc_instance_t\ *inst, . boolean_t\ *liveMode, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_commitConfig\fR('u .R rc_err_t \fBzonemgr_Zone_commitConfig\fR(rc_instance_t\ *inst, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_configIsLive\fR('u .R rc_err_t \fBzonemgr_Zone_configIsLive\fR(rc_instance_t\ *inst, . boolean_t\ *result); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_configIsStale\fR('u .R rc_err_t \fBzonemgr_Zone_configIsStale\fR(rc_instance_t\ *inst, . boolean_t\ *result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_addResource\fR('u .R rc_err_t \fBzonemgr_Zone_addResource\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *resource, . zonemgr_Resource_t\ *scope, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_reloadConfig\fR('u .R rc_err_t \fBzonemgr_Zone_reloadConfig\fR(rc_instance_t\ *inst, . boolean_t\ *liveMode, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_removeResources\fR('u .R rc_err_t \fBzonemgr_Zone_removeResources\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Resource_t\ *scope, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_getResources\fR('u .R rc_err_t \fBzonemgr_Zone_getResources\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Resource_t\ *scope, . zonemgr_Resource_t\ ***result, . int\ *result_cnt, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_getResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_getResourceProperties\fR(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); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_setResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_setResourceProperties\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Property_t\ **properties, . int\ properties_count, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_clearResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_clearResourceProperties\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . const\ char\ **properties, . int\ properties_count, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_apply\fR('u .R rc_err_t \fBzonemgr_Zone_apply\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_attach\fR('u .R rc_err_t \fBzonemgr_Zone_attach\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_boot\fR('u .R rc_err_t \fBzonemgr_Zone_boot\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_clone\fR('u .R rc_err_t \fBzonemgr_Zone_clone\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_detach\fR('u .R rc_err_t \fBzonemgr_Zone_detach\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_halt\fR('u .R rc_err_t \fBzonemgr_Zone_halt\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_install\fR('u .R rc_err_t \fBzonemgr_Zone_install\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_mark\fR('u .R rc_err_t \fBzonemgr_Zone_mark\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_migrate\fR('u .R rc_err_t \fBzonemgr_Zone_migrate\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_move\fR('u .R rc_err_t \fBzonemgr_Zone_move\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_rename\fR('u .R rc_err_t \fBzonemgr_Zone_rename\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_ready\fR('u .R rc_err_t \fBzonemgr_Zone_ready\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_reboot\fR('u .R rc_err_t \fBzonemgr_Zone_reboot\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_savecore\fR('u .R rc_err_t \fBzonemgr_Zone_savecore\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_shutdown\fR('u .R rc_err_t \fBzonemgr_Zone_shutdown\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_suspend\fR('u .R rc_err_t \fBzonemgr_Zone_suspend\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_uninstall\fR('u .R rc_err_t \fBzonemgr_Zone_uninstall\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_verify\fR('u .R rc_err_t \fBzonemgr_Zone_verify\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_prepareForMigration\fR('u .R rc_err_t \fBzonemgr_Zone_prepareForMigration\fR(rc_instance_t\ *inst, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_initMigration\fR('u .R rc_err_t \fBzonemgr_Zone_initMigration\fR(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); .RS .RE .fi .nf .HP \w'typedef\ void\ \fB(*zonemgr_Zone_configChange_cb_f)\fR('u .R typedef void \fB(*zonemgr_Zone_configChange_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_ConfigChange_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_subscribe_configChange\fR('u .R rc_err_t \fBzonemgr_Zone_subscribe_configChange\fR(rc_instance_t\ *inst, . zonemgr_Zone_configChange_cb_f\ cb, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_unsubscribe_configChange\fR('u .R rc_err_t \fBzonemgr_Zone_unsubscribe_configChange\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .nf .HP \w'typedef\ void\ \fB(*zonemgr_Zone_migrationProgress_cb_f)\fR('u .R typedef void \fB(*zonemgr_Zone_migrationProgress_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_MigrationProgress_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_subscribe_migrationProgress\fR('u .R rc_err_t \fBzonemgr_Zone_subscribe_migrationProgress\fR(rc_instance_t\ *inst, . zonemgr_Zone_migrationProgress_cb_f\ cb, . void\ *arg); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_unsubscribe_migrationProgress\fR('u .R rc_err_t \fBzonemgr_Zone_unsubscribe_migrationProgress\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .SS "interface ZoneInfo" .nf const char *\ \&brand\ \&; (ro) .fi .nf int\ \&id\ \&; (ro) .fi .nf const char *\ \&uuid\ \&; (ro) .fi .nf const char *\ \&name\ \&; (ro) .fi .nf boolean_t\ \&isGlobal\ \&; (ro) .fi .SS "interface MigrationConnection" .nf boolean_t\ \&supportsMultipleZones\ \&; (ro) .fi .nf const char *\ \&hostname\ \&; (ro) .fi .nf boolean_t\ \&supportsSolarisZones\ \&; (ro) .fi .nf boolean_t *\ \&supportsSolaris10Zones\ \&; (ro) .fi .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_getSupportedCiphers\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_getSupportedCiphers\fR(rc_instance_t\ *inst, . zonemgr_SupportedCiphers_t\ **result, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .SS "interface ZoneMigration" .nf zonemgr_MigrationState_t\ \&state\ \&; (ro) .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration_migrate\fR('u .R rc_err_t \fBzonemgr_ZoneMigration_migrate\fR(rc_instance_t\ *inst, . boolean_t\ *suspendAtStart, . zonemgr_MigrationAttach_t\ *attachOptions, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration_cancel\fR('u .R rc_err_t \fBzonemgr_ZoneMigration_cancel\fR(rc_instance_t\ *inst, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .SS "Enumerated Types" .PP \fBenum ErrorCode\fR .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .PP \fBenum PropertyValueType\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_PropertyValueType { ZPVT_PROP_SIMPLE = 0, ZPVT_PROP_LIST = 1, ZPVT_PROP_COMPLEX = 2, } zonemgr_PropertyValueType_t; .fi .RE .\" } blockquote .PP \fBenum MigrationOperation\fR .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .PP \fBenum ErrorDomain\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_ErrorDomain { ZED_SYSTEM = 0, ZED_ZONECFG = 1, } zonemgr_ErrorDomain_t; .fi .RE .\" } blockquote .PP \fBenum MigrationState\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationState { ZMS_NONE = 0, ZMS_INITIALIZED = 1, ZMS_MIGRATING = 2, ZMS_COMPLETED = 3, } zonemgr_MigrationState_t; .fi .RE .\" } blockquote .PP \fBenum MigrationType\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationType { ZMT_LIVE = 0, ZMT_COLD = 1, } zonemgr_MigrationType_t; .fi .RE .\" } blockquote .PP \fBenum MigrationUpdateOpts\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationUpdateOpts { ZMUO_NONE = 0, ZMUO_MIN = 1, ZMUO_ALL = 2, } zonemgr_MigrationUpdateOpts_t; .fi .RE .\" } blockquote .PP \fBenum MigrationCloneOpts\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationCloneOpts { ZMCO_NONE = 0, ZMCO_FORCE = 1, ZMCO_DENY = 2, } zonemgr_MigrationCloneOpts_t; .fi .RE .\" } blockquote .PP \fBenum MigrationDestroyOrphanOpt\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationDestroyOrphanOpt { ZMDOO_NONE = 0, ZMDOO_DOSET = 1, } zonemgr_MigrationDestroyOrphanOpt_t; .fi .RE .\" } blockquote .PP \fBenum MigrationLastBootedOpt\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationLastBootedOpt { ZMLBO_NONE = 0, ZMLBO_LBSET = 1, } zonemgr_MigrationLastBootedOpt_t; .fi .RE .\" } blockquote .PP \fBenum MigrationLastMountedOpt\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationLastMountedOpt { ZMLMO_NONE = 0, ZMLMO_LMSET = 1, } zonemgr_MigrationLastMountedOpt_t; .fi .RE .\" } blockquote .PP \fBenum MigrationMatchedOpt\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationMatchedOpt { ZMMO_NONE = 0, ZMMO_MSET = 1, } zonemgr_MigrationMatchedOpt_t; .fi .RE .\" } blockquote .PP \fBenum EvacuationStatus\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_EvacuationStatus { ZES_SUCCESS = 0, ZES_FAIL = 1, ZES_PARTIAL_FAIL = 2, } zonemgr_EvacuationStatus_t; .fi .RE .\" } blockquote .PP \fBenum EvacuationErrorCode\fR .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .PP \fBenum MigrationMilestone\fR .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .PP \fBenum MigrationStatus\fR .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .SS "Structured Types" .PP \fBstruct Result\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_Result zonemgr_Result_t; .PP .nf struct zonemgr_Result { zonemgr_ErrorCode_t *zr_code; char *zr_str; char *zr_stdout; char *zr_stderr; }; .fi .nf .HP \w'void\ \fBzonemgr_Result_free\fR('u .R void \fBzonemgr_Result_free\fR(zonemgr_Result_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct ConfigChange\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_ConfigChange zonemgr_ConfigChange_t; .PP .nf struct zonemgr_ConfigChange { char *zcc_zone; }; .fi .nf .HP \w'void\ \fBzonemgr_ConfigChange_free\fR('u .R void \fBzonemgr_ConfigChange_free\fR(zonemgr_ConfigChange_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct StateChange\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_StateChange zonemgr_StateChange_t; .PP .nf struct zonemgr_StateChange { char *zsc_zone; char *zsc_oldstate; char *zsc_newstate; }; .fi .nf .HP \w'void\ \fBzonemgr_StateChange_free\fR('u .R void \fBzonemgr_StateChange_free\fR(zonemgr_StateChange_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct Property\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_Property zonemgr_Property_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_Property_free\fR('u .R void \fBzonemgr_Property_free\fR(zonemgr_Property_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct Resource\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_Resource zonemgr_Resource_t; .PP .nf struct zonemgr_Resource { char *zr_type; zonemgr_Property_t **zr_properties; int zr_properties_count; char *zr_parent; }; .fi .nf .HP \w'void\ \fBzonemgr_Resource_free\fR('u .R void \fBzonemgr_Resource_free\fR(zonemgr_Resource_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct Errno\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_Errno zonemgr_Errno_t; .PP .nf struct zonemgr_Errno { zonemgr_ErrorDomain_t ze_domain; int ze_errno; }; .fi .nf .HP \w'void\ \fBzonemgr_Errno_free\fR('u .R void \fBzonemgr_Errno_free\fR(zonemgr_Errno_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct MigrationError\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationError zonemgr_MigrationError_t; .PP .nf struct zonemgr_MigrationError { zonemgr_MigrationOperation_t zme_operation; zonemgr_Errno_t *zme_err; char *zme_str; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationError_free\fR('u .R void \fBzonemgr_MigrationError_free\fR(zonemgr_MigrationError_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct MigrationAttach\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationAttach zonemgr_MigrationAttach_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationAttach_free\fR('u .R void \fBzonemgr_MigrationAttach_free\fR(zonemgr_MigrationAttach_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct EvacuationMigrationResult\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationMigrationResult zonemgr_EvacuationMigrationResult_t; .PP .nf struct zonemgr_EvacuationMigrationResult { char *zemr_zoneName; boolean_t zemr_evacuated; char *zemr_evacuationTarget; zonemgr_MigrationStatus_t zemr_migrationStatus; zonemgr_MigrationError_t *zemr_migrationError; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationMigrationResult_free\fR('u .R void \fBzonemgr_EvacuationMigrationResult_free\fR(zonemgr_EvacuationMigrationResult_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct EvacuationResult\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationResult zonemgr_EvacuationResult_t; .PP .nf struct zonemgr_EvacuationResult { zonemgr_EvacuationStatus_t zer_status; boolean_t zer_returning; zonemgr__rad_dict_string_EvacuationMigrationResult_t *zer_migrationResults; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationResult_free\fR('u .R void \fBzonemgr_EvacuationResult_free\fR(zonemgr_EvacuationResult_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct EvacuationError\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationError zonemgr_EvacuationError_t; .PP .nf struct zonemgr_EvacuationError { zonemgr_EvacuationErrorCode_t zee_code; zonemgr_Errno_t *zee_err; char *zee_str; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationError_free\fR('u .R void \fBzonemgr_EvacuationError_free\fR(zonemgr_EvacuationError_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct MigrationProgress\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationProgress zonemgr_MigrationProgress_t; .PP .nf struct zonemgr_MigrationProgress { char *zmp_zone; rc_instance_t *zmp_connection; zonemgr_MigrationOperation_t zmp_operation; char *zmp_str; unsigned int *zmp_percent_complete; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationProgress_free\fR('u .R void \fBzonemgr_MigrationProgress_free\fR(zonemgr_MigrationProgress_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct EvacuationProgress\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationProgress zonemgr_EvacuationProgress_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationProgress_free\fR('u .R void \fBzonemgr_EvacuationProgress_free\fR(zonemgr_EvacuationProgress_t\ *in); .RS .RE .fi .RE .\" } blockquote .PP \fBstruct SupportedCiphers\fR .\" blockquote { .RS 4 .PP typedef struct zonemgr_SupportedCiphers zonemgr_SupportedCiphers_t; .PP .nf struct zonemgr_SupportedCiphers { char **zsc_source; int zsc_source_count; char **zsc_destination; int zsc_destination_count; char *zsc_defaultcipher; }; .fi .nf .HP \w'void\ \fBzonemgr_SupportedCiphers_free\fR('u .R void \fBzonemgr_SupportedCiphers_free\fR(zonemgr_SupportedCiphers_t\ *in); .RS .RE .fi .RE .\" } blockquote .SS "Dictionaries" .PP \fBDictionary { string : EvacuationMigrationResult }\fR .\" blockquote { .RS 4 .PP typedef struct base_rad_dict zonemgr__rad_dict_string_EvacuationMigrationResult_t; .RE .\" } blockquote .SH "DESCRIPTION" .PP \fBAPI com\&.oracle\&.solaris\&.rad\&.zonemgr \fR\fB\&\s-2\u[1]\d\s+2\fR .PP This API provides functionality for the configuration and administration of Zones subsystem\&. .PP 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\&. .PP The API detects and reports the creation and deletion of zones as well as configuration changes for individual zones\&. .PP 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\&. .PP 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\&. .PP The following sample Python clients illustrate some simple interactions with the module\&. .SH "INTERFACES" .SS "interface ZoneManager" .PP Manage zones on this system .PP Create and delete zones\&. Changes in the state of zones can be monitored through the StateChange event\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneManager Properties\fR .RS 4 .PP \fB\fIzonemgr_EvacuationResult_t *\fR\fR\ \&\fBevacuationState\fR (\fIread\-only\fR, \fInullable\fR) \(em The current evacuation state .\" blockquote { .RS 4 .PP Available since version 1\&.4\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_get_evacuationState\fR('u .R rc_err_t \fBzonemgr_ZoneManager_get_evacuationState\fR(rc_instance_t\ *inst, . zonemgr_EvacuationResult_t\ **result, . zonemgr_EvacuationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .PP \fIerror\fR .RE .\" } blockquote .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBRead Error:\fR \fB\fIzonemgr_EvacuationError_t **\fR\fR .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneManager Methods\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_create\fR('u .R rc_err_t \fBzonemgr_ZoneManager_create\fR(rc_instance_t\ *inst, . const\ char\ *name, . const\ char\ *path, . const\ char\ *template, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Create a zone .PP Create a zone with the given name\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIname\fR .PP \fIpath\fR (\fInullable\fR) .PP \fItemplate\fR (\fInullable\fR) .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_delete\fR('u .R rc_err_t \fBzonemgr_ZoneManager_delete\fR(rc_instance_t\ *inst, . const\ char\ *name, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Delete a zone .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIname\fR .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_createConfig\fR('u .R rc_err_t \fBzonemgr_ZoneManager_createConfig\fR(rc_instance_t\ *inst, . const\ char\ *template, . rc_instance_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Create an ephemeral configuration .PP 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()\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fItemplate\fR (\fInullable\fR) .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_importConfig\fR('u .R rc_err_t \fBzonemgr_ZoneManager_importConfig\fR(rc_instance_t\ *inst, . boolean_t\ noexecute, . const\ char\ *name, . const\ char\ **configuration, . int\ configuration_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Import a zone .PP The supplied configuration must be in a format that could be used in a zonecfg command file \- e\&.g\&. output of zonecfg export\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fInoexecute\fR \(em If true, do not execute the commands, but verify that they would result in a legal zone configuration\&. .PP \fIname\fR .PP \fIconfiguration\fR \(em Command details .PP \fIconfiguration_count\fR \(em Number of items in configuration array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_connectRemote\fR('u .R rc_err_t \fBzonemgr_ZoneManager_connectRemote\fR(rc_instance_t\ *inst, . const\ char\ *uri, . const\ char\ *password, . const\ char\ *SSH_AUTH_SOCK, . rc_instance_t\ **result, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Connect to a remote host for migration purposes .PP 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\&. .PP If an ssh URI is used, it must be already configured in promptless mode (e\&.g\&. no need for host key verification)\&. .PP Available since version 1\&.3\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIuri\fR \(em The RAD URI to connect to .PP \fIpassword\fR (\fInullable\fR) \(em The password to use if required .PP \fISSH_AUTH_SOCK\fR (\fInullable\fR) \(em SSH_AUTH_SOCK environment variable value to set before attempting an connection to the remote system\&. Only applies if the URI scheme is ssh\&. .\" blockquote { .RS 4 .PP Available since version 1\&.10\&. .RE .\" } blockquote .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_initEvacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_initEvacuate\fR(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); .RS .RE .fi .\" blockquote { .RS 4 .PP Initialize a zone evacuation .PP 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\&. .PP 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\&. .PP If the optional "allowPartial" argument is set to true, this method can still succeed even if some of the individual migration initializations fail\&. .PP If an ssh URI is used, it must be already configured in promptless mode (e\&.g\&. no need for host key verification)\&. .PP On a failure, the error returned contains a mapping of the zone names to the individual initialization errors encountered\&. .PP Available since version 1\&.4\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIisReturn\fR (\fInullable\fR) \(em Initialize for a return evacuation .\" blockquote { .RS 4 .PP At least one zone must be evacuated, and in a state ready to migrate back, for this mode to pass initialization\&. .RE .\" } blockquote .PP \fIallowPartial\fR (\fInullable\fR) \(em Allow initialization even if some zones fail .PP \fIdryRun\fR (\fInullable\fR) \(em Only perform an evacuation dry run .PP \fIevacuateAll\fR (\fInullable\fR) \(em Evacuate both running and non\-running (installed) zones .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIoverwriteConfig\fR (\fInullable\fR) \(em Overwrite configurations of all zones on the remote host\&. .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_evacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_evacuate\fR(rc_instance_t\ *inst, . zonemgr_EvacuationResult_t\ **result, . zonemgr_EvacuationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Perform a zone evacuation .PP 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)\&. .PP 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\&. .PP cancelEvacuate() may be called from another thread to cancel the evacuation in progress\&. .PP 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\&. .PP Available since version 1\&.4\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_cancelEvacuate\fR('u .R rc_err_t \fBzonemgr_ZoneManager_cancelEvacuate\fR(rc_instance_t\ *inst, . zonemgr_EvacuationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Cancel a Zone Evacuation .PP 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\&. .PP Available since version 1\&.4\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIerror\fR .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneManager Retrieve\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager__rad_get_name\fR('u .R rc_err_t \fBzonemgr_ZoneManager__rad_get_name\fR(adr_name_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Obtain RAD name of a ZoneManager object\&. .PP \fBArguments:\fR .PP \fIresult\fR \(em RAD name .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager__rad_lookup\fR('u .R rc_err_t \fBzonemgr_ZoneManager__rad_lookup\fR(rc_conn_t\ *c, . boolean_t\ strict, . rc_instance_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Lookup a ZoneManager instance\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIresult\fR \(em RAD instance .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager__rad_list\fR('u .R rc_err_t \fBzonemgr_ZoneManager__rad_list\fR(rc_conn_t\ *c, . boolean_t\ strict, . adr_pattern_scheme_t\ scheme, . adr_name_t\ ***result, . int\ *result_count, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP List RAD names of a available ZoneManager instances\&. .PP Returns an array and array size of matching object names\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIscheme\fR \(em Apply glob (NS_GLOB) or regex (NS_REGEX) matching .PP \fIresult\fR \(em Array of RAD names .PP \fIresult_count\fR \(em Number of names in result array .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneManager Events\fR .RS 4 .PP \fIstateChange\fR .\" blockquote { .RS 4 .nf .HP \w'typedef\ void\ \fB(*zonemgr_ZoneManager_stateChange_cb_f)\fR('u .R typedef void \fB(*zonemgr_ZoneManager_stateChange_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_StateChange_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Function invoked when event "stateChange" occurs\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance that generated the event .PP \fIpayload\fR \(em Event payload .PP \fIts\fR \(em Time stamp .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_subscribe_stateChange\fR('u .R rc_err_t \fBzonemgr_ZoneManager_subscribe_stateChange\fR(rc_instance_t\ *inst, . zonemgr_ZoneManager_stateChange_cb_f\ cb, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Subscribe to event "stateChange"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIcb\fR \(em Event callback function .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_unsubscribe_stateChange\fR('u .R rc_err_t \fBzonemgr_ZoneManager_unsubscribe_stateChange\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Unsubscribe from event "stateChange"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIarg\fR \(em User data returned .RE .\" } blockquote .RE .\" } blockquote .PP \fIevacuationProgress\fR .\" blockquote { .RS 4 .nf .HP \w'typedef\ void\ \fB(*zonemgr_ZoneManager_evacuationProgress_cb_f)\fR('u .R typedef void \fB(*zonemgr_ZoneManager_evacuationProgress_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_EvacuationProgress_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Function invoked when event "evacuationProgress" occurs\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance that generated the event .PP \fIpayload\fR \(em Event payload .PP \fIts\fR \(em Time stamp .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_subscribe_evacuationProgress\fR('u .R rc_err_t \fBzonemgr_ZoneManager_subscribe_evacuationProgress\fR(rc_instance_t\ *inst, . zonemgr_ZoneManager_evacuationProgress_cb_f\ cb, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Subscribe to event "evacuationProgress"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIcb\fR \(em Event callback function .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneManager_unsubscribe_evacuationProgress\fR('u .R rc_err_t \fBzonemgr_ZoneManager_unsubscribe_evacuationProgress\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Unsubscribe from event "evacuationProgress"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIarg\fR \(em User data returned .RE .\" } blockquote .RE .\" } blockquote .RE .SS "interface Zone" .PP Operations that affect a single zone .PP 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\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZone Properties\fR .RS 4 .PP \fB\fIconst char **\fR\fR\ \&\fBauxstate\fR (\fIread\-only\fR, \fInullable\fR) \(em Zone auxiliary state .\" blockquote { .RS 4 .PP The list of zone auxiliary states\&. This property is dynamic, can be modified externally, and can be empty\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_auxstate\fR('u .R rc_err_t \fBzonemgr_Zone_get_auxstate\fR(rc_instance_t\ *inst, . char\ ***result, . int\ *result_cnt, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .PP \fIresult_cnt\fR \(em Number of items in result array .PP \fIerror\fR .RE .\" } blockquote .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBRead Error:\fR \fB\fIzonemgr_Result_t **\fR\fR .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBbrand\fR (\fIread\-only\fR) \(em Zone brand .\" blockquote { .RS 4 .PP The brand of the zone\&. This is equivalent to the "brand" property in the global resource\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_brand\fR('u .R rc_err_t \fBzonemgr_Zone_get_brand\fR(rc_instance_t\ *inst, . char\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .PP \fIerror\fR .RE .\" } blockquote .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBRead Error:\fR \fB\fIzonemgr_Result_t **\fR\fR .RE .\" } blockquote .PP \fB\fIint\fR\fR\ \&\fBid\fR (\fIread\-only\fR) \(em Zone id .\" blockquote { .RS 4 .PP The ID of the zone\&. This property is dynamic and can be modified externally\&. If a zone reboots, the zone ID will change\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_id\fR('u .R rc_err_t \fBzonemgr_Zone_get_id\fR(rc_instance_t\ *inst, . int\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBuuid\fR (\fIread\-only\fR, \fInullable\fR) \(em The UUID of the zone .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_uuid\fR('u .R rc_err_t \fBzonemgr_Zone_get_uuid\fR(rc_instance_t\ *inst, . char\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .PP \fIerror\fR .RE .\" } blockquote .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBRead Error:\fR \fB\fIzonemgr_Result_t **\fR\fR .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBname\fR (\fIread\-only\fR) \(em Zone name .\" blockquote { .RS 4 .PP The name of the zone\&. This is equivalent to the "name" property in the global resource\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_name\fR('u .R rc_err_t \fBzonemgr_Zone_get_name\fR(rc_instance_t\ *inst, . char\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBstate\fR (\fIread\-only\fR) \(em Zone state .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_get_state\fR('u .R rc_err_t \fBzonemgr_Zone_get_state\fR(rc_instance_t\ *inst, . char\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZone Methods\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_cancelConfig\fR('u .R rc_err_t \fBzonemgr_Zone_cancelConfig\fR(rc_instance_t\ *inst, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Resets any configuration changes done after editConfig() .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_exportConfig\fR('u .R rc_err_t \fBzonemgr_Zone_exportConfig\fR(rc_instance_t\ *inst, . boolean_t\ *includeEdits, . boolean_t\ *liveMode, . boolean_t\ *reimport, . char\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Return the exported output for this zone .PP Return a string containing the exported form of the configuration\&. The output matches the configuration snapshot\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIincludeEdits\fR (\fInullable\fR) \(em Include edits in export .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIliveMode\fR (\fInullable\fR) \(em Export live configuration .\" blockquote { .RS 4 .PP If set to true, live (running) zone configuration is exported as seen at the time of this method call\&. .PP If not specified, this method honors the session\'s liveMode\&. .PP If the zone is not running yet live mode was requested, INVALID_ZONE_STATE error will be raised\&. .RE .\" } blockquote .PP \fIreimport\fR (\fInullable\fR) \(em Export in reimportable format .\" blockquote { .RS 4 .PP If set, the output is directly suitable for re\-importing a configuration via importConfig() with reimport set\&. Default value is false\&. .RE .\" } blockquote .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_update\fR('u .R rc_err_t \fBzonemgr_Zone_update\fR(rc_instance_t\ *inst, . boolean_t\ noexecute, . const\ char\ **commands, . int\ commands_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Process the supplied commands to update the zone .PP Process the list of commands\&. .PP 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\&.) .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fInoexecute\fR \(em If true, do not execute the commands, but verify that they would result in a legal zone configuration\&. .PP \fIcommands\fR \(em Each element is a command, recognizable by zonecfg(8)\&. Failure of any command results in no changes to the zone\&. .PP \fIcommands_count\fR \(em Number of items in commands array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_editConfig\fR('u .R rc_err_t \fBzonemgr_Zone_editConfig\fR(rc_instance_t\ *inst, . boolean_t\ *liveMode, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Initiate zone configuration editing .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIliveMode\fR (\fInullable\fR) \(em Edit live configuration .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_commitConfig\fR('u .R rc_err_t \fBzonemgr_Zone_commitConfig\fR(rc_instance_t\ *inst, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Commit the current configuration .PP Tries to save the configuration changes made by addResource(), removeResources() and setResourceProperties(), clearResourceProperties() since the last call to editConfig()\&. .PP 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\&. .PP 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\&. .PP The session liveMode is not reset\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_configIsLive\fR('u .R rc_err_t \fBzonemgr_Zone_configIsLive\fR(rc_instance_t\ *inst, . boolean_t\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Returns session\'s liveMode setting as set by preceding editConfig() or reloadConfig() method calls\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_configIsStale\fR('u .R rc_err_t \fBzonemgr_Zone_configIsStale\fR(rc_instance_t\ *inst, . boolean_t\ *result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_addResource\fR('u .R rc_err_t \fBzonemgr_Zone_addResource\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *resource, . zonemgr_Resource_t\ *scope, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Add a resource to the zone configuration .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresource\fR .PP \fIscope\fR (\fInullable\fR) \(em Specify where to add the new resource to\&. See mac in anet resource example above\&. .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_reloadConfig\fR('u .R rc_err_t \fBzonemgr_Zone_reloadConfig\fR(rc_instance_t\ *inst, . boolean_t\ *liveMode, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Reload zone configuration snapshot .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIliveMode\fR (\fInullable\fR) \(em 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\&. .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_removeResources\fR('u .R rc_err_t \fBzonemgr_Zone_removeResources\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Resource_t\ *scope, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Delete resource(s) matching filter from the zone configuration .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIfilter\fR .PP \fIscope\fR (\fInullable\fR) \(em Specify where to remove the resource(s) from\&. Used for example to remove non\-primary mac address(es) from a particular anet resource\&. .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_getResources\fR('u .R rc_err_t \fBzonemgr_Zone_getResources\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Resource_t\ *scope, . zonemgr_Resource_t\ ***result, . int\ *result_cnt, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Return a list of zero or more resources matching given filter .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIfilter\fR (\fInullable\fR) \(em Filter to use .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIscope\fR (\fInullable\fR) \(em Scope of resource(s) .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIresult\fR .PP \fIresult_cnt\fR \(em Number of items in result array .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_getResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_getResourceProperties\fR(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); .RS .RE .fi .\" blockquote { .RS 4 .PP Returns a list of zero or more properties .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIfilter\fR .PP \fIproperties\fR (\fInullable\fR) \(em Names of the properties the caller is interested in\&. If NULL, all properties are returned\&. .PP \fIproperties_count\fR \(em Number of items in properties array .PP \fIresult\fR .PP \fIresult_cnt\fR \(em Number of items in result array .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_setResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_setResourceProperties\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . zonemgr_Property_t\ **properties, . int\ properties_count, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Set property values of given resource .PP 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\&. .PP 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\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIfilter\fR .PP \fIproperties\fR .PP \fIproperties_count\fR \(em Number of items in properties array .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_clearResourceProperties\fR('u .R rc_err_t \fBzonemgr_Zone_clearResourceProperties\fR(rc_instance_t\ *inst, . zonemgr_Resource_t\ *filter, . const\ char\ **properties, . int\ properties_count, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Clear property values of given resource .PP 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\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIfilter\fR .PP \fIproperties\fR \(em Names of the properties to clear .PP \fIproperties_count\fR \(em Number of items in properties array .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_apply\fR('u .R rc_err_t \fBzonemgr_Zone_apply\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Apply configuration to the running zone .PP Can fail with INVALID_ZONE_STATE if the zone is not running\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options as described in zoneadm(8) .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_attach\fR('u .R rc_err_t \fBzonemgr_Zone_attach\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Attach a zone .PP This method is equivalent to using zoneadm(8) attach on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_boot\fR('u .R rc_err_t \fBzonemgr_Zone_boot\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Boot a zone .PP This method is equivalent to using zoneadm(8) boot on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_clone\fR('u .R rc_err_t \fBzonemgr_Zone_clone\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Clone a zone .PP This method is equivalent to using zoneadm(8) clone on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_detach\fR('u .R rc_err_t \fBzonemgr_Zone_detach\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Detach a zone .PP This method is equivalent to using zoneadm(8) detach on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_halt\fR('u .R rc_err_t \fBzonemgr_Zone_halt\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Halt a zone .PP This method is equivalent to using zoneadm(8) halt on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_install\fR('u .R rc_err_t \fBzonemgr_Zone_install\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Install a zone .PP This method is equivalent to using zoneadm(8) install on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_mark\fR('u .R rc_err_t \fBzonemgr_Zone_mark\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Mark a zone state .PP This method is equivalent to using zoneadm(8) mark on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_migrate\fR('u .R rc_err_t \fBzonemgr_Zone_migrate\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Migrate a zone to a different system .PP 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)\&. .PP See prepareForMigration() for a more complete API\&. .PP Available since version 1\&.1\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_move\fR('u .R rc_err_t \fBzonemgr_Zone_move\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Move a zone .PP This method is equivalent to using zoneadm(8) move on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_rename\fR('u .R rc_err_t \fBzonemgr_Zone_rename\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Rename a zone .PP This method is equivalent to using zoneadm(8) rename on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_ready\fR('u .R rc_err_t \fBzonemgr_Zone_ready\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Ready a zone .PP This method is equivalent to using zoneadm(8) ready on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_reboot\fR('u .R rc_err_t \fBzonemgr_Zone_reboot\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Reboot a zone .PP This method is equivalent to using zoneadm(8) reboot on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_savecore\fR('u .R rc_err_t \fBzonemgr_Zone_savecore\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Save crash dump of a zone .PP This method is equivalent to using zoneadm(8) savecore on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_shutdown\fR('u .R rc_err_t \fBzonemgr_Zone_shutdown\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Shutdown a zone .PP This method is equivalent to using zoneadm(8) shutdown on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_suspend\fR('u .R rc_err_t \fBzonemgr_Zone_suspend\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Suspend a zone .PP This method is equivalent to using zoneadm(8) suspend on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_uninstall\fR('u .R rc_err_t \fBzonemgr_Zone_uninstall\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Uninstall a zone .PP This method is equivalent to using zoneadm(8) uninstall on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_verify\fR('u .R rc_err_t \fBzonemgr_Zone_verify\fR(rc_instance_t\ *inst, . const\ char\ **options, . int\ options_count, . zonemgr_Result_t\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Verify a zone .PP This method is equivalent to using zoneadm(8) verify on a zone\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIoptions\fR (\fInullable\fR) \(em Command options .PP \fIoptions_count\fR \(em Number of items in options array .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_prepareForMigration\fR('u .R rc_err_t \fBzonemgr_Zone_prepareForMigration\fR(rc_instance_t\ *inst, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Prepare a zone for migration .PP Prepare the zone for migration\&. This verifies the zone configuration, and sets the migrating\-out auxiliary state\&. .PP Available since version 1\&.3\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_initMigration\fR('u .R rc_err_t \fBzonemgr_Zone_initMigration\fR(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); .RS .RE .fi .\" blockquote { .RS 4 .PP Initialize a migration to a particular host .PP 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\&. .PP Note that MigrationProgress events are fired as part of this configuration, so you may want to subscribe prior to calling this routine\&. .PP Available since version 1\&.3\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fItype\fR \(em Migration type .PP \fIconn\fR (\fInullable\fR) \(em The remote host connection to use .\" blockquote { .RS 4 .PP If this argument is not specified, the evacuation target is used to determine the remote host\&. .RE .\" } blockquote .PP \fIcipher\fR (\fInullable\fR) \(em The cipher to use; if not specified, the default is used .PP \fIoverwriteConfig\fR (\fInullable\fR) \(em Overwrite any zone configuration on the remote host\&. .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZone Retrieve\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_Zone__rad_get_name\fR('u .R rc_err_t \fBzonemgr_Zone__rad_get_name\fR(adr_name_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Obtain RAD name of a Zone object\&. .PP \fBArguments:\fR .PP \fIresult\fR \(em RAD name .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone__rad_lookup\fR('u .R rc_err_t \fBzonemgr_Zone__rad_lookup\fR(rc_conn_t\ *c, . boolean_t\ strict, . rc_instance_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Lookup a Zone instance\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIresult\fR \(em RAD instance .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone__rad_list\fR('u .R rc_err_t \fBzonemgr_Zone__rad_list\fR(rc_conn_t\ *c, . boolean_t\ strict, . adr_pattern_scheme_t\ scheme, . adr_name_t\ ***result, . int\ *result_count, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP List RAD names of a available Zone instances\&. .PP Returns an array and array size of matching object names\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIscheme\fR \(em Apply glob (NS_GLOB) or regex (NS_REGEX) matching .PP \fIresult\fR \(em Array of RAD names .PP \fIresult_count\fR \(em Number of names in result array .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZone Events\fR .RS 4 .PP \fIconfigChange\fR .\" blockquote { .RS 4 .nf .HP \w'typedef\ void\ \fB(*zonemgr_Zone_configChange_cb_f)\fR('u .R typedef void \fB(*zonemgr_Zone_configChange_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_ConfigChange_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Function invoked when event "configChange" occurs\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance that generated the event .PP \fIpayload\fR \(em Event payload .PP \fIts\fR \(em Time stamp .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_subscribe_configChange\fR('u .R rc_err_t \fBzonemgr_Zone_subscribe_configChange\fR(rc_instance_t\ *inst, . zonemgr_Zone_configChange_cb_f\ cb, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Subscribe to event "configChange"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIcb\fR \(em Event callback function .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_unsubscribe_configChange\fR('u .R rc_err_t \fBzonemgr_Zone_unsubscribe_configChange\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Unsubscribe from event "configChange"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIarg\fR \(em User data returned .RE .\" } blockquote .RE .\" } blockquote .PP \fImigrationProgress\fR .\" blockquote { .RS 4 .nf .HP \w'typedef\ void\ \fB(*zonemgr_Zone_migrationProgress_cb_f)\fR('u .R typedef void \fB(*zonemgr_Zone_migrationProgress_cb_f)\fR(rc_instance_t\ *inst, . zonemgr_MigrationProgress_t\ *payload, . struct\ timespec\ ts, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Function invoked when event "migrationProgress" occurs\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance that generated the event .PP \fIpayload\fR \(em Event payload .PP \fIts\fR \(em Time stamp .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_subscribe_migrationProgress\fR('u .R rc_err_t \fBzonemgr_Zone_subscribe_migrationProgress\fR(rc_instance_t\ *inst, . zonemgr_Zone_migrationProgress_cb_f\ cb, . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Subscribe to event "migrationProgress"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIcb\fR \(em Event callback function .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_Zone_unsubscribe_migrationProgress\fR('u .R rc_err_t \fBzonemgr_Zone_unsubscribe_migrationProgress\fR(rc_instance_t\ *inst, . void\ **arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Unsubscribe from event "migrationProgress"\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIarg\fR \(em User data returned .RE .\" } blockquote .RE .\" } blockquote .RE .SS "interface ZoneInfo" .PP Report on the zone in which this instance is executing .PP Information about the current zone can be accessed\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneInfo Properties\fR .RS 4 .PP \fB\fIconst char *\fR\fR\ \&\fBbrand\fR (\fIread\-only\fR) \(em The brand of the zone in which this interface is executing .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo_get_brand\fR('u .R rc_err_t \fBzonemgr_ZoneInfo_get_brand\fR(rc_instance_t\ *inst, . char\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIint\fR\fR\ \&\fBid\fR (\fIread\-only\fR) \(em The ID of the zone in which this interface is executing .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo_get_id\fR('u .R rc_err_t \fBzonemgr_ZoneInfo_get_id\fR(rc_instance_t\ *inst, . int\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBuuid\fR (\fIread\-only\fR, \fInullable\fR) \(em The UUID of the zone in which this interface is executing .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo_get_uuid\fR('u .R rc_err_t \fBzonemgr_ZoneInfo_get_uuid\fR(rc_instance_t\ *inst, . char\ **result, . zonemgr_Result_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .PP \fIerror\fR .RE .\" } blockquote .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBRead Error:\fR \fB\fIzonemgr_Result_t **\fR\fR .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBname\fR (\fIread\-only\fR) \(em The name of the zone in which this instance is executing .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo_get_name\fR('u .R rc_err_t \fBzonemgr_ZoneInfo_get_name\fR(rc_instance_t\ *inst, . char\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIboolean_t\fR\fR\ \&\fBisGlobal\fR (\fIread\-only\fR) \(em Is this instance executing in a global zone? .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo_get_isGlobal\fR('u .R rc_err_t \fBzonemgr_ZoneInfo_get_isGlobal\fR(rc_instance_t\ *inst, . boolean_t\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneInfo Retrieve\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo__rad_get_name\fR('u .R rc_err_t \fBzonemgr_ZoneInfo__rad_get_name\fR(adr_name_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Obtain RAD name of a ZoneInfo object\&. .PP \fBArguments:\fR .PP \fIresult\fR \(em RAD name .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo__rad_lookup\fR('u .R rc_err_t \fBzonemgr_ZoneInfo__rad_lookup\fR(rc_conn_t\ *c, . boolean_t\ strict, . rc_instance_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Lookup a ZoneInfo instance\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIresult\fR \(em RAD instance .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneInfo__rad_list\fR('u .R rc_err_t \fBzonemgr_ZoneInfo__rad_list\fR(rc_conn_t\ *c, . boolean_t\ strict, . adr_pattern_scheme_t\ scheme, . adr_name_t\ ***result, . int\ *result_count, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP List RAD names of a available ZoneInfo instances\&. .PP Returns an array and array size of matching object names\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIscheme\fR \(em Apply glob (NS_GLOB) or regex (NS_REGEX) matching .PP \fIresult\fR \(em Array of RAD names .PP \fIresult_count\fR \(em Number of names in result array .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .RE .SS "interface MigrationConnection" .PP A connection to a particular remote host .PP Available since version 1\&.3\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMigrationConnection Properties\fR .RS 4 .PP \fB\fIboolean_t\fR\fR\ \&\fBsupportsMultipleZones\fR (\fIread\-only\fR) \(em Can the connection can be shared among multiple zones? .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_get_supportsMultipleZones\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_get_supportsMultipleZones\fR(rc_instance_t\ *inst, . boolean_t\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIconst char *\fR\fR\ \&\fBhostname\fR (\fIread\-only\fR) \(em The remote hostname as supplied in the URI .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_get_hostname\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_get_hostname\fR(rc_instance_t\ *inst, . char\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIboolean_t\fR\fR\ \&\fBsupportsSolarisZones\fR (\fIread\-only\fR) \(em Can the connection support Solaris Zones? .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_get_supportsSolarisZones\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_get_supportsSolarisZones\fR(rc_instance_t\ *inst, . boolean_t\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .PP \fB\fIboolean_t *\fR\fR\ \&\fBsupportsSolaris10Zones\fR (\fIread\-only\fR, \fInullable\fR) \(em Can the connection support solaris10 Zones? .\" blockquote { .RS 4 .PP Available since version 1\&.7\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_get_supportsSolaris10Zones\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_get_supportsSolaris10Zones\fR(rc_instance_t\ *inst, . boolean_t\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMigrationConnection Methods\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection_getSupportedCiphers\fR('u .R rc_err_t \fBzonemgr_MigrationConnection_getSupportedCiphers\fR(rc_instance_t\ *inst, . zonemgr_SupportedCiphers_t\ **result, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Return the ciphers supported for encrypted live migration .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR .PP \fIerror\fR .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBMigrationConnection Retrieve\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection__rad_get_name\fR('u .R rc_err_t \fBzonemgr_MigrationConnection__rad_get_name\fR(adr_name_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Obtain RAD name of a MigrationConnection object\&. .PP \fBArguments:\fR .PP \fIresult\fR \(em RAD name .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection__rad_lookup\fR('u .R rc_err_t \fBzonemgr_MigrationConnection__rad_lookup\fR(rc_conn_t\ *c, . boolean_t\ strict, . rc_instance_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Lookup a MigrationConnection instance\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIresult\fR \(em RAD instance .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_MigrationConnection__rad_list\fR('u .R rc_err_t \fBzonemgr_MigrationConnection__rad_list\fR(rc_conn_t\ *c, . boolean_t\ strict, . adr_pattern_scheme_t\ scheme, . adr_name_t\ ***result, . int\ *result_count, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP List RAD names of a available MigrationConnection instances\&. .PP Returns an array and array size of matching object names\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIscheme\fR \(em Apply glob (NS_GLOB) or regex (NS_REGEX) matching .PP \fIresult\fR \(em Array of RAD names .PP \fIresult_count\fR \(em Number of names in result array .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .RE .SS "interface ZoneMigration" .PP Represents an ongoing zone migration .PP A migration may be cancelled at an arbitrary point, for example if the zone is halted and deleted\&. .PP Available since version 1\&.3\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneMigration Properties\fR .RS 4 .PP \fB\fIzonemgr_MigrationState_t\fR\fR\ \&\fBstate\fR (\fIread\-only\fR) \(em Current migration state .\" blockquote { .RS 4 .PP Only a ZoneMigration object in state INITIALIZED can be used by the migrate() method\&. .RE .\" } blockquote .\" blockquote { .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration_get_state\fR('u .R rc_err_t \fBzonemgr_ZoneMigration_get_state\fR(rc_instance_t\ *inst, . zonemgr_MigrationState_t\ *result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get property value\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIresult\fR \(em Property value returned .RE .\" } blockquote .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneMigration Methods\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration_migrate\fR('u .R rc_err_t \fBzonemgr_ZoneMigration_migrate\fR(rc_instance_t\ *inst, . boolean_t\ *suspendAtStart, . zonemgr_MigrationAttach_t\ *attachOptions, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Migrate the zone .PP 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\&. .PP 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()\&. .PP This routine waits synchronously for migration to complete\&. However, a separate client thread can call cancel() to asynchronously cancel a migration\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIsuspendAtStart\fR (\fInullable\fR) \(em Debug option: suspend the guest at the start .PP \fIattachOptions\fR (\fInullable\fR) \(em Migration options for attach of solaris zone .\" blockquote { .RS 4 .PP Available since version 1\&.5\&. .RE .\" } blockquote .PP \fIerror\fR .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration_cancel\fR('u .R rc_err_t \fBzonemgr_ZoneMigration_cancel\fR(rc_instance_t\ *inst, . zonemgr_MigrationError_t\ **error); .RS .RE .fi .\" blockquote { .RS 4 .PP Cancel an ongoing migration .PP Cancel an ongoing or prepared migration\&. After this call (if successful), the state is NONE, and migration must be restarted from prepareForMigration()\&. .PP 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)\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .PP \fIerror\fR .RE .\" } blockquote .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBZoneMigration Retrieve\fR .RS 4 .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration__rad_get_name\fR('u .R rc_err_t \fBzonemgr_ZoneMigration__rad_get_name\fR(adr_name_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Obtain RAD name of a ZoneMigration object\&. .PP \fBArguments:\fR .PP \fIresult\fR \(em RAD name .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration__rad_lookup\fR('u .R rc_err_t \fBzonemgr_ZoneMigration__rad_lookup\fR(rc_conn_t\ *c, . boolean_t\ strict, . rc_instance_t\ **result, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP Lookup a ZoneMigration instance\&. .PP 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\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIresult\fR \(em RAD instance .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr_ZoneMigration__rad_list\fR('u .R rc_err_t \fBzonemgr_ZoneMigration__rad_list\fR(rc_conn_t\ *c, . boolean_t\ strict, . adr_pattern_scheme_t\ scheme, . adr_name_t\ ***result, . int\ *result_count, . int\ n, . \&.\&.\&.); .RS .RE .fi .\" blockquote { .RS 4 .PP List RAD names of a available ZoneMigration instances\&. .PP Returns an array and array size of matching object names\&. .PP \fBArguments:\fR .PP \fIc\fR \(em RAD connection handle .PP \fIstrict\fR \(em Strict (B_TRUE) or relaxed (B_FALSE) versioning .PP \fIscheme\fR \(em Apply glob (NS_GLOB) or regex (NS_REGEX) matching .PP \fIresult\fR \(em Array of RAD names .PP \fIresult_count\fR \(em Number of names in result array .PP \fIn\fR \(em Number of key\-value pairs provided as variadic arguments .PP \&.\&.\&. \(em Optional key\-value pairs that compose the primary key .RE .\" } blockquote .RE .SH "ENUMERATED TYPES" .PP \fBenum ErrorCode\fR \(em Errors .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZEC_NONE (0) \(em No error .PP ZEC_FRAMEWORK_ERROR (1) \(em An error occurred within the RAD framework .PP ZEC_SNAPSHOT_ERROR (2) \(em Operation inconsistent with the snapshot .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP ZEC_COMMAND_ERROR (3) \(em An error occurred in the requested operation .PP ZEC_RESOURCE_ALREADY_EXISTS (4) \(em Resource to be added already exists .PP ZEC_RESOURCE_NOT_FOUND (5) \(em Unable to find a resource matching given filter .PP ZEC_RESOURCE_TOO_MANY (6) \(em Too many matching resources .\" blockquote { .RS 4 .PP If the filter provided matches more than one resource, this error can be returned by methods that operate on one particular resource\&. .RE .\" } blockquote .PP ZEC_RESOURCE_UNKNOWN (7) \(em The resource of the particular type is not known .PP ZEC_ALREADY_EDITING (8) \(em Already editing configuration .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP ZEC_INCOMPLETE_NO_CONFIG (9) \(em Cannot edit an incomplete zone with no configuration file .\" blockquote { .RS 4 .PP This error is returned by editConfig() when the zone is in an incomplete state with a non\-existent configuration file\&. .RE .\" } blockquote .PP ZEC_PROPERTY_UNKNOWN (10) \(em The given property does not exist .PP ZEC_NOT_EDITING (11) \(em Calling configuration modification methods is not allowed outside of transaction\&. .PP ZEC_SYSTEM_ERROR (12) \(em System error .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP ZEC_INVALID_ARGUMENT (13) \(em Invalid method argument(s) .PP ZEC_INVALID_ZONE_STATE (14) \(em Invalid zone state .\" blockquote { .RS 4 .PP This error is raised in case Live Zone Reconfiguration mode was requested, but the zone in question wasn\'t running\&. .RE .\" } blockquote .RE .\" } blockquote .PP \fBenum PropertyValueType\fR \(em The type of property .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_PropertyValueType { ZPVT_PROP_SIMPLE = 0, ZPVT_PROP_LIST = 1, ZPVT_PROP_COMPLEX = 2, } zonemgr_PropertyValueType_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP PROP_COMPLEX is obsolete and is never used\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZPVT_PROP_SIMPLE (0) .PP ZPVT_PROP_LIST (1) .PP ZPVT_PROP_COMPLEX (2) .RE .\" } blockquote .PP \fBenum MigrationOperation\fR \(em A particular operation as part of a zone migration .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMO_FRAMEWORK (0) \(em A system operation (e\&.g\&. fork()) .PP ZMO_CONNECT (1) \(em Connecting to a remote host .PP ZMO_INIT_CRYPTO (2) \(em Encryption setup .PP ZMO_CONFIG_CHECK (3) \(em Pre\-flight configuration check .PP ZMO_CONFIGURE (4) \(em Zone configuration .PP ZMO_ATTACH (5) \(em Zone attach .PP ZMO_BOOT (6) \(em Zone boot .PP ZMO_MIGRATE_INITIAL (7) \(em Initial copy during migration .PP ZMO_MIGRATE (8) \(em Migrating modified memory .PP ZMO_SUSPEND (9) \(em Suspending the zone .PP ZMO_RESTART (10) \(em Restarting the zone .PP ZMO_HALT (11) \(em Zone halt .PP ZMO_DETACH (12) \(em Zone detach .PP ZMO_UNCONFIGURE (13) \(em Zone unconfigure .PP ZMO_COMPLETE (14) \(em Migration completion .PP ZMO_CANCEL (15) \(em Migration cancellation .RE .\" } blockquote .PP \fBenum ErrorDomain\fR \(em Type of error number .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_ErrorDomain { ZED_SYSTEM = 0, ZED_ZONECFG = 1, } zonemgr_ErrorDomain_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZED_SYSTEM (0) \(em As per strerror() .PP ZED_ZONECFG (1) \(em As per zonecfg_strerror() .RE .\" } blockquote .PP \fBenum MigrationState\fR \(em Current migration state .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationState { ZMS_NONE = 0, ZMS_INITIALIZED = 1, ZMS_MIGRATING = 2, ZMS_COMPLETED = 3, } zonemgr_MigrationState_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMS_NONE (0) \(em No migration state .PP ZMS_INITIALIZED (1) \(em Migration is initialized .\" blockquote { .RS 4 .PP Migration state is initialized on remote host and ready to begin migration\&. .RE .\" } blockquote .PP ZMS_MIGRATING (2) \(em Migration is underway .PP ZMS_COMPLETED (3) \(em Migration is completed .RE .\" } blockquote .PP \fBenum MigrationType\fR .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationType { ZMT_LIVE = 0, ZMT_COLD = 1, } zonemgr_MigrationType_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMT_LIVE (0) \(em Live migration\&. .PP ZMT_COLD (1) \(em Cold migration\&. .RE .\" } blockquote .PP \fBenum MigrationUpdateOpts\fR \(em Migration options for update of packages on attach .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationUpdateOpts { ZMUO_NONE = 0, ZMUO_MIN = 1, ZMUO_ALL = 2, } zonemgr_MigrationUpdateOpts_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMUO_NONE (0) \(em No update of packages on attach .PP ZMUO_MIN (1) \(em Update minimal number of packages on attach .PP ZMUO_ALL (2) \(em Update all packages on attach .RE .\" } blockquote .PP \fBenum MigrationCloneOpts\fR \(em Migration options for clone of ZBE .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationCloneOpts { ZMCO_NONE = 0, ZMCO_FORCE = 1, ZMCO_DENY = 2, } zonemgr_MigrationCloneOpts_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMCO_NONE (0) \(em Use default clone behavior on migrate .PP ZMCO_FORCE (1) \(em Force ZBE clone on migrate .PP ZMCO_DENY (2) \(em Do not clone ZBE on migrate .RE .\" } blockquote .PP \fBenum MigrationDestroyOrphanOpt\fR \(em Migration option for destroy\-orphan\-zbes on attach .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationDestroyOrphanOpt { ZMDOO_NONE = 0, ZMDOO_DOSET = 1, } zonemgr_MigrationDestroyOrphanOpt_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMDOO_NONE (0) \(em No destroy\-orphan\-zbes option given\&. .PP ZMDOO_DOSET (1) \(em Destroy orphan ZBEs on attach\&. .RE .\" } blockquote .PP \fBenum MigrationLastBootedOpt\fR \(em Migration option for last\-booted ZBE selection on attach .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationLastBootedOpt { ZMLBO_NONE = 0, ZMLBO_LBSET = 1, } zonemgr_MigrationLastBootedOpt_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMLBO_NONE (0) \(em No last\-booted option given\&. .PP ZMLBO_LBSET (1) \(em Select last\-booted ZBE on attach .RE .\" } blockquote .PP \fBenum MigrationLastMountedOpt\fR \(em Migration option for last\-mounted ZBE selection on attach .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationLastMountedOpt { ZMLMO_NONE = 0, ZMLMO_LMSET = 1, } zonemgr_MigrationLastMountedOpt_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMLMO_NONE (0) \(em No last\-mounted option given\&. .PP ZMLMO_LMSET (1) \(em Select last\-mounted ZBE on attach .RE .\" } blockquote .PP \fBenum MigrationMatchedOpt\fR \(em Migration option for matched ZBE selection on attach .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_MigrationMatchedOpt { ZMMO_NONE = 0, ZMMO_MSET = 1, } zonemgr_MigrationMatchedOpt_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMMO_NONE (0) \(em No matched option given\&. .PP ZMMO_MSET (1) \(em Select active ZBE matching current global zone .RE .\" } blockquote .PP \fBenum EvacuationStatus\fR \(em Evacuation operation status .\" blockquote { .RS 4 .PP .nf typedef enum zonemgr_EvacuationStatus { ZES_SUCCESS = 0, ZES_FAIL = 1, ZES_PARTIAL_FAIL = 2, } zonemgr_EvacuationStatus_t; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZES_SUCCESS (0) \(em Operation succeeded for all zones .PP ZES_FAIL (1) \(em Entire operation failed .PP ZES_PARTIAL_FAIL (2) \(em Operation failed for one or more zones .RE .\" } blockquote .PP \fBenum EvacuationErrorCode\fR \(em Evacuation error code .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZEEC_FRAMEWORK (0) \(em Framework or general system failure .PP ZEEC_EVACUATION_IN_PROGRESS (1) \(em Evacuation already underway .\" blockquote { .RS 4 .PP Either an evacuation is already initialized, or one is currently under way\&. .RE .\" } blockquote .PP ZEEC_EVACUATION_NOT_INITED (2) \(em Evacuation not yet initialized .\" blockquote { .RS 4 .PP initEvacuate() has not been called prior to a evacuate() call\&. .RE .\" } blockquote .PP ZEEC_NO_EVACUATION_TO_RETURN (3) \(em No evacuation to return .\" blockquote { .RS 4 .PP Returned when there are no evacuated zones to return\&. .RE .\" } blockquote .PP ZEEC_NO_EVACUATION_TO_CANCEL (4) \(em No evacuation to cancel .\" blockquote { .RS 4 .PP Returned from cancelEvacuate() when there is no active (either initialized or running) evacuation\&. .RE .\" } blockquote .PP ZEEC_EVACUATION_NOT_PERMITTED (5) \(em Evacuation not permited .PP ZEEC_NO_ZONES_TO_EVACUATE (6) \(em No suitable zones to migrate .PP ZEEC_EVACUATION_CANCELED (7) \(em Evacuation has been canceled .RE .\" } blockquote .PP \fBenum MigrationMilestone\fR \(em A particular migration milestone or state as part of an evacuation .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMM_MIGRATE_INITIALIZING (0) \(em Migration is initializing .PP ZMM_MIGRATE_INITIALIZATION_COMPLETE (1) \(em Migration has initialized .PP ZMM_MIGRATE_INITIALIZATION_FAIL (2) \(em Migration initalizing has failed .PP ZMM_MIGRATING (3) \(em Migration is underway .PP ZMM_MIGRATE_COMPLETE (4) \(em Migration has completed .PP ZMM_MIGRATE_FAIL (5) \(em Migration has failed .PP ZMM_EVACUATE_INITIALIZING (6) \(em Evacuation is initializing .PP ZMM_EVACUATE_INITIALIZATION_COMPLETE (7) \(em Evacuation has initialized .PP ZMM_EVACUATE_INITIALIZATION_FAIL (8) \(em Evacuation initalizing has failed .PP ZMM_EVACUATING (9) \(em Evacuation is underway .PP ZMM_EVACUATE_COMPLETE (10) \(em Evacuation has completed .PP ZMM_EVACUATE_FAIL (11) \(em Evacuation has failed .PP ZMM_EVACUATE_CANCELED (12) \(em Evacuation has been canceled .RE .\" } blockquote .PP \fBenum MigrationStatus\fR \(em Individual migration error status in an evacuation .\" blockquote { .RS 4 .PP .nf 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; .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP ZMS_SUCCESS (0) \(em Success .PP ZMS_MIGRATE_NOT_ATTEMPTED (1) \(em Did not attempt to migrate zone .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP ZMS_MIGRATION_ERROR (2) \(em Module generated migration specific error .\" blockquote { .RS 4 .PP A zone failed to migrate\&. With this error, there will be an additional error payload with more details\&. .RE .\" } blockquote .PP ZMS_SYSTEM_ERROR (3) \(em General system error .PP ZMS_NOMEM_ERROR (4) \(em Out of memory .PP ZMS_NOTFOUND_ERROR (5) \(em Zone not found error .PP ZMS_PRIV_ERROR (6) \(em Insufficient privileges error .RE .\" } blockquote .SH "STRUCTURED TYPES" .PP \fBstruct Result\fR \(em An error occurred for the given operation .\" blockquote { .RS 4 .PP typedef struct zonemgr_Result zonemgr_Result_t; .PP .nf struct zonemgr_Result { zonemgr_ErrorCode_t *zr_code; char *zr_str; char *zr_stdout; char *zr_stderr; }; .fi .nf .HP \w'void\ \fBzonemgr_Result_free\fR('u .R void \fBzonemgr_Result_free\fR(zonemgr_Result_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzr_code\fR \(em Error code .PP \fIzr_str\fR \(em Error string .\" blockquote { .RS 4 .PP String representation of the actual error possibly including the information gathered from the low\-level error\&. .RE .\" } blockquote .PP \fIzr_stdout\fR \(em Contents of the standard out of a subprocess .PP \fIzr_stderr\fR \(em Contents of the standard error of a subprocess .RE .\" } blockquote .PP \fBstruct ConfigChange\fR \(em The payload of a configChange event .\" blockquote { .RS 4 .PP typedef struct zonemgr_ConfigChange zonemgr_ConfigChange_t; .PP .nf struct zonemgr_ConfigChange { char *zcc_zone; }; .fi .nf .HP \w'void\ \fBzonemgr_ConfigChange_free\fR('u .R void \fBzonemgr_ConfigChange_free\fR(zonemgr_ConfigChange_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzcc_zone\fR .RE .\" } blockquote .PP \fBstruct StateChange\fR \(em The payload of a stateChange event .\" blockquote { .RS 4 .PP typedef struct zonemgr_StateChange zonemgr_StateChange_t; .PP .nf struct zonemgr_StateChange { char *zsc_zone; char *zsc_oldstate; char *zsc_newstate; }; .fi .nf .HP \w'void\ \fBzonemgr_StateChange_free\fR('u .R void \fBzonemgr_StateChange_free\fR(zonemgr_StateChange_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzsc_zone\fR .PP \fIzsc_oldstate\fR .PP \fIzsc_newstate\fR .RE .\" } blockquote .PP \fBstruct Property\fR \(em A Resource property .\" blockquote { .RS 4 .PP typedef struct zonemgr_Property zonemgr_Property_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_Property_free\fR('u .R void \fBzonemgr_Property_free\fR(zonemgr_Property_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP complexvalue is obsolete and never used\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzp_name\fR .PP \fIzp_value\fR .PP \fIzp_type\fR .PP \fIzp_listvalue\fR .PP \fIzp_listvalue_count\fR .PP \fIzp_complexvalue\fR .PP \fIzp_complexvalue_count\fR .RE .\" } blockquote .PP \fBstruct Resource\fR \(em A zone resource .\" blockquote { .RS 4 .PP typedef struct zonemgr_Resource zonemgr_Resource_t; .PP .nf struct zonemgr_Resource { char *zr_type; zonemgr_Property_t **zr_properties; int zr_properties_count; char *zr_parent; }; .fi .nf .HP \w'void\ \fBzonemgr_Resource_free\fR('u .R void \fBzonemgr_Resource_free\fR(zonemgr_Resource_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP 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\&. .PP The rules for matching individual configuration resources are as follows: .PP 1\&. Resources are matched based on the filter\'s type attribute first\&. .PP 2\&. If the properties attribute of the filter is NULL (or is an empty array), then no additional filtering is done\&. .PP 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) .PP 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\&. .PP See examples and specific documentation for individual methods which accept Resource as filter argument\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzr_type\fR .PP \fIzr_properties\fR .PP \fIzr_properties_count\fR .PP \fIzr_parent\fR \(em Implementation detail .\" blockquote { .RS 4 .PP Private implementation detail to supported hierarchically nested resources\&. .RE .\" } blockquote .RE .\" } blockquote .PP \fBstruct Errno\fR \(em Error number description .\" blockquote { .RS 4 .PP typedef struct zonemgr_Errno zonemgr_Errno_t; .PP .nf struct zonemgr_Errno { zonemgr_ErrorDomain_t ze_domain; int ze_errno; }; .fi .nf .HP \w'void\ \fBzonemgr_Errno_free\fR('u .R void \fBzonemgr_Errno_free\fR(zonemgr_Errno_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIze_domain\fR .PP \fIze_errno\fR .RE .\" } blockquote .PP \fBstruct MigrationError\fR \(em An error occurred for the given migration operation .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationError zonemgr_MigrationError_t; .PP .nf struct zonemgr_MigrationError { zonemgr_MigrationOperation_t zme_operation; zonemgr_Errno_t *zme_err; char *zme_str; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationError_free\fR('u .R void \fBzonemgr_MigrationError_free\fR(zonemgr_MigrationError_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP Note that the error string includes any expanded strerror() equivalent\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzme_operation\fR .PP \fIzme_err\fR .PP \fIzme_str\fR .RE .\" } blockquote .PP \fBstruct MigrationAttach\fR \(em Migration options for attach of solaris zone .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationAttach zonemgr_MigrationAttach_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationAttach_free\fR('u .R void \fBzonemgr_MigrationAttach_free\fR(zonemgr_MigrationAttach_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzma_update\fR .PP \fIzma_clone\fR .PP \fIzma_destroyOrphan\fR .PP \fIzma_lastBooted\fR .PP \fIzma_lastMounted\fR .PP \fIzma_matched\fR .PP \fIzma_zbe\fR \(em Attach specified ZBE .RE .\" } blockquote .PP \fBstruct EvacuationMigrationResult\fR \(em A single migration status within an evacuation .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationMigrationResult zonemgr_EvacuationMigrationResult_t; .PP .nf struct zonemgr_EvacuationMigrationResult { char *zemr_zoneName; boolean_t zemr_evacuated; char *zemr_evacuationTarget; zonemgr_MigrationStatus_t zemr_migrationStatus; zonemgr_MigrationError_t *zemr_migrationError; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationMigrationResult_free\fR('u .R void \fBzonemgr_EvacuationMigrationResult_free\fR(zonemgr_EvacuationMigrationResult_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP A migration status within an evacuation\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzemr_zoneName\fR .PP \fIzemr_evacuated\fR .PP \fIzemr_evacuationTarget\fR .PP \fIzemr_migrationStatus\fR .PP \fIzemr_migrationError\fR .RE .\" } blockquote .PP \fBstruct EvacuationResult\fR \(em An evacuation operation result .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationResult zonemgr_EvacuationResult_t; .PP .nf struct zonemgr_EvacuationResult { zonemgr_EvacuationStatus_t zer_status; boolean_t zer_returning; zonemgr__rad_dict_string_EvacuationMigrationResult_t *zer_migrationResults; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationResult_free\fR('u .R void \fBzonemgr_EvacuationResult_free\fR(zonemgr_EvacuationResult_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzer_status\fR .PP \fIzer_returning\fR \(em The result is for an evacuation return operation .PP \fIzer_migrationResults\fR .RE .\" } blockquote .PP \fBstruct EvacuationError\fR \(em A fatal error occurred for an evacuation operation .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationError zonemgr_EvacuationError_t; .PP .nf struct zonemgr_EvacuationError { zonemgr_EvacuationErrorCode_t zee_code; zonemgr_Errno_t *zee_err; char *zee_str; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationError_free\fR('u .R void \fBzonemgr_EvacuationError_free\fR(zonemgr_EvacuationError_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP Note that the error string includes any expanded strerror() equivalent\&. .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzee_code\fR .PP \fIzee_err\fR .PP \fIzee_str\fR .RE .\" } blockquote .PP \fBstruct MigrationProgress\fR \(em Progress of a migration of a particular zone .\" blockquote { .RS 4 .PP typedef struct zonemgr_MigrationProgress zonemgr_MigrationProgress_t; .PP .nf struct zonemgr_MigrationProgress { char *zmp_zone; rc_instance_t *zmp_connection; zonemgr_MigrationOperation_t zmp_operation; char *zmp_str; unsigned int *zmp_percent_complete; }; .fi .nf .HP \w'void\ \fBzonemgr_MigrationProgress_free\fR('u .R void \fBzonemgr_MigrationProgress_free\fR(zonemgr_MigrationProgress_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzmp_zone\fR \(em The name of the zone .PP \fIzmp_connection\fR \(em The migration connection .PP \fIzmp_operation\fR \(em The current operation .PP \fIzmp_str\fR \(em A summary of the current operation progress .PP \fIzmp_percent_complete\fR \(em Percentage complete of this operation .\" blockquote { .RS 4 .PP Note, this is currently only set for MIGRATE_INITIAL\&. .RE .\" } blockquote .RE .\" } blockquote .PP \fBstruct EvacuationProgress\fR \(em Progress of an evacuation .\" blockquote { .RS 4 .PP typedef struct zonemgr_EvacuationProgress zonemgr_EvacuationProgress_t; .PP .nf 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; }; .fi .nf .HP \w'void\ \fBzonemgr_EvacuationProgress_free\fR('u .R void \fBzonemgr_EvacuationProgress_free\fR(zonemgr_EvacuationProgress_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzep_zoneName\fR \(em The name of the zone .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .PP \fIzep_remoteHost\fR \(em The remote host involved in the migration .\" blockquote { .RS 4 .PP For evacuations, this is the destination for the migration and for an ongoing return, this is the source of the migration\&. .RE .\" } blockquote .PP \fIzep_returning\fR \(em The progress is for an evacuation return .PP \fIzep_migrationMilestone\fR \(em The completed milestone or migration status .PP \fIzep_zoneCount\fR \(em Number of zones for evacuation\-wide events .PP \fIzep_transferRate\fR \(em Network transfer rate for evacuation (in bytes/second) .PP \fIzep_zoneProgress\fR \(em Detailed per zone migration progress message\&. .RE .\" } blockquote .PP \fBstruct SupportedCiphers\fR \(em Supported cipher information for encrypted live migration .\" blockquote { .RS 4 .PP typedef struct zonemgr_SupportedCiphers zonemgr_SupportedCiphers_t; .PP .nf struct zonemgr_SupportedCiphers { char **zsc_source; int zsc_source_count; char **zsc_destination; int zsc_destination_count; char *zsc_defaultcipher; }; .fi .nf .HP \w'void\ \fBzonemgr_SupportedCiphers_free\fR('u .R void \fBzonemgr_SupportedCiphers_free\fR(zonemgr_SupportedCiphers_t\ *in); .RS .RE .fi .RE .\" } blockquote .\" blockquote { .RS 4 .PP \fBFields:\fR .PP \fIzsc_source\fR \(em List of ciphers supported on the source (current) host .PP \fIzsc_source_count\fR .PP \fIzsc_destination\fR \(em List of ciphers supported on the destination host .PP \fIzsc_destination_count\fR .PP \fIzsc_defaultcipher\fR \(em Default cipher used between these two hosts .\" blockquote { .RS 4 .PP 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\&. .RE .\" } blockquote .RE .\" } blockquote .SH "DICTIONARIES" .SS "Dictionary { string : EvacuationMigrationResult }" .PP Dictionary with a key type of string and a value type of EvacuationMigrationResult\&. .PP typedef struct base_rad_dict zonemgr__rad_dict_string_EvacuationMigrationResult_t; .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_get\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_get\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . const\ char\ *key, . zonemgr_EvacuationMigrationResult_t\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Get the value for given key\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIkey\fR \(em Key value .PP \fIresult\fR \(em Value returned .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_put\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_put\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . const\ char\ *key, . zonemgr_EvacuationMigrationResult_t\ *value, . zonemgr_EvacuationMigrationResult_t\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Put a key\-value pair into the dictionary\&. .PP Returns a previous value stored with the same key if one exists\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIkey\fR \(em Key value .PP \fIvalue\fR \(em Value written .PP \fIresult\fR \(em Original value for the key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_contains\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_contains\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . const\ char\ *key); .RS .RE .fi .\" blockquote { .RS 4 .PP Check whether a key exists in the dictionary\&. .PP Returns RCE_OK when key exists, RCE_CLIENT_NOTFOUND otherwise\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIkey\fR \(em Key value .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_remove\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_remove\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . const\ char\ *key, . zonemgr_EvacuationMigrationResult_t\ **result); .RS .RE .fi .\" blockquote { .RS 4 .PP Remove key\-value pair from the dictionary\&. .PP Returns RCE_OK when key was sucessfully removed, RCE_CLIENT_NOTFOUND otherwise\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIkey\fR \(em Key value .PP \fIresult\fR \(em Original value for the key .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_keys\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_keys\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . char\ ***result, . int\ *count); .RS .RE .fi .\" blockquote { .RS 4 .PP Get list of keys from the dictionary\&. .PP Memory associated with the result array should be freed by the user\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIresult\fR \(em Array of dictionary keys .PP \fIcount\fR \(em Number of items in result array .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_values\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_values\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . zonemgr_EvacuationMigrationResult_t\ ***result, . int\ *count); .RS .RE .fi .\" blockquote { .RS 4 .PP Get list of values from the dictionary\&. .PP Memory associated with the result array should be freed by the user\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIresult\fR \(em Array of dictionary values .PP \fIcount\fR \(em Number of items in result array .RE .\" } blockquote .nf .HP \w'unsigned\ int\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_size\fR('u .R unsigned int \fBzonemgr__rad_dict_string_EvacuationMigrationResult_size\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict); .RS .RE .fi .\" blockquote { .RS 4 .PP Get number of key\-value pairs in the dictionary\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .RE .\" } blockquote .nf .HP \w'zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_create\fR('u .R zonemgr__rad_dict_string_EvacuationMigrationResult_t * \fBzonemgr__rad_dict_string_EvacuationMigrationResult_create\fR(const\ rc_instance_t\ *inst); .RS .RE .fi .\" blockquote { .RS 4 .PP Create a new, empty dictionary\&. .PP Returns a pointer to the dictionary, or NULL on error\&. .PP \fBArguments:\fR .PP \fIinst\fR \(em RAD instance .RE .\" } blockquote .nf .HP \w'void\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_free\fR('u .R void \fBzonemgr__rad_dict_string_EvacuationMigrationResult_free\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict); .RS .RE .fi .\" blockquote { .RS 4 .PP Destroy the dictionary and release the allocated memory\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .RE .\" } blockquote .nf .HP \w'rc_err_t\ \fBzonemgr__rad_dict_string_EvacuationMigrationResult_map\fR('u .R rc_err_t \fBzonemgr__rad_dict_string_EvacuationMigrationResult_map\fR(zonemgr__rad_dict_string_EvacuationMigrationResult_t\ *dict, . rc_err_t(*func)(const\ char\ *,\ zonemgr_EvacuationMigrationResult_t\ *,\ void\ *), . void\ *arg); .RS .RE .fi .\" blockquote { .RS 4 .PP Invoke a function with each key\-value pair in the dictionary\&. .PP \fBArguments:\fR .PP \fIdict\fR \(em Dictionary .PP \fIfunc\fR \(em Function to invoke .\" blockquote { .RS 4 .PP The arguments are: key, value, user\-data\&. .RE .\" } blockquote .PP \fIarg\fR \(em User data: custom parameter to invoke the function with .RE .\" } blockquote .SH "VERSION" .PP 1\&.10 .SH "ATTRIBUTES" .PP See attributes(7) for descriptions of the following attributes: .TS allbox tab(:); cB cB. T{ ATTRIBUTE TYPE T}:T{ ATTRIBUTE VALUE T} .T& l l l l. T{ Availability T}:T{ system/management/rad/module/rad\-zonemgr T} T{ Interface Stability T}:T{ Private T} .TE .sp 1 .SH "SEE ALSO" .PP \fBrad\fR(8) .SH "NOTES" .IP " 1." 4 Accessing Python documentation for this module: .sp .RS 4 .nf $ pydoc rad.bindings.com.oracle.solaris.rad.zonemgr_1 .fi .RE