Skip to content

Commit

Permalink
Merge pull request #42 from ibuildthecloud/secrets
Browse files Browse the repository at this point in the history
Secrets
  • Loading branch information
ibuildthecloud authored Mar 1, 2017
2 parents e094fef + 04b893b commit 28c1ced
Show file tree
Hide file tree
Showing 44 changed files with 1,508 additions and 150 deletions.
2 changes: 1 addition & 1 deletion cmd/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

var (
inspectTypes = []string{"service", "container", "host", "project", "stack", "volume"}
inspectTypes = []string{"service", "container", "host", "project", "stack", "volume", "secret"}
)

func InspectCommand() cli.Command {
Expand Down
2 changes: 1 addition & 1 deletion cmd/rm.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

var (
rmTypes = []string{"service", "container", "stack", "host", "volume"}
rmTypes = []string{"service", "container", "stack", "host", "volume", "secret"}
)

func RmCommand() cli.Command {
Expand Down
130 changes: 130 additions & 0 deletions cmd/secret.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
package cmd

import (
"encoding/base64"
"fmt"
"io"
"io/ioutil"
"os"

"github.com/Sirupsen/logrus"
"github.com/rancher/go-rancher/v2"
"github.com/urfave/cli"
)

func SecretCommand() cli.Command {
secretLsFlags := []cli.Flag{
cli.BoolFlag{
Name: "quiet,q",
Usage: "Only display IDs",
},
cli.StringFlag{
Name: "format",
Usage: "'json' or Custom format: {{.Id}} {{.Name}}",
},
}

return cli.Command{
Name: "secrets",
ShortName: "secret",
Usage: "Operations on secrets",
Action: defaultAction(secretLs),
Flags: secretLsFlags,
Subcommands: []cli.Command{
cli.Command{
Name: "ls",
Usage: "List secrets",
Description: "\nLists all secrets in the current $RANCHER_ENVIRONMENT. Use `--env <envID>` or `--env <envName>` to select a different environment.\n\nExample:\n\t$ rancher secrets ls\n\t$ rancher --env 1a5 secrets ls\n",
ArgsUsage: "None",
Action: secretLs,
Flags: secretLsFlags,
},
cli.Command{
Name: "create",
Usage: "Create a secret",
Description: "\nCreate all secret in the current $RANCHER_ENVIRONMENT. Use `--env <envID>` or `--env <envName>` to select a different environment.\n\nExample:\n\t$ rancher secret create my-name file-with-secret\n",
ArgsUsage: "NAME [FILE|-]",
Action: secretCreate,
Flags: []cli.Flag{},
},
},
}
}

type SecretData struct {
ID string
Secret client.Secret
}

func secretLs(ctx *cli.Context) error {
c, err := GetClient(ctx)
if err != nil {
return err
}

collection, err := c.Secret.List(defaultListOpts(ctx))
if err != nil {
return err
}

writer := NewTableWriter([][]string{
{"ID", "ID"},
{"NAME", "Secret.Name"},
{"CREATED", "Secret.Created"},
}, ctx)

defer writer.Close()

for _, item := range collection.Data {
writer.Write(&SecretData{
ID: item.Id,
Secret: item,
})
}

return writer.Err()
}

func secretCreate(ctx *cli.Context) error {
c, err := GetClient(ctx)
if err != nil {
return err
}

w, err := NewWaiter(ctx)
if err != nil {
return err
}

if ctx.NArg() != 2 {
return fmt.Errorf("both NAME and FILE|- are required")
}

name, file := ctx.Args()[0], ctx.Args()[1]
var input io.Reader

if file == "-" {
input = os.Stdin
} else {
input, err = os.Open(file)
if os.IsNotExist(err) {
logrus.Errorf("Failed to find %s, argument must be a file or -", file)
}
}

content, err := ioutil.ReadAll(input)
if err != nil {
return err
}

secret, err := c.Secret.Create(&client.Secret{
Name: name,
Value: base64.StdEncoding.EncodeToString(content),
})
if err != nil {
return err
}

w.Add(secret.Id)
return w.Wait()
}
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ func mainErr() error {
cmd.RmCommand(),
cmd.RunCommand(),
cmd.ScaleCommand(),
cmd.SecretCommand(),
cmd.SSHCommand(),
cmd.StackCommand(),
cmd.StartCommand(),
Expand Down
2 changes: 1 addition & 1 deletion trash.conf → vendor.conf
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ github.com/mitchellh/mapstructure ca63d7c062ee3c9f34db231e352b60012b4fd0c1
github.com/opencontainers/runc cc29e3dded8e27ba8f65738f40d251c885030a28
github.com/patrickmn/go-cache 1881a9bccb818787f68c52bfba648c6cf34c34fa
github.com/pkg/errors 1d2e60385a13aaa66134984235061c2f9302520e
github.com/rancher/go-rancher f4560b58215d7eefc74f867a450ded571b731609
github.com/rancher/go-rancher 5b8f6cc26b355ba03d7611fce3844155b7baf05b
github.com/rancher/rancher-catalog-service a3a8b500adceb82b3a0387b2c7b06a60e7eeee9a
github.com/rancher/rancher-compose-executor 65ba458226af2fe23f8ebbf2f2bab50c9b3e5948
github.com/rancher/rancher-docker-api-proxy 461b5e7022698283030495cf5693680699ce9c28
Expand Down
4 changes: 3 additions & 1 deletion vendor/github.com/rancher/go-rancher/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion vendor/github.com/rancher/go-rancher/catalog/common.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 4 additions & 10 deletions vendor/github.com/rancher/go-rancher/catalog/generated_catalog.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 11 additions & 13 deletions vendor/github.com/rancher/go-rancher/catalog/generated_template.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/rancher/go-rancher/client/schemas.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions vendor/github.com/rancher/go-rancher/v2/generated_account.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 28c1ced

Please sign in to comment.