Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
e6d27423
Unverified
Commit
e6d27423
authored
Mar 29, 2019
by
Kubernetes Prow Robot
Committed by
GitHub
Mar 29, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #75646 from bart0sh/PR0066-kubeadm-token-delete-multiple
kubeadm: implement deletion of multiple tokens
parents
f8cd676f
405a9715
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
24 deletions
+26
-24
token.go
cmd/kubeadm/app/cmd/token.go
+23
-21
token_test.go
cmd/kubeadm/app/cmd/token_test.go
+3
-3
No files found.
cmd/kubeadm/app/cmd/token.go
View file @
e6d27423
...
...
@@ -158,11 +158,11 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
tokenCmd
.
AddCommand
(
listCmd
)
deleteCmd
:=
&
cobra
.
Command
{
Use
:
"delete [token-value]"
,
Use
:
"delete [token-value]
...
"
,
DisableFlagsInUseLine
:
true
,
Short
:
"Delete bootstrap tokens on the server."
,
Long
:
dedent
.
Dedent
(
`
This command will delete a
given bootstrap token
for you.
This command will delete a
list of bootstrap tokens
for you.
The [token-value] is the full Token of the form "[a-z0-9]{6}.[a-z0-9]{16}" or the
Token ID of the form "[a-z0-9]{6}" to delete.
...
...
@@ -175,7 +175,7 @@ func NewCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
client
,
err
:=
getClientset
(
kubeConfigFile
,
dryRun
)
kubeadmutil
.
CheckErr
(
err
)
err
=
RunDeleteToken
(
out
,
client
,
args
[
0
]
)
err
=
RunDeleteToken
s
(
out
,
client
,
args
)
kubeadmutil
.
CheckErr
(
err
)
},
}
...
...
@@ -296,27 +296,29 @@ func RunListTokens(out io.Writer, errW io.Writer, client clientset.Interface) er
return
nil
}
// RunDeleteToken removes a bootstrap token from the server.
func
RunDeleteToken
(
out
io
.
Writer
,
client
clientset
.
Interface
,
tokenIDOrToken
string
)
error
{
// Assume the given first argument is a token id and try to parse it
tokenID
:=
tokenIDOrToken
klog
.
V
(
1
)
.
Infoln
(
"[token] parsing token ID"
)
if
!
bootstraputil
.
IsValidBootstrapTokenID
(
tokenIDOrToken
)
{
// Okay, the full token with both id and secret was probably passed. Parse it and extract the ID only
bts
,
err
:=
kubeadmapiv1beta1
.
NewBootstrapTokenString
(
tokenIDOrToken
)
if
err
!=
nil
{
return
errors
.
Errorf
(
"given token or token id %q didn't match pattern %q or %q"
,
tokenIDOrToken
,
bootstrapapi
.
BootstrapTokenIDPattern
,
bootstrapapi
.
BootstrapTokenIDPattern
)
// RunDeleteTokens removes a bootstrap tokens from the server.
func
RunDeleteTokens
(
out
io
.
Writer
,
client
clientset
.
Interface
,
tokenIDsOrTokens
[]
string
)
error
{
for
_
,
tokenIDOrToken
:=
range
tokenIDsOrTokens
{
// Assume this is a token id and try to parse it
tokenID
:=
tokenIDOrToken
klog
.
V
(
1
)
.
Infof
(
"[token] parsing token %q"
,
tokenIDOrToken
)
if
!
bootstraputil
.
IsValidBootstrapTokenID
(
tokenIDOrToken
)
{
// Okay, the full token with both id and secret was probably passed. Parse it and extract the ID only
bts
,
err
:=
kubeadmapiv1beta1
.
NewBootstrapTokenString
(
tokenIDOrToken
)
if
err
!=
nil
{
return
errors
.
Errorf
(
"given token %q didn't match pattern %q or %q"
,
tokenIDOrToken
,
bootstrapapi
.
BootstrapTokenIDPattern
,
bootstrapapi
.
BootstrapTokenIDPattern
)
}
tokenID
=
bts
.
ID
}
tokenID
=
bts
.
ID
}
tokenSecretName
:=
bootstraputil
.
BootstrapTokenSecretName
(
tokenID
)
klog
.
V
(
1
)
.
Infoln
(
"[token] deleting token"
)
if
err
:=
client
.
CoreV1
()
.
Secrets
(
metav1
.
NamespaceSystem
)
.
Delete
(
tokenSecretName
,
nil
);
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"failed to delete bootstrap token"
)
tokenSecretName
:=
bootstraputil
.
BootstrapTokenSecretName
(
tokenID
)
klog
.
V
(
1
)
.
Infof
(
"[token] deleting token %q"
,
tokenID
)
if
err
:=
client
.
CoreV1
()
.
Secrets
(
metav1
.
NamespaceSystem
)
.
Delete
(
tokenSecretName
,
nil
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"failed to delete bootstrap token %q"
,
tokenID
)
}
fmt
.
Fprintf
(
out
,
"bootstrap token %q deleted
\n
"
,
tokenID
)
}
fmt
.
Fprintf
(
out
,
"bootstrap token with id %q deleted
\n
"
,
tokenID
)
return
nil
}
...
...
cmd/kubeadm/app/cmd/token_test.go
View file @
e6d27423
...
...
@@ -300,7 +300,7 @@ func TestGetClientset(t *testing.T) {
}
}
func
TestRunDeleteToken
(
t
*
testing
.
T
)
{
func
TestRunDeleteToken
s
(
t
*
testing
.
T
)
{
var
buf
bytes
.
Buffer
tmpDir
,
err
:=
ioutil
.
TempDir
(
""
,
"kubeadm-token-test"
)
...
...
@@ -327,12 +327,12 @@ func TestRunDeleteToken(t *testing.T) {
// test valid; should not fail
// for some reason Secrets().Delete() does not fail even for this dummy config
if
err
=
RunDeleteToken
(
&
buf
,
client
,
"abcdef.1234567890123456"
);
err
!=
nil
{
if
err
=
RunDeleteToken
s
(
&
buf
,
client
,
[]
string
{
"abcdef.1234567890123456"
,
"abcdef.2345678901234567"
}
);
err
!=
nil
{
t
.
Errorf
(
"RunDeleteToken() failed for a valid token: %v"
,
err
)
}
// test invalid token; should fail
if
err
=
RunDeleteToken
(
&
buf
,
client
,
"invalid-token"
);
err
==
nil
{
if
err
=
RunDeleteToken
s
(
&
buf
,
client
,
[]
string
{
"invalid-token"
}
);
err
==
nil
{
t
.
Errorf
(
"RunDeleteToken() succeeded for an invalid token: %v"
,
err
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment