|
5 | 5 | "fmt"
|
6 | 6 | "io"
|
7 | 7 |
|
| 8 | + "github.com/golang/glog" |
8 | 9 | "github.com/spf13/cobra"
|
9 | 10 |
|
10 | 11 | "k8s.io/kubernetes/pkg/client/restclient"
|
@@ -124,24 +125,29 @@ func (o LogoutOptions) RunLogout() error {
|
124 | 125 | }
|
125 | 126 |
|
126 | 127 | if err := client.OAuthAccessTokens().Delete(token); err != nil {
|
127 |
| - return err |
| 128 | + glog.V(1).Infof("%v\n", err) |
128 | 129 | }
|
129 | 130 |
|
130 |
| - newConfig := *o.StartingKubeConfig |
| 131 | + configErr := deleteTokenFromConfig(*o.StartingKubeConfig, o.PathOptions, token) |
| 132 | + if configErr == nil { |
| 133 | + glog.V(1).Infof("Removed token from your local configuration.\n\n") |
| 134 | + |
| 135 | + // only return error instead of successful message if removing token from client |
| 136 | + // config fails. Any error that occurs deleting token using api is logged above. |
| 137 | + fmt.Fprintf(o.Out, "Logged %q out on %q\n", userInfo.Name, o.Config.Host) |
| 138 | + } |
| 139 | + |
| 140 | + return configErr |
| 141 | +} |
131 | 142 |
|
132 |
| - for key, value := range newConfig.AuthInfos { |
133 |
| - if value.Token == token { |
| 143 | +func deleteTokenFromConfig(config kclientcmdapi.Config, pathOptions *kclientcmd.PathOptions, bearerToken string) error { |
| 144 | + for key, value := range config.AuthInfos { |
| 145 | + if value.Token == bearerToken { |
134 | 146 | value.Token = ""
|
135 |
| - newConfig.AuthInfos[key] = value |
| 147 | + config.AuthInfos[key] = value |
136 | 148 | // don't break, its possible that more than one user stanza has the same token.
|
137 | 149 | }
|
138 | 150 | }
|
139 | 151 |
|
140 |
| - if err := kclientcmd.ModifyConfig(o.PathOptions, newConfig, true); err != nil { |
141 |
| - return err |
142 |
| - } |
143 |
| - |
144 |
| - fmt.Fprintf(o.Out, "Logged %q out on %q\n", userInfo.Name, o.Config.Host) |
145 |
| - |
146 |
| - return nil |
| 152 | + return kclientcmd.ModifyConfig(pathOptions, config, true) |
147 | 153 | }
|
0 commit comments