2016-05-13 06:51:39 +03:00
// Copyright 2015 The etcd Authors
2015-08-08 15:58:58 +03:00
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
2016-03-28 20:49:03 +03:00
// Package ctlv3 contains the main entry point for the etcdctl for v3 API.
package ctlv3
2015-08-08 15:58:58 +03:00
import (
2016-03-22 21:00:54 +03:00
"time"
2015-08-08 15:58:58 +03:00
2016-03-28 20:49:03 +03:00
"github.com/coreos/etcd/etcdctl/ctlv3/command"
2018-03-21 01:08:36 +03:00
2016-03-23 03:10:28 +03:00
"github.com/spf13/cobra"
2015-08-08 15:58:58 +03:00
)
2015-11-26 01:06:52 +03:00
const (
2016-03-28 20:49:03 +03:00
cliName = "etcdctl"
2015-11-26 01:06:52 +03:00
cliDescription = "A simple command line client for etcd3."
2016-03-22 21:00:54 +03:00
2017-10-08 12:38:38 +03:00
defaultDialTimeout = 2 * time . Second
defaultCommandTimeOut = 5 * time . Second
defaultKeepAliveTime = 2 * time . Second
defaultKeepAliveTimeOut = 6 * time . Second
2015-11-26 01:06:52 +03:00
)
var (
globalFlags = command . GlobalFlags { }
)
var (
rootCmd = & cobra . Command {
Use : cliName ,
Short : cliDescription ,
2016-03-28 20:49:03 +03:00
SuggestFor : [ ] string { "etcdctl" } ,
2015-09-13 08:46:43 +03:00
}
2015-11-26 01:06:52 +03:00
)
func init ( ) {
2016-07-11 23:28:02 +03:00
rootCmd . PersistentFlags ( ) . StringSliceVar ( & globalFlags . Endpoints , "endpoints" , [ ] string { "127.0.0.1:2379" } , "gRPC endpoints" )
2017-04-05 20:45:52 +03:00
rootCmd . PersistentFlags ( ) . BoolVar ( & globalFlags . Debug , "debug" , false , "enable client-side debug logging" )
2015-11-26 01:06:52 +03:00
2017-03-20 19:40:21 +03:00
rootCmd . PersistentFlags ( ) . StringVarP ( & globalFlags . OutputFormat , "write-out" , "w" , "simple" , "set the output format (fields, json, protobuf, simple, table)" )
2016-02-23 11:56:47 +03:00
rootCmd . PersistentFlags ( ) . BoolVar ( & globalFlags . IsHex , "hex" , false , "print byte strings as hex encoded strings" )
2016-03-22 21:00:54 +03:00
rootCmd . PersistentFlags ( ) . DurationVar ( & globalFlags . DialTimeout , "dial-timeout" , defaultDialTimeout , "dial timeout for client connections" )
2016-03-24 12:00:26 +03:00
rootCmd . PersistentFlags ( ) . DurationVar ( & globalFlags . CommandTimeOut , "command-timeout" , defaultCommandTimeOut , "timeout for short running command (excluding dial timeout)" )
2017-10-08 12:38:38 +03:00
rootCmd . PersistentFlags ( ) . DurationVar ( & globalFlags . KeepAliveTime , "keepalive-time" , defaultKeepAliveTime , "keepalive time for client connections" )
rootCmd . PersistentFlags ( ) . DurationVar ( & globalFlags . KeepAliveTimeout , "keepalive-timeout" , defaultKeepAliveTimeOut , "keepalive timeout for client connections" )
2016-03-22 21:00:54 +03:00
2016-03-25 02:29:33 +03:00
// TODO: secure by default when etcd enables secure gRPC by default.
rootCmd . PersistentFlags ( ) . BoolVar ( & globalFlags . Insecure , "insecure-transport" , true , "disable transport security for client connections" )
2017-08-29 18:35:34 +03:00
rootCmd . PersistentFlags ( ) . BoolVar ( & globalFlags . InsecureDiscovery , "insecure-discovery" , true , "accept insecure SRV records describing cluster endpoints" )
2016-03-26 05:02:07 +03:00
rootCmd . PersistentFlags ( ) . BoolVar ( & globalFlags . InsecureSkipVerify , "insecure-skip-tls-verify" , false , "skip server certificate verification" )
2016-02-15 21:30:22 +03:00
rootCmd . PersistentFlags ( ) . StringVar ( & globalFlags . TLS . CertFile , "cert" , "" , "identify secure client using this TLS certificate file" )
rootCmd . PersistentFlags ( ) . StringVar ( & globalFlags . TLS . KeyFile , "key" , "" , "identify secure client using this TLS key file" )
2018-03-21 01:08:36 +03:00
rootCmd . PersistentFlags ( ) . StringVar ( & globalFlags . TLS . TrustedCAFile , "cacert" , "" , "verify certificates of TLS-enabled secure servers using this CA bundle" )
2016-05-13 10:43:42 +03:00
rootCmd . PersistentFlags ( ) . StringVar ( & globalFlags . User , "user" , "" , "username[:password] for authentication (prompt if password is not supplied)" )
2018-05-17 07:21:27 +03:00
rootCmd . PersistentFlags ( ) . StringVar ( & globalFlags . Password , "password" , "" , "password for authentication (if this option is used, --user option shouldn't include password)" )
2017-08-29 18:35:34 +03:00
rootCmd . PersistentFlags ( ) . StringVarP ( & globalFlags . TLS . ServerName , "discovery-srv" , "d" , "" , "domain name to query for SRV records describing cluster endpoints" )
2016-01-29 03:11:51 +03:00
2015-11-26 01:06:52 +03:00
rootCmd . AddCommand (
2016-02-19 00:18:49 +03:00
command . NewGetCommand ( ) ,
2015-08-08 15:58:58 +03:00
command . NewPutCommand ( ) ,
2016-02-18 19:46:24 +03:00
command . NewDelCommand ( ) ,
2015-08-14 21:45:44 +03:00
command . NewTxnCommand ( ) ,
2015-09-06 02:08:58 +03:00
command . NewCompactionCommand ( ) ,
2016-03-30 05:41:16 +03:00
command . NewAlarmCommand ( ) ,
2016-03-10 20:29:30 +03:00
command . NewDefragCommand ( ) ,
2016-04-13 01:57:24 +03:00
command . NewEndpointCommand ( ) ,
2017-06-23 23:05:12 +03:00
command . NewMoveLeaderCommand ( ) ,
2015-11-04 06:26:40 +03:00
command . NewWatchCommand ( ) ,
2015-11-26 01:06:52 +03:00
command . NewVersionCommand ( ) ,
2016-01-06 00:49:25 +03:00
command . NewLeaseCommand ( ) ,
2016-01-27 03:49:11 +03:00
command . NewMemberCommand ( ) ,
2016-02-11 04:03:46 +03:00
command . NewSnapshotCommand ( ) ,
2016-02-14 20:29:20 +03:00
command . NewMakeMirrorCommand ( ) ,
2016-05-17 00:40:52 +03:00
command . NewMigrateCommand ( ) ,
2016-02-24 09:50:26 +03:00
command . NewLockCommand ( ) ,
2016-03-02 00:36:48 +03:00
command . NewElectCommand ( ) ,
2016-06-21 23:12:01 +03:00
command . NewAuthCommand ( ) ,
2016-03-23 07:25:48 +03:00
command . NewUserCommand ( ) ,
2016-04-01 05:07:43 +03:00
command . NewRoleCommand ( ) ,
2017-03-24 03:26:05 +03:00
command . NewCheckCommand ( ) ,
2015-11-26 01:06:52 +03:00
)
}
func init ( ) {
cobra . EnablePrefixMatching = true
}