Merge pull request #6724 from johnbazan/ctlv3_add_user_with_password_inline

etcdctl: allow to add a user within one command line
This commit is contained in:
Gyu-Ho Lee 2016-10-31 14:31:09 -07:00 committed by GitHub
commit b64de4707d
2 changed files with 28 additions and 5 deletions

View File

@ -39,6 +39,18 @@ func userAddTest(cx ctlCtx) {
expectedStr: "User username created",
stdIn: []string{"password"},
},
// Adds a user name using the usertest:password syntax.
{
args: []string{"add", "usertest:password"},
expectedStr: "User usertest created",
stdIn: []string{},
},
// Tries to add a user with empty username.
{
args: []string{"add", ":password"},
expectedStr: "empty user name is not allowed.",
stdIn: []string{},
},
// Tries to add a user name that already exists.
{
args: []string{"add", "username", "--interactive=false"},

View File

@ -124,19 +124,30 @@ func userAddCommandFunc(cmd *cobra.Command, args []string) {
}
var password string
var user string
if !passwordInteractive {
fmt.Scanf("%s", &password)
splitted := strings.SplitN(args[0], ":", 2)
if len(splitted) < 2 {
user = args[0]
if !passwordInteractive {
fmt.Scanf("%s", &password)
} else {
password = readPasswordInteractive(args[0])
}
} else {
password = readPasswordInteractive(args[0])
user = splitted[0]
password = splitted[1]
if len(user) == 0 {
ExitWithError(ExitBadArgs, fmt.Errorf("empty user name is not allowed."))
}
}
_, err := mustClientFromCmd(cmd).Auth.UserAdd(context.TODO(), args[0], password)
_, err := mustClientFromCmd(cmd).Auth.UserAdd(context.TODO(), user, password)
if err != nil {
ExitWithError(ExitError, err)
}
fmt.Printf("User %s created\n", args[0])
fmt.Printf("User %s created\n", user)
}
// userDeleteCommandFunc executes the "user delete" command.