func (s *cmdJujuSuite) TestServiceGet(c *gc.C) { expected := `charm: dummy service: dummy-service settings: outlook: default: true description: No default outlook. type: string skill-level: default: true description: A number indicating skill. type: int title: default: true description: A descriptive title used for the service. type: string value: My Title username: default: true description: The name of the initial account (given admin permissions). type: string value: admin001 ` ch := s.AddTestingCharm(c, "dummy") s.AddTestingService(c, "dummy-service", ch) context, err := testing.RunCommand(c, service.NewSuperCommand(), "get", "dummy-service") c.Assert(err, jc.ErrorIsNil) c.Assert(testing.Stdout(context), gc.Equals, expected) }
func (s *ServiceCommandSuite) TestHelp(c *gc.C) { // Check the help output ctx, err := testing.RunCommand(c, service.NewSuperCommand(), "--help") c.Assert(err, jc.ErrorIsNil) namesFound := testing.ExtractCommandsFromHelpOutput(ctx) c.Assert(namesFound, gc.DeepEquals, expectedCommmandNames) }
func (s *cmdJujuSuite) TestServiceSet(c *gc.C) { ch := s.AddTestingCharm(c, "dummy") svc := s.AddTestingService(c, "dummy-service", ch) _, err := testing.RunCommand(c, service.NewSuperCommand(), "set", "dummy-service", "username=hello", "[email protected]") c.Assert(err, jc.ErrorIsNil) expect := charm.Settings{ "username": "******", "outlook": "*****@*****.**", } settings, err := svc.ConfigSettings() c.Assert(err, jc.ErrorIsNil) c.Assert(settings, gc.DeepEquals, expect) }
func (s *cmdJujuSuite) TestServiceAddUnitExistingContainer(c *gc.C) { ch := s.AddTestingCharm(c, "dummy") svc := s.AddTestingService(c, "some-service-name", ch) machine, err := s.State.AddMachine("quantal", state.JobHostUnits) c.Assert(err, jc.ErrorIsNil) template := state.MachineTemplate{ Series: "quantal", Jobs: []state.MachineJob{state.JobHostUnits}, } container, err := s.State.AddMachineInsideMachine(template, machine.Id(), instance.LXC) c.Assert(err, jc.ErrorIsNil) _, err = testing.RunCommand(c, service.NewSuperCommand(), "add-unit", "some-service-name", "--to", container.Id()) c.Assert(err, jc.ErrorIsNil) units, err := svc.AllUnits() c.Assert(err, jc.ErrorIsNil) mid, err := units[0].AssignedMachineId() c.Assert(err, jc.ErrorIsNil) c.Assert(mid, gc.Equals, container.Id()) }
// registerCommands registers commands in the specified registry. // EnvironCommands must be wrapped with an envCmdWrapper. func registerCommands(r commandRegistry, ctx *cmd.Context) { wrapEnvCommand := func(c envcmd.EnvironCommand) cmd.Command { return envCmdWrapper{envcmd.Wrap(c), ctx} } // Creation commands. r.Register(wrapEnvCommand(&BootstrapCommand{})) r.Register(wrapEnvCommand(&DeployCommand{})) r.Register(wrapEnvCommand(&AddRelationCommand{})) // Destruction commands. r.Register(wrapEnvCommand(&RemoveRelationCommand{})) r.Register(wrapEnvCommand(&RemoveServiceCommand{})) r.Register(wrapEnvCommand(&RemoveUnitCommand{})) r.Register(&DestroyEnvironmentCommand{}) // Reporting commands. r.Register(wrapEnvCommand(&StatusCommand{})) r.Register(&SwitchCommand{}) r.Register(wrapEnvCommand(&EndpointCommand{})) r.Register(wrapEnvCommand(&APIInfoCommand{})) r.Register(wrapEnvCommand(&StatusHistoryCommand{})) // Error resolution and debugging commands. r.Register(wrapEnvCommand(&RunCommand{})) r.Register(wrapEnvCommand(&SCPCommand{})) r.Register(wrapEnvCommand(&SSHCommand{})) r.Register(wrapEnvCommand(&ResolvedCommand{})) r.Register(wrapEnvCommand(&DebugLogCommand{})) r.Register(wrapEnvCommand(&DebugHooksCommand{})) // Configuration commands. r.Register(&InitCommand{}) r.RegisterDeprecated(wrapEnvCommand(&common.GetConstraintsCommand{}), twoDotOhDeprecation("environment get-constraints or service get-constraints")) r.RegisterDeprecated(wrapEnvCommand(&common.SetConstraintsCommand{}), twoDotOhDeprecation("environment set-constraints or service set-constraints")) r.Register(wrapEnvCommand(&ExposeCommand{})) r.Register(wrapEnvCommand(&SyncToolsCommand{})) r.Register(wrapEnvCommand(&UnexposeCommand{})) r.Register(wrapEnvCommand(&UpgradeJujuCommand{})) r.Register(wrapEnvCommand(&UpgradeCharmCommand{})) // Charm publishing commands. r.Register(wrapEnvCommand(&PublishCommand{})) // Charm tool commands. r.Register(&HelpToolCommand{}) // Manage backups. r.Register(backups.NewCommand()) // Manage authorized ssh keys. r.Register(NewAuthorizedKeysCommand()) // Manage users and access r.Register(user.NewSuperCommand()) // Manage cached images r.Register(cachedimages.NewSuperCommand()) // Manage machines r.Register(machine.NewSuperCommand()) r.RegisterSuperAlias("add-machine", "machine", "add", twoDotOhDeprecation("machine add")) r.RegisterSuperAlias("remove-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) r.RegisterSuperAlias("destroy-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) r.RegisterSuperAlias("terminate-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) // Mangage environment r.Register(environment.NewSuperCommand()) r.RegisterSuperAlias("get-environment", "environment", "get", twoDotOhDeprecation("environment get")) r.RegisterSuperAlias("get-env", "environment", "get", twoDotOhDeprecation("environment get")) r.RegisterSuperAlias("set-environment", "environment", "set", twoDotOhDeprecation("environment set")) r.RegisterSuperAlias("set-env", "environment", "set", twoDotOhDeprecation("environment set")) r.RegisterSuperAlias("unset-environment", "environment", "unset", twoDotOhDeprecation("environment unset")) r.RegisterSuperAlias("unset-env", "environment", "unset", twoDotOhDeprecation("environment unset")) r.RegisterSuperAlias("retry-provisioning", "environment", "retry-provisioning", twoDotOhDeprecation("environment retry-provisioning")) // Manage and control actions r.Register(action.NewSuperCommand()) // Manage state server availability r.Register(wrapEnvCommand(&EnsureAvailabilityCommand{})) // Manage and control services r.Register(service.NewSuperCommand()) r.RegisterSuperAlias("add-unit", "service", "add-unit", twoDotOhDeprecation("service add-unit")) r.RegisterSuperAlias("get", "service", "get", twoDotOhDeprecation("service get")) r.RegisterSuperAlias("set", "service", "set", twoDotOhDeprecation("service set")) r.RegisterSuperAlias("unset", "service", "unset", twoDotOhDeprecation("service unset")) // Operation protection commands r.Register(block.NewSuperBlockCommand()) r.Register(wrapEnvCommand(&block.UnblockCommand{})) // Manage storage r.Register(storage.NewSuperCommand()) // Manage systems if featureflag.Enabled(feature.JES) { r.Register(system.NewSuperCommand()) r.RegisterSuperAlias("systems", "system", "list", nil) r.RegisterSuperAlias("environments", "system", "environments", nil) } }
// registerCommands registers commands in the specified registry. func registerCommands(r commandRegistry, ctx *cmd.Context) { // Creation commands. r.Register(newBootstrapCommand()) r.Register(service.NewAddRelationCommand()) // Destruction commands. r.Register(service.NewRemoveRelationCommand()) r.Register(service.NewRemoveServiceCommand()) r.Register(service.NewRemoveUnitCommand()) // Reporting commands. r.Register(status.NewStatusCommand()) r.Register(newSwitchCommand()) r.Register(newEndpointCommand()) r.Register(newAPIInfoCommand()) r.Register(status.NewStatusHistoryCommand()) // Error resolution and debugging commands. r.Register(newRunCommand()) r.Register(newSCPCommand()) r.Register(newSSHCommand()) r.Register(newResolvedCommand()) r.Register(newDebugLogCommand()) r.Register(newDebugHooksCommand()) // Configuration commands. r.Register(newInitCommand()) r.Register(model.NewModelGetConstraintsCommand()) r.Register(model.NewModelSetConstraintsCommand()) r.Register(newSyncToolsCommand()) r.Register(newUpgradeJujuCommand(nil)) r.Register(service.NewUpgradeCharmCommand()) // Charm publishing commands. r.Register(newPublishCommand()) // Charm tool commands. r.Register(newHelpToolCommand()) // Manage backups. r.Register(backups.NewSuperCommand()) r.RegisterSuperAlias("create-backup", "backups", "create", nil) r.RegisterSuperAlias("restore-backup", "backups", "restore", nil) // Manage authorized ssh keys. r.Register(newAuthorizedKeysCommand()) // Manage users and access r.Register(user.NewAddCommand()) r.Register(user.NewChangePasswordCommand()) r.Register(user.NewCredentialsCommand()) r.Register(user.NewShowUserCommand()) r.Register(user.NewListCommand()) r.Register(user.NewEnableCommand()) r.Register(user.NewDisableCommand()) // Manage cached images r.Register(cachedimages.NewSuperCommand()) // Manage machines r.Register(machine.NewSuperCommand()) r.RegisterSuperAlias("add-machine", "machine", "add", nil) r.RegisterSuperAlias("remove-machine", "machine", "remove", nil) r.RegisterSuperAlias("destroy-machine", "machine", "remove", nil) r.RegisterSuperAlias("terminate-machine", "machine", "remove", nil) // Manage model r.Register(model.NewGetCommand()) r.Register(model.NewSetCommand()) r.Register(model.NewUnsetCommand()) r.Register(model.NewRetryProvisioningCommand()) r.Register(model.NewDestroyCommand()) r.Register(model.NewShareCommand()) r.Register(model.NewUnshareCommand()) r.Register(model.NewUsersCommand()) // Manage and control actions r.Register(action.NewSuperCommand()) r.RegisterSuperAlias("run-action", "action", "do", nil) r.RegisterSuperAlias("list-actions", "action", "defined", nil) r.RegisterSuperAlias("show-action-output", "action", "fetch", nil) r.RegisterSuperAlias("show-action-status", "action", "status", nil) // Manage state server availability r.Register(newEnableHACommand()) // Manage and control services r.Register(service.NewSuperCommand()) r.Register(service.NewDeployCommand()) r.Register(service.NewExposeCommand()) r.Register(service.NewUnexposeCommand()) r.RegisterSuperAlias("add-unit", "service", "add-unit", nil) r.RegisterSuperAlias("get-config", "service", "get", nil) r.RegisterSuperAlias("set-config", "service", "set", nil) r.RegisterSuperAlias("get-constraints", "service", "get-constraints", nil) r.RegisterSuperAlias("set-constraints", "service", "set-constraints", nil) r.RegisterSuperAlias("unset", "service", "unset", nil) // Operation protection commands r.Register(block.NewSuperBlockCommand()) r.Register(block.NewUnblockCommand()) // Manage storage r.Register(storage.NewSuperCommand()) r.RegisterSuperAlias("list-storage", "storage", "list", nil) r.RegisterSuperAlias("show-storage", "storage", "show", nil) r.RegisterSuperAlias("add-storage", "storage", "add", nil) // Manage spaces r.Register(space.NewSuperCommand()) r.RegisterSuperAlias("add-space", "space", "create", nil) r.RegisterSuperAlias("list-spaces", "space", "list", nil) // Manage subnets r.Register(subnet.NewSuperCommand()) r.RegisterSuperAlias("add-subnet", "subnet", "add", nil) // Manage controllers r.Register(controller.NewCreateModelCommand()) r.Register(controller.NewDestroyCommand()) r.Register(controller.NewModelsCommand()) r.Register(controller.NewKillCommand()) r.Register(controller.NewListCommand()) r.Register(controller.NewListBlocksCommand()) r.Register(controller.NewLoginCommand()) r.Register(controller.NewRemoveBlocksCommand()) r.Register(controller.NewUseModelCommand()) // Commands registered elsewhere. for _, newCommand := range registeredCommands { command := newCommand() r.Register(command) } for _, newCommand := range registeredEnvCommands { command := newCommand() r.Register(modelcmd.Wrap(command)) } }
// registerCommands registers commands in the specified registry. func registerCommands(r commandRegistry, ctx *cmd.Context) { // Creation commands. r.Register(newBootstrapCommand()) r.Register(newDeployCommand()) r.Register(newAddRelationCommand()) // Destruction commands. r.Register(newRemoveRelationCommand()) r.Register(newRemoveServiceCommand()) r.Register(newRemoveUnitCommand()) r.Register(newDestroyEnvironmentCommand()) // Reporting commands. r.Register(status.NewStatusCommand()) r.Register(newSwitchCommand()) r.Register(newEndpointCommand()) r.Register(newAPIInfoCommand()) r.Register(status.NewStatusHistoryCommand()) // Error resolution and debugging commands. r.Register(newRunCommand()) r.Register(newSCPCommand()) r.Register(newSSHCommand()) r.Register(newResolvedCommand()) r.Register(newDebugLogCommand()) r.Register(newDebugHooksCommand()) // Configuration commands. r.Register(newInitCommand()) r.RegisterDeprecated(common.NewGetConstraintsCommand(), twoDotOhDeprecation("environment get-constraints or service get-constraints")) r.RegisterDeprecated(common.NewSetConstraintsCommand(), twoDotOhDeprecation("environment set-constraints or service set-constraints")) r.Register(newExposeCommand()) r.Register(newSyncToolsCommand()) r.Register(newUnexposeCommand()) r.Register(newUpgradeJujuCommand()) r.Register(newUpgradeCharmCommand()) // Charm publishing commands. r.Register(newPublishCommand()) // Charm tool commands. r.Register(newHelpToolCommand()) // Manage backups. r.Register(backups.NewSuperCommand()) // Manage authorized ssh keys. r.Register(newAuthorizedKeysCommand()) // Manage users and access r.Register(user.NewSuperCommand()) // Manage cached images r.Register(cachedimages.NewSuperCommand()) // Manage machines r.Register(machine.NewSuperCommand()) r.RegisterSuperAlias("add-machine", "machine", "add", twoDotOhDeprecation("machine add")) r.RegisterSuperAlias("remove-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) r.RegisterSuperAlias("destroy-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) r.RegisterSuperAlias("terminate-machine", "machine", "remove", twoDotOhDeprecation("machine remove")) // Mangage environment r.Register(environment.NewSuperCommand()) r.RegisterSuperAlias("get-environment", "environment", "get", twoDotOhDeprecation("environment get")) r.RegisterSuperAlias("get-env", "environment", "get", twoDotOhDeprecation("environment get")) r.RegisterSuperAlias("set-environment", "environment", "set", twoDotOhDeprecation("environment set")) r.RegisterSuperAlias("set-env", "environment", "set", twoDotOhDeprecation("environment set")) r.RegisterSuperAlias("unset-environment", "environment", "unset", twoDotOhDeprecation("environment unset")) r.RegisterSuperAlias("unset-env", "environment", "unset", twoDotOhDeprecation("environment unset")) r.RegisterSuperAlias("retry-provisioning", "environment", "retry-provisioning", twoDotOhDeprecation("environment retry-provisioning")) // Manage and control actions r.Register(action.NewSuperCommand()) // Manage state server availability r.Register(newEnsureAvailabilityCommand()) // Manage and control services r.Register(service.NewSuperCommand()) r.RegisterSuperAlias("add-unit", "service", "add-unit", twoDotOhDeprecation("service add-unit")) r.RegisterSuperAlias("get", "service", "get", twoDotOhDeprecation("service get")) r.RegisterSuperAlias("set", "service", "set", twoDotOhDeprecation("service set")) r.RegisterSuperAlias("unset", "service", "unset", twoDotOhDeprecation("service unset")) // Operation protection commands r.Register(block.NewSuperBlockCommand()) r.Register(block.NewUnblockCommand()) // Manage storage r.Register(storage.NewSuperCommand()) // Manage spaces r.Register(space.NewSuperCommand()) // Manage subnets r.Register(subnet.NewSuperCommand()) // Manage systems if featureflag.Enabled(feature.JES) { r.Register(system.NewSuperCommand()) r.RegisterSuperAlias("systems", "system", "list", nil) // Add top level aliases of the same name as the subcommands. r.RegisterSuperAlias("environments", "system", "environments", nil) r.RegisterSuperAlias("login", "system", "login", nil) r.RegisterSuperAlias("create-environment", "system", "create-environment", nil) r.RegisterSuperAlias("create-env", "system", "create-env", nil) } }