本文整理汇总了Golang中github.com/juju/juju/apiserver/params.IsCodeOperationBlocked函数的典型用法代码示例。如果您正苦于以下问题:Golang IsCodeOperationBlocked函数的具体用法?Golang IsCodeOperationBlocked怎么用?Golang IsCodeOperationBlocked使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsCodeOperationBlocked函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: assertBlocked
func (s *modelconfigSuite) assertBlocked(c *gc.C, err error, msg string) {
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue, gc.Commentf("error: %#v", err))
c.Assert(errors.Cause(err), jc.DeepEquals, ¶ms.Error{
Message: msg,
Code: "operation is blocked",
})
}
开发者ID:bac,项目名称:juju,代码行数:7,代码来源:modelconfig_test.go
示例2: ensureUserFriendlyErrorLog
// ensureUserFriendlyErrorLog ensures that error will be logged and displayed
// in a user-friendly manner with readable and digestable error message.
func (c *destroyCommand) ensureUserFriendlyErrorLog(destroyErr error, ctx *cmd.Context, api destroyControllerAPI) error {
if destroyErr == nil {
return nil
}
if params.IsCodeOperationBlocked(destroyErr) {
logger.Errorf(`there are blocks preventing controller destruction
To remove all blocks in the controller, please run:
juju controller remove-blocks
`)
if api != nil {
envs, err := api.ListBlockedEnvironments()
var bytes []byte
if err == nil {
bytes, err = formatTabularBlockedEnvironments(envs)
}
if err != nil {
logger.Errorf("Unable to list blocked environments: %s", err)
return cmd.ErrSilent
}
ctx.Infof(string(bytes))
}
return cmd.ErrSilent
}
logger.Errorf(stdFailureMsg, c.EnvName())
return destroyErr
}
开发者ID:imoapps,项目名称:juju,代码行数:31,代码来源:destroy.go
示例3: ensureUserFriendlyErrorLog
// ensureUserFriendlyErrorLog ensures that error will be logged and displayed
// in a user-friendly manner with readable and digestable error message.
func (c *destroyCommand) ensureUserFriendlyErrorLog(destroyErr error, ctx *cmd.Context, api destroyControllerAPI) error {
if destroyErr == nil {
return nil
}
if params.IsCodeOperationBlocked(destroyErr) {
logger.Errorf(destroyControllerBlockedMsg)
if api != nil {
models, err := api.ListBlockedModels()
out := &bytes.Buffer{}
if err == nil {
var info interface{}
info, err = block.FormatModelBlockInfo(models)
if err != nil {
return errors.Trace(err)
}
err = block.FormatTabularBlockedModels(out, info)
}
if err != nil {
logger.Errorf("Unable to list models: %s", err)
return cmd.ErrSilent
}
ctx.Infof(out.String())
}
return cmd.ErrSilent
}
if params.IsCodeHasHostedModels(destroyErr) {
return destroyErr
}
logger.Errorf(stdFailureMsg, c.ControllerName())
return destroyErr
}
开发者ID:bac,项目名称:juju,代码行数:33,代码来源:destroy.go
示例4: ensureUserFriendlyErrorLog
// ensureUserFriendlyErrorLog ensures that error will be logged and displayed
// in a user-friendly manner with readable and digestable error message.
func (c *destroyCommand) ensureUserFriendlyErrorLog(destroyErr error, ctx *cmd.Context, api destroyControllerAPI) error {
if destroyErr == nil {
return nil
}
if params.IsCodeOperationBlocked(destroyErr) {
logger.Errorf(destroyControllerBlockedMsg)
if api != nil {
models, err := api.ListBlockedModels()
var bytes []byte
if err == nil {
bytes, err = formatTabularBlockedModels(models)
}
if err != nil {
logger.Errorf("Unable to list blocked models: %s", err)
return cmd.ErrSilent
}
ctx.Infof(string(bytes))
}
return cmd.ErrSilent
}
if params.IsCodeHasHostedModels(destroyErr) {
return destroyErr
}
logger.Errorf(stdFailureMsg, c.ControllerName())
return destroyErr
}
开发者ID:makyo,项目名称:juju,代码行数:28,代码来源:destroy.go
示例5: AssertBlocked
func (s *clientSuite) AssertBlocked(c *gc.C, err error, msg string) {
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue, gc.Commentf("error: %#v", err))
c.Assert(errors.Cause(err), gc.DeepEquals, &rpc.RequestError{
Message: msg,
Code: "operation is blocked",
})
}
开发者ID:bac,项目名称:juju,代码行数:7,代码来源:client_test.go
示例6: assertErrorBlocked
func (s *blockCheckerSuite) assertErrorBlocked(c *gc.C, blocked bool, err error, msg string) {
if blocked {
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
c.Assert(err, gc.ErrorMatches, msg)
} else {
c.Assert(errors.Cause(err), jc.ErrorIsNil)
}
}
开发者ID:imoapps,项目名称:juju,代码行数:8,代码来源:block_test.go
示例7: processDestroyError
// processDestroyError determines how to format error message based on its code.
// Note that CodeNotImplemented errors have not be propogated in previous implementation.
// This behaviour was preserved.
func processDestroyError(err error) error {
if err == nil || params.IsCodeNotImplemented(err) {
return nil
}
if params.IsCodeOperationBlocked(err) {
return err
}
return errors.Annotate(err, "destroying environment")
}
开发者ID:snailwalker,项目名称:juju,代码行数:12,代码来源:destroyenvironment.go
示例8: handleError
func (c *destroyCommand) handleError(err error) error {
if err == nil {
return nil
}
if params.IsCodeOperationBlocked(err) {
return block.ProcessBlockedError(err, block.BlockDestroy)
}
logger.Errorf(`failed to destroy environment %q`, c.envName)
return err
}
开发者ID:imoapps,项目名称:juju,代码行数:10,代码来源:destroy.go
示例9: handleError
func (c *destroyCommand) handleError(err error, modelName string) error {
if err == nil {
return nil
}
if params.IsCodeOperationBlocked(err) {
return block.ProcessBlockedError(err, block.BlockDestroy)
}
logger.Errorf(`failed to destroy model %q`, modelName)
return err
}
开发者ID:kat-co,项目名称:juju,代码行数:10,代码来源:destroy.go
示例10: ProcessBlockedError
// ProcessBlockedError ensures that correct and user-friendly message is
// displayed to the user based on the block type.
func ProcessBlockedError(err error, block Block) error {
if err == nil {
return nil
}
if params.IsCodeOperationBlocked(err) {
logger.Errorf("\n%v%v", err, blockedMessages[block])
return cmd.ErrSilent
}
return err
}
开发者ID:imoapps,项目名称:juju,代码行数:12,代码来源:protection.go
示例11: ensureUserFriendlyErrorLog
// ensureUserFriendlyErrorLog ensures that error will be logged and displayed
// in a user-friendly manner with readable and digestable error message.
func (c *destroyEnvironmentCommand) ensureUserFriendlyErrorLog(err error) error {
if err == nil {
return nil
}
if params.IsCodeOperationBlocked(err) {
return block.ProcessBlockedError(err, block.BlockDestroy)
}
logger.Errorf(stdFailureMsg, c.EnvName())
return err
}
开发者ID:snailwalker,项目名称:juju,代码行数:12,代码来源:destroyenvironment.go
示例12: ProcessBlockedError
// ProcessBlockedError ensures that correct and user-friendly message is
// displayed to the user based on the block type.
func ProcessBlockedError(err error, block Block) error {
if err == nil {
return nil
}
if params.IsCodeOperationBlocked(err) {
msg := blockedMessages[block]
logger.Errorf("%v\n%v", err, msg)
return errors.New(msg)
}
return err
}
开发者ID:bac,项目名称:juju,代码行数:13,代码来源:protection.go
示例13: TestDestroyControllerNoHostedEnvsWithBlockFail
func (s *destroyControllerSuite) TestDestroyControllerNoHostedEnvsWithBlockFail(c *gc.C) {
err := common.DestroyModel(s.State, s.otherState.ModelTag())
c.Assert(err, jc.ErrorIsNil)
s.BlockDestroyModel(c, "TestBlockDestroyModel")
s.BlockRemoveObject(c, "TestBlockRemoveObject")
err = s.controller.DestroyController(params.DestroyControllerArgs{})
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
numBlocks, err := s.State.AllBlocksForController()
c.Assert(err, jc.ErrorIsNil)
c.Assert(len(numBlocks), gc.Equals, 2)
}
开发者ID:pmatulis,项目名称:juju,代码行数:14,代码来源:destroy_test.go
示例14: TestDestroySystemNoHostedEnvsWithBlockFail
func (s *destroySystemSuite) TestDestroySystemNoHostedEnvsWithBlockFail(c *gc.C) {
err := common.DestroyEnvironment(s.State, s.otherState.EnvironTag())
c.Assert(err, jc.ErrorIsNil)
s.BlockDestroyEnvironment(c, "TestBlockDestroyEnvironment")
s.BlockRemoveObject(c, "TestBlockRemoveObject")
err = s.systemManager.DestroySystem(params.DestroySystemArgs{})
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
numBlocks, err := s.State.AllBlocksForSystem()
c.Assert(err, jc.ErrorIsNil)
c.Assert(len(numBlocks), gc.Equals, 2)
}
开发者ID:claudiu-coblis,项目名称:juju,代码行数:14,代码来源:destroy_test.go
示例15: TestDestroySystemReturnsBlockedEnvironmentsErr
func (s *destroySystemSuite) TestDestroySystemReturnsBlockedEnvironmentsErr(c *gc.C) {
s.BlockDestroyEnvironment(c, "TestBlockDestroyEnvironment")
s.BlockRemoveObject(c, "TestBlockRemoveObject")
s.otherState.SwitchBlockOn(state.DestroyBlock, "TestBlockDestroyEnvironment")
s.otherState.SwitchBlockOn(state.ChangeBlock, "TestChangeBlock")
err := s.systemManager.DestroySystem(params.DestroySystemArgs{
DestroyEnvironments: true,
})
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
numBlocks, err := s.State.AllBlocksForSystem()
c.Assert(err, jc.ErrorIsNil)
c.Assert(len(numBlocks), gc.Equals, 4)
_, err = s.otherState.Environment()
c.Assert(err, jc.ErrorIsNil)
}
开发者ID:claudiu-coblis,项目名称:juju,代码行数:18,代码来源:destroy_test.go
示例16: TestDestroyControllerReturnsBlockedEnvironmentsErr
func (s *destroyControllerSuite) TestDestroyControllerReturnsBlockedEnvironmentsErr(c *gc.C) {
s.BlockDestroyModel(c, "TestBlockDestroyModel")
s.BlockRemoveObject(c, "TestBlockRemoveObject")
s.otherState.SwitchBlockOn(state.DestroyBlock, "TestBlockDestroyModel")
s.otherState.SwitchBlockOn(state.ChangeBlock, "TestChangeBlock")
err := s.controller.DestroyController(params.DestroyControllerArgs{
DestroyModels: true,
})
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
numBlocks, err := s.State.AllBlocksForController()
c.Assert(err, jc.ErrorIsNil)
c.Assert(len(numBlocks), gc.Equals, 4)
_, err = s.otherState.Model()
c.Assert(err, jc.ErrorIsNil)
}
开发者ID:pmatulis,项目名称:juju,代码行数:18,代码来源:destroy_test.go
示例17: Run
//.........这里部分代码省略.........
config, err := config.New(config.NoDefaults, configAttrs)
if err != nil {
return errors.Trace(err)
}
if c.Placement != nil && c.Placement.Scope == "ssh" {
logger.Infof("manual provisioning")
authKeys, err := common.ReadAuthorizedKeys(ctx, "")
if err != nil {
return errors.Annotate(err, "reading authorized-keys")
}
args := manual.ProvisionMachineArgs{
Host: c.Placement.Directive,
Client: client,
Stdin: ctx.Stdin,
Stdout: ctx.Stdout,
Stderr: ctx.Stderr,
AuthorizedKeys: authKeys,
UpdateBehavior: ¶ms.UpdateBehavior{
config.EnableOSRefreshUpdate(),
config.EnableOSUpgrade(),
},
}
machineId, err := manualProvisioner(args)
if err == nil {
ctx.Infof("created machine %v", machineId)
}
return err
}
logger.Infof("model provisioning")
if c.Placement != nil && c.Placement.Scope == "model-uuid" {
uuid, ok := client.ModelUUID()
if !ok {
return errors.New("API connection is controller-only (should never happen)")
}
c.Placement.Scope = uuid
}
if c.Placement != nil && c.Placement.Scope == instance.MachineScope {
// It does not make sense to add-machine <id>.
return errors.Errorf("machine-id cannot be specified when adding machines")
}
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits}
machineParams := params.AddMachineParams{
Placement: c.Placement,
Series: c.Series,
Constraints: c.Constraints,
Jobs: jobs,
Disks: c.Disks,
}
machines := make([]params.AddMachineParams, c.NumMachines)
for i := 0; i < c.NumMachines; i++ {
machines[i] = machineParams
}
var results []params.AddMachinesResult
// If storage is specified, we attempt to use a new API on the service facade.
if len(c.Disks) > 0 {
results, err = machineManager.AddMachines(machines)
} else {
results, err = client.AddMachines(machines)
}
if params.IsCodeOperationBlocked(err) {
return block.ProcessBlockedError(err, block.BlockChange)
}
if err != nil {
return errors.Trace(err)
}
errs := []error{}
for _, machineInfo := range results {
if machineInfo.Error != nil {
errs = append(errs, machineInfo.Error)
continue
}
machineId := machineInfo.Machine
if names.IsContainerMachine(machineId) {
ctx.Infof("created container %v", machineId)
} else {
ctx.Infof("created machine %v", machineId)
}
}
if len(errs) == 1 {
fmt.Fprint(ctx.Stderr, "failed to create 1 machine\n")
return errs[0]
}
if len(errs) > 1 {
fmt.Fprintf(ctx.Stderr, "failed to create %d machines\n", len(errs))
returnErr := []string{}
for _, e := range errs {
returnErr = append(returnErr, e.Error())
}
return errors.New(strings.Join(returnErr, ", "))
}
return nil
}
开发者ID:bac,项目名称:juju,代码行数:101,代码来源:add.go
示例18: AssertBlocked
// AssertBlocked checks if given error is
// related to switched block.
func (s BlockHelper) AssertBlocked(c *gc.C, err error, msg string) {
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue, gc.Commentf("error: %#v", err))
c.Assert(err, gc.ErrorMatches, msg)
}
开发者ID:exekias,项目名称:juju,代码行数:6,代码来源:block.go
示例19: Run
func (c *addCommand) Run(ctx *cmd.Context) error {
client, err := c.getClientAPI()
if err != nil {
return errors.Trace(err)
}
defer client.Close()
var machineManager MachineManagerAPI
if len(c.Disks) > 0 {
machineManager, err = c.getMachineManagerAPI()
if err != nil {
return errors.Trace(err)
}
defer machineManager.Close()
if machineManager.BestAPIVersion() < 1 {
return errors.New("cannot add machines with disks: not supported by the API server")
}
}
logger.Infof("load config")
configAttrs, err := client.ModelGet()
if err != nil {
return errors.Trace(err)
}
config, err := config.New(config.NoDefaults, configAttrs)
if err != nil {
return errors.Trace(err)
}
if c.Placement != nil && c.Placement.Scope == "ssh" {
logger.Infof("manual provisioning")
args := manual.ProvisionMachineArgs{
Host: c.Placement.Directive,
Client: client,
Stdin: ctx.Stdin,
Stdout: ctx.Stdout,
Stderr: ctx.Stderr,
UpdateBehavior: ¶ms.UpdateBehavior{
config.EnableOSRefreshUpdate(),
config.EnableOSUpgrade(),
},
}
machineId, err := manualProvisioner(args)
if err == nil {
ctx.Infof("created machine %v", machineId)
}
return err
}
logger.Infof("model provisioning")
if c.Placement != nil && c.Placement.Scope == "model-uuid" {
c.Placement.Scope = client.ModelUUID()
}
if c.Placement != nil && c.Placement.Scope == instance.MachineScope {
// It does not make sense to add-machine <id>.
return fmt.Errorf("machine-id cannot be specified when adding machines")
}
jobs := []multiwatcher.MachineJob{multiwatcher.JobHostUnits}
// In case of MAAS and Joyent JobManageNetworking is not added
// to ensure the non-intrusive start of a networker like above
// for the manual provisioning. See this related joyent bug
// http://pad.lv/1401423
if config.Type() != provider.MAAS && config.Type() != provider.Joyent {
jobs = append(jobs, multiwatcher.JobManageNetworking)
}
machineParams := params.AddMachineParams{
Placement: c.Placement,
Series: c.Series,
Constraints: c.Constraints,
Jobs: jobs,
Disks: c.Disks,
}
machines := make([]params.AddMachineParams, c.NumMachines)
for i := 0; i < c.NumMachines; i++ {
machines[i] = machineParams
}
var results []params.AddMachinesResult
// If storage is specified, we attempt to use a new API on the service facade.
if len(c.Disks) > 0 {
results, err = machineManager.AddMachines(machines)
} else {
results, err = client.AddMachines(machines)
}
if params.IsCodeOperationBlocked(err) {
return block.ProcessBlockedError(err, block.BlockChange)
}
if err != nil {
return errors.Trace(err)
}
errs := []error{}
for _, machineInfo := range results {
if machineInfo.Error != nil {
errs = append(errs, machineInfo.Error)
continue
//.........这里部分代码省略.........
开发者ID:AlexisBruemmer,项目名称:juju,代码行数:101,代码来源:add.go
示例20: assertBlocked
func (s *baseStorageSuite) assertBlocked(c *gc.C, err error, msg string) {
c.Assert(params.IsCodeOperationBlocked(err), jc.IsTrue)
c.Assert(err, gc.ErrorMatches, msg)
}
开发者ID:mhilton,项目名称:juju,代码行数:4,代码来源:package_test.go
注:本文中的github.com/juju/juju/apiserver/params.IsCodeOperationBlocked函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论