// newAPIForRegistration exists to provide the required signature for // RegisterStandardFacade, converting st to backend. func newAPIForRegistration( st *state.State, resources facade.Resources, authorizer facade.Authorizer, ) (*API, error) { return NewAPI(&backendShim{st}, migration.PrecheckShim(st), resources, authorizer) }
// Prechecks ensure that the target controller is ready to accept a // model migration. func (api *API) Prechecks(model params.MigrationModelInfo) error { ownerTag, err := names.ParseUserTag(model.OwnerTag) if err != nil { return errors.Trace(err) } return migration.TargetPrecheck( migration.PrecheckShim(api.state), coremigration.ModelInfo{ UUID: model.UUID, Name: model.Name, Owner: ownerTag, AgentVersion: model.AgentVersion, }, ) }
targetUserTag, err := names.ParseUserTag(arg.UserTag) if err != nil { result.Results[i].Error = common.ServerError(errors.Annotate(err, "could not modify controller access")) continue } result.Results[i].Error = common.ServerError( ChangeControllerAccess(c.state, c.apiUser, targetUserTag, arg.Action, controllerAccess)) } return result, nil } var runMigrationPrechecks = func(st *state.State, targetInfo coremigration.TargetInfo) error { // Check model and source controller. if err := migration.SourcePrecheck(migration.PrecheckShim(st)); err != nil { return errors.Annotate(err, "source prechecks failed") } // Check target controller. conn, err := api.Open(targetToAPIInfo(targetInfo), migration.ControllerDialOpts()) if err != nil { return errors.Annotate(err, "connect to target controller") } defer conn.Close() modelInfo, err := makeModelInfo(st) if err != nil { return errors.Trace(err) } err = migrationtarget.NewClient(conn).Prechecks(modelInfo) return errors.Annotate(err, "target prechecks failed")