func (s *listSuite) TestListJSON(c *gc.C) { ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand(), "--format", "json") c.Assert(err, jc.ErrorIsNil) out := testing.Stdout(ctx) out = strings.Replace(out, "\n", "", -1) // Just check a snippet of the output to make sure it looks ok. c.Assert(out, gc.Matches, `.*{"aws":{"defined":"public","type":"ec2","auth-types":\["access-key"\].*`) }
func (s *listSuite) TestListYAML(c *gc.C) { ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand(), "--format", "yaml") c.Assert(err, jc.ErrorIsNil) out := testing.Stdout(ctx) out = strings.Replace(out, "\n", "", -1) // Just check a snippet of the output to make sure it looks ok. c.Assert(out, gc.Matches, `.*aws:[ ]*defined: public[ ]*type: ec2[ ]*auth-types: \[access-key\].*`) }
func (s *listSuite) TestListPublic(c *gc.C) { ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand()) c.Assert(err, jc.ErrorIsNil) out := testing.Stdout(ctx) out = strings.Replace(out, "\n", "", -1) // Just check couple of snippets of the output to make sure it looks ok. c.Assert(out, gc.Matches, `.*aws-china[ ]*ec2[ ]*cn-north-1.*`) // TODO(wallyworld) - uncomment when we build with go 1.3 or greater // LXD should be there too. // c.Assert(out, gc.Matches, `.*localhost[ ]*lxd[ ]*localhost.*`) }
func (s *showSuite) TestListPreservesRegionOrder(c *gc.C) { ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand(), "--format", "yaml") c.Assert(err, jc.ErrorIsNil) lines := strings.Split(testing.Stdout(ctx), "\n") withClouds := "clouds:\n " + strings.Join(lines, "\n ") parsedClouds, err := jujucloud.ParseCloudMetadata([]byte(withClouds)) c.Assert(err, jc.ErrorIsNil) parsedCloud, ok := parsedClouds["aws"] c.Assert(ok, jc.IsTrue) // aws found in output aws, err := jujucloud.CloudByName("aws") c.Assert(err, jc.ErrorIsNil) c.Assert(&parsedCloud, jc.DeepEquals, aws) }
func (s *listSuite) TestListPublicAndPersonalSameName(c *gc.C) { data := ` clouds: aws: type: ec2 auth-types: [access-key] endpoint: http://custom `[1:] err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("clouds.yaml"), []byte(data), 0600) c.Assert(err, jc.ErrorIsNil) ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand(), "--format", "yaml") c.Assert(err, jc.ErrorIsNil) out := testing.Stdout(ctx) out = strings.Replace(out, "\n", "", -1) // Just check a snippet of the output to make sure it looks ok. // local clouds are last. c.Assert(out, gc.Not(gc.Matches), `.*aws:[ ]*defined: public[ ]*type: ec2[ ]*auth-types: \[access-key\].*`) c.Assert(out, gc.Matches, `.*aws:[ ]*defined: local[ ]*type: ec2[ ]*auth-types: \[access-key\].*`) }
func (s *listSuite) TestListPublicAndPersonal(c *gc.C) { data := ` clouds: homestack: type: openstack auth-types: [userpass, access-key] endpoint: http://homestack regions: london: endpoint: http://london/1.0 `[1:] err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("clouds.yaml"), []byte(data), 0600) c.Assert(err, jc.ErrorIsNil) ctx, err := testing.RunCommand(c, cloud.NewListCloudsCommand()) c.Assert(err, jc.ErrorIsNil) out := testing.Stdout(ctx) out = strings.Replace(out, "\n", "", -1) // Just check a snippet of the output to make sure it looks ok. // local: clouds are last. c.Assert(out, gc.Matches, `.*local\:homestack[ ]*openstack[ ]*london$`) }
// registerCommands registers commands in the specified registry. func registerCommands(r commandRegistry, ctx *cmd.Context) { // Creation commands. r.Register(newBootstrapCommand()) r.Register(application.NewAddRelationCommand()) // Destruction commands. r.Register(application.NewRemoveRelationCommand()) r.Register(application.NewRemoveServiceCommand()) r.Register(application.NewRemoveUnitCommand()) // Reporting commands. r.Register(status.NewStatusCommand()) r.Register(newSwitchCommand()) 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(model.NewModelGetConstraintsCommand()) r.Register(model.NewModelSetConstraintsCommand()) r.Register(newSyncToolsCommand()) r.Register(newUpgradeJujuCommand(nil)) r.Register(application.NewUpgradeCharmCommand()) // Charm tool commands. r.Register(newHelpToolCommand()) r.Register(charmcmd.NewSuperCommand()) // Manage backups. r.Register(backups.NewCreateCommand()) r.Register(backups.NewDownloadCommand()) r.Register(backups.NewShowCommand()) r.Register(backups.NewListCommand()) r.Register(backups.NewRemoveCommand()) r.Register(backups.NewRestoreCommand()) r.Register(backups.NewUploadCommand()) // Manage authorized ssh keys. r.Register(NewAddKeysCommand()) r.Register(NewRemoveKeysCommand()) r.Register(NewImportKeysCommand()) r.Register(NewListKeysCommand()) // Manage users and access r.Register(user.NewAddCommand()) r.Register(user.NewChangePasswordCommand()) r.Register(user.NewShowUserCommand()) r.Register(user.NewListCommand()) r.Register(user.NewEnableCommand()) r.Register(user.NewDisableCommand()) r.Register(user.NewLoginCommand()) r.Register(user.NewLogoutCommand()) r.Register(user.NewRemoveCommand()) r.Register(user.NewWhoAmICommand()) // Manage cached images r.Register(cachedimages.NewRemoveCommand()) r.Register(cachedimages.NewListCommand()) // Manage machines r.Register(machine.NewAddCommand()) r.Register(machine.NewRemoveCommand()) r.Register(machine.NewListMachinesCommand()) r.Register(machine.NewShowMachineCommand()) // Manage model r.Register(model.NewConfigCommand()) r.Register(model.NewDefaultsCommand()) r.Register(model.NewRetryProvisioningCommand()) r.Register(model.NewDestroyCommand()) r.Register(model.NewGrantCommand()) r.Register(model.NewRevokeCommand()) r.Register(model.NewShowCommand()) if featureflag.Enabled(feature.Migration) { r.Register(newMigrateCommand()) } if featureflag.Enabled(feature.DeveloperMode) { r.Register(model.NewDumpCommand()) r.Register(model.NewDumpDBCommand()) } // Manage and control actions r.Register(action.NewStatusCommand()) r.Register(action.NewRunCommand()) r.Register(action.NewShowOutputCommand()) r.Register(action.NewListCommand()) // Manage controller availability r.Register(newEnableHACommand()) // Manage and control services r.Register(application.NewAddUnitCommand()) r.Register(application.NewConfigCommand()) r.Register(application.NewDefaultDeployCommand()) r.Register(application.NewExposeCommand()) r.Register(application.NewUnexposeCommand()) r.Register(application.NewServiceGetConstraintsCommand()) r.Register(application.NewServiceSetConstraintsCommand()) // Operation protection commands r.Register(block.NewDisableCommand()) r.Register(block.NewListCommand()) r.Register(block.NewEnableCommand()) // Manage storage r.Register(storage.NewAddCommand()) r.Register(storage.NewListCommand()) r.Register(storage.NewPoolCreateCommand()) r.Register(storage.NewPoolListCommand()) r.Register(storage.NewShowCommand()) // Manage spaces r.Register(space.NewAddCommand()) r.Register(space.NewListCommand()) if featureflag.Enabled(feature.PostNetCLIMVP) { r.Register(space.NewRemoveCommand()) r.Register(space.NewUpdateCommand()) r.Register(space.NewRenameCommand()) } // Manage subnets r.Register(subnet.NewAddCommand()) r.Register(subnet.NewListCommand()) if featureflag.Enabled(feature.PostNetCLIMVP) { r.Register(subnet.NewCreateCommand()) r.Register(subnet.NewRemoveCommand()) } // Manage controllers r.Register(controller.NewAddModelCommand()) r.Register(controller.NewDestroyCommand()) r.Register(controller.NewListModelsCommand()) r.Register(controller.NewKillCommand()) r.Register(controller.NewListControllersCommand()) r.Register(controller.NewRegisterCommand()) r.Register(controller.NewUnregisterCommand(jujuclient.NewFileClientStore())) r.Register(controller.NewEnableDestroyControllerCommand()) r.Register(controller.NewShowControllerCommand()) r.Register(controller.NewGetConfigCommand()) // Debug Metrics r.Register(metricsdebug.New()) r.Register(metricsdebug.NewCollectMetricsCommand()) r.Register(setmeterstatus.New()) // Manage clouds and credentials r.Register(cloud.NewUpdateCloudsCommand()) r.Register(cloud.NewListCloudsCommand()) r.Register(cloud.NewListRegionsCommand()) r.Register(cloud.NewShowCloudCommand()) r.Register(cloud.NewAddCloudCommand()) r.Register(cloud.NewRemoveCloudCommand()) r.Register(cloud.NewListCredentialsCommand()) r.Register(cloud.NewDetectCredentialsCommand()) r.Register(cloud.NewSetDefaultRegionCommand()) r.Register(cloud.NewSetDefaultCredentialCommand()) r.Register(cloud.NewAddCredentialCommand()) r.Register(cloud.NewRemoveCredentialCommand()) r.Register(cloud.NewUpdateCredentialCommand()) // Juju GUI commands. r.Register(gui.NewGUICommand()) r.Register(gui.NewUpgradeGUICommand()) // Commands registered elsewhere. for _, newCommand := range registeredCommands { command := newCommand() r.Register(command) } for _, newCommand := range registeredEnvCommands { command := newCommand() r.Register(modelcmd.Wrap(command)) } rcmd.RegisterAll(r) }