Skip to content

Commit

Permalink
Quick refactor of the controller-info command
Browse files Browse the repository at this point in the history
  • Loading branch information
ale8k committed Jul 11, 2023
1 parent 5132ed1 commit 4d27836
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 65 deletions.
14 changes: 5 additions & 9 deletions cmd/jimmctl/cmd/controllerinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,15 @@ func (c *controllerInfoCommand) Info() *cmd.Info {
// SetFlags implements Command.SetFlags.
func (c *controllerInfoCommand) SetFlags(f *gnuflag.FlagSet) {
c.CommandBase.SetFlags(f)
f.StringVar(&c.publicAddress, "public-address", "", "The preferred controller address for public access.")
}

// Init implements the cmd.Command interface.
func (c *controllerInfoCommand) Init(args []string) error {
if len(args) < 2 {
return errors.New("controller name or filename not specified")
if len(args) < 3 {
return errors.New("controller name, filename or public address not specified")
}
c.controllerName, c.file.Path = args[0], args[1]
if len(args) > 2 {
c.controllerName, c.file.Path, c.publicAddress = args[0], args[1], args[2]
if len(args) > 3 {
return errors.New("too many args")
}
return nil
Expand All @@ -96,11 +95,8 @@ func (c *controllerInfoCommand) Run(ctxt *cmd.Context) error {
}
if c.publicAddress != "" {
info.PublicAddress = c.publicAddress
} else if controller.PublicDNSName != "" {
info.PublicAddress = controller.PublicDNSName
} else {
info.PublicAddress = controller.APIEndpoints[0]
info.CACertificate = controller.CACert
return errors.New("public address must be set")
}
data, err := yaml.Marshal(info)
if err != nil {
Expand Down
58 changes: 2 additions & 56 deletions cmd/jimmctl/cmd/controllerinfo_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2021 Canonical Ltd.
// Copyright 2023 Canonical Ltd.

package cmd_test

Expand Down Expand Up @@ -61,7 +61,7 @@ func (s *controllerInfoSuite) TestControllerInfo(c *gc.C) {

fname := path.Join(dir, "test.yaml")

_, err = cmdtesting.RunCommand(c, cmd.NewControllerInfoCommandForTesting(store), "controller-1", fname)
_, err = cmdtesting.RunCommand(c, cmd.NewControllerInfoCommandForTesting(store), "controller-1", fname, "controller1.example.com")
c.Assert(err, gc.IsNil)

data, err := ioutil.ReadFile(fname)
Expand All @@ -74,57 +74,3 @@ public-address: controller1.example.com
username: test-user
`)
}

func (s *controllerInfoSuite) TestControllerInfoSpecifiedPublicAddress(c *gc.C) {
store := s.ClientStore()
store.Controllers["controller-1"] = jujuclient.ControllerDetails{
APIEndpoints: []string{"127.0.0.1:17070"},
CACert: `-----BEGIN CERTIFICATE-----
MIID/jCCAmagAwIBAgIVANxsMrzsXrdpjjUoxWQm1RCkmWcqMA0GCSqGSIb3DQEB
CwUAMCYxDTALBgNVBAoTBEp1anUxFTATBgNVBAMTDGp1anUgdGVzdGluZzAeFw0y
MDA0MDgwNTI3NTBaFw0zMDA0MDgwNTMyNTBaMCYxDTALBgNVBAoTBEp1anUxFTAT
BgNVBAMTDGp1anUgdGVzdGluZzCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
ggGBAOW4k2bmXXU3tJ8H5AsGkp8ENLJXzU4SCOCB+X0jPQRVpFtywBVD96z+l+qW
ndGLIg5zMQTtZm71CaOw+8Sl03XU0f28Xrjf+FZCAPID1c7NBttUShbu84euFoCS
C8yobj6JzLz7QswvkshYQ7JEZ88UXtVHqg6MGYFdu+cX/dE1jC7aHg9bus/P6bFH
PVFcHVVxNbLy98Id1iB7i0s97H17nu9O7ZKMrAQAX6dfAELAFQVicdN3WpfwNXEj
M2KIrqttpM8s6/57mi9UJFYGdAEDNkJr/dI506VdGLpiqTFhQK6ztfDfY08QbWk6
iJn8vzWvNW8WthmBtEDpv+DL+a5SJSLSAIZn9sbuBBpiX+csZb66fYhKFFIUrIa5
lrjw8yiHJ4kgsEZJSYaAn7guqmOv8clvy1E2JjsOfGycest6+1/mNdMRFgrMxdzD
0M2yZ96zrdfF/QXpi7Hk7jFLzimuujNUpKFv7k+XObQFxeXnoFrYVkj3YT8hhYF0
mGRkAwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH/BAUwAwEB/zAN
BgkqhkiG9w0BAQsFAAOCAYEAd7GrziPRmjoK3HDF10S+5NgoKYvkOuk2jDap2Qaq
ZFjDvrDA2tr6U0FGY+Hz+QfvtgT+YpJB5IvABvSXdq37llwKGsiSOZSrpHyTsOB0
VcZAF3GMk1nHYMr0o1xRV2gm/ax+vUEStj0k2gTs/p57uhKcCUXR0p3PWXKcRj9a
nVf5bdVkt6ghGs7/uEvj303raUFSf5dJ4C9RTgBK2E9/wlBYNyj5vcsshNpz8kt6
RuARM6Boq2EwKkpRlbvImDM8ZJJLwtpijYrx3egfOSEA7Wfwgwn+B359XcosOee5
n5BC62EjaP85cM9HCtp2DwKjNSosxja723qZPY6Z0Y7IVn3JVjgC2kWP6GViwb+v
l9uwx9ASHPz9ilh6gpjgIifOKZYCaBSS9g8VxHpO5Izxj4vi4AX5cebDg3SzDVik
hZuWHpuOT120okoutwuUSU9448cXLGZfoCZjjdMKXmOj8EEec1diDP4mhegYGezD
LQRNNlaY2ajLt0paowf/Xxb8
-----END CERTIFICATE-----`,
}
store.Accounts["controller-1"] = jujuclient.AccountDetails{
User: "test-user",
Password: "super-secret-password",
}

dir, err := ioutil.TempDir("", "controller-info-test")
c.Assert(err, gc.Equals, nil)
defer os.RemoveAll(dir)

fname := path.Join(dir, "test.yaml")

_, err = cmdtesting.RunCommand(c, cmd.NewControllerInfoCommandForTesting(store), "--public-address=controller2.example.com", "controller-1", fname)
c.Assert(err, gc.IsNil)

data, err := ioutil.ReadFile(fname)
c.Assert(err, gc.IsNil)
c.Assert(string(data), gc.Matches, `api-addresses:
- 127.0.0.1:17070
name: controller-1
password: super-secret-password
public-address: controller2.example.com
username: test-user
`)
}

0 comments on commit 4d27836

Please sign in to comment.