Skip to content

Commit 9c2cad7

Browse files
committed
update secret cmd to externals
1 parent 9619a08 commit 9c2cad7

8 files changed

+253
-235
lines changed

pkg/oc/cli/secrets/basicauth.go

Lines changed: 45 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@ package secrets
33
import (
44
"errors"
55
"fmt"
6-
"io"
76
"io/ioutil"
87

98
"github.com/spf13/cobra"
109

11-
api "k8s.io/kubernetes/pkg/apis/core"
12-
kcoreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
10+
coreapiv1 "k8s.io/api/core/v1"
11+
coreclientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
1312
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
1413
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
1514
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
15+
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
1616
kterm "k8s.io/kubernetes/pkg/kubectl/util/term"
1717

1818
"github.com/openshift/origin/pkg/cmd/util/term"
19+
"github.com/openshift/origin/pkg/oc/util/ocscheme"
1920
)
2021

2122
// CreateBasicAuthSecretRecommendedCommandName represents name of subcommand for `oc secrets` command
@@ -44,6 +45,10 @@ var (
4445

4546
// CreateBasicAuthSecretOptions holds the credential needed to authenticate against SCM servers.
4647
type CreateBasicAuthSecretOptions struct {
48+
PrintFlags *genericclioptions.PrintFlags
49+
50+
Printer printers.ResourcePrinter
51+
4752
SecretName string
4853
Username string
4954
Password string
@@ -52,18 +57,21 @@ type CreateBasicAuthSecretOptions struct {
5257

5358
PromptForPassword bool
5459

55-
Reader io.Reader
56-
Out io.Writer
60+
SecretsInterface coreclientv1.SecretInterface
5761

58-
SecretsInterface kcoreclient.SecretInterface
62+
genericclioptions.IOStreams
63+
}
64+
65+
func NewCreateBasicAuthSecretOptions(streams genericclioptions.IOStreams) *CreateBasicAuthSecretOptions {
66+
return &CreateBasicAuthSecretOptions{
67+
PrintFlags: genericclioptions.NewPrintFlags("created").WithTypeSetter(ocscheme.PrintingInternalScheme),
68+
IOStreams: streams,
69+
}
5970
}
6071

6172
// NewCmdCreateBasicAuthSecret implements the OpenShift cli secrets new-basicauth subcommand
6273
func NewCmdCreateBasicAuthSecret(name, fullName string, f kcmdutil.Factory, streams genericclioptions.IOStreams, newSecretFullName, ocEditFullName string) *cobra.Command {
63-
o := &CreateBasicAuthSecretOptions{
64-
Out: streams.Out,
65-
Reader: streams.In,
66-
}
74+
o := NewCreateBasicAuthSecretOptions(streams)
6775

6876
cmd := &cobra.Command{
6977
Use: fmt.Sprintf("%s SECRET --username=USERNAME --password=PASSWORD [--ca-cert=FILENAME] [--gitconfig=FILENAME]", name),
@@ -81,15 +89,7 @@ func NewCmdCreateBasicAuthSecret(name, fullName string, f kcmdutil.Factory, stre
8189
kcmdutil.CheckErr(kcmdutil.UsageErrorf(c, err.Error()))
8290
}
8391

84-
if len(kcmdutil.GetFlagString(c, "output")) != 0 {
85-
secret, err := o.NewBasicAuthSecret()
86-
kcmdutil.CheckErr(err)
87-
88-
kcmdutil.CheckErr(kcmdutil.PrintObject(c, secret, streams.Out))
89-
return
90-
}
91-
92-
if err := o.CreateBasicAuthSecret(); err != nil {
92+
if err := o.Run(); err != nil {
9393
kcmdutil.CheckErr(err)
9494
}
9595
},
@@ -103,13 +103,12 @@ func NewCmdCreateBasicAuthSecret(name, fullName string, f kcmdutil.Factory, stre
103103
cmd.MarkFlagFilename("gitconfig")
104104
cmd.Flags().BoolVarP(&o.PromptForPassword, "prompt", "", false, "If true, prompt for password or token")
105105

106-
kcmdutil.AddPrinterFlags(cmd)
107-
106+
o.PrintFlags.AddFlags(cmd)
108107
return cmd
109108
}
110109

111110
// CreateBasicAuthSecret saves created Secret structure and prints the secret name to the output on success.
112-
func (o *CreateBasicAuthSecretOptions) CreateBasicAuthSecret() error {
111+
func (o *CreateBasicAuthSecretOptions) Run() error {
113112
secret, err := o.NewBasicAuthSecret()
114113
if err != nil {
115114
return err
@@ -119,16 +118,15 @@ func (o *CreateBasicAuthSecretOptions) CreateBasicAuthSecret() error {
119118
return err
120119
}
121120

122-
fmt.Fprintf(o.GetOut(), "secret/%s\n", secret.Name)
123-
return nil
121+
return o.Printer.PrintObj(secret, o.Out)
124122
}
125123

126124
// NewBasicAuthSecret builds up the Secret structure containing secret name, type and data structure
127125
// containing desired credentials.
128-
func (o *CreateBasicAuthSecretOptions) NewBasicAuthSecret() (*api.Secret, error) {
129-
secret := &api.Secret{}
126+
func (o *CreateBasicAuthSecretOptions) NewBasicAuthSecret() (*coreapiv1.Secret, error) {
127+
secret := &coreapiv1.Secret{}
130128
secret.Name = o.SecretName
131-
secret.Type = api.SecretTypeBasicAuth
129+
secret.Type = coreapiv1.SecretTypeBasicAuth
132130
secret.Data = map[string][]byte{}
133131

134132
if len(o.Username) != 0 {
@@ -170,26 +168,34 @@ func (o *CreateBasicAuthSecretOptions) Complete(f kcmdutil.Factory, args []strin
170168
if len(o.Password) != 0 {
171169
return errors.New("must provide either --prompt or --password flag")
172170
}
173-
if !kterm.IsTerminal(o.Reader) {
171+
if !kterm.IsTerminal(o.In) {
174172
return errors.New("provided reader is not a terminal")
175173
}
176174

177-
o.Password = term.PromptForPasswordString(o.Reader, o.Out, "Password: ")
175+
o.Password = term.PromptForPasswordString(o.In, o.Out, "Password: ")
178176
if len(o.Password) == 0 {
179177
return errors.New("password must be provided")
180178
}
181179
}
182180

183-
if f != nil {
184-
client, err := f.ClientSet()
185-
if err != nil {
186-
return err
187-
}
188-
namespace, _, err := f.ToRawKubeConfigLoader().Namespace()
189-
if err != nil {
190-
return err
191-
}
192-
o.SecretsInterface = client.Core().Secrets(namespace)
181+
config, err := f.ToRESTConfig()
182+
if err != nil {
183+
return err
184+
}
185+
186+
clientset, err := coreclientv1.NewForConfig(config)
187+
if err != nil {
188+
return err
189+
}
190+
namespace, _, err := f.ToRawKubeConfigLoader().Namespace()
191+
if err != nil {
192+
return err
193+
}
194+
o.SecretsInterface = clientset.Secrets(namespace)
195+
196+
o.Printer, err = o.PrintFlags.ToPrinter()
197+
if err != nil {
198+
return err
193199
}
194200

195201
return nil
@@ -207,13 +213,3 @@ func (o CreateBasicAuthSecretOptions) Validate() error {
207213

208214
return nil
209215
}
210-
211-
// GetOut check if the CreateBasicAuthSecretOptions Out Writer is set. Returns it if the Writer
212-
// is present, if not returns Writer on which all Write calls succeed without doing anything.
213-
func (o CreateBasicAuthSecretOptions) GetOut() io.Writer {
214-
if o.Out == nil {
215-
return ioutil.Discard
216-
}
217-
218-
return o.Out
219-
}

pkg/oc/cli/secrets/dockercfg.go

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"io"
8-
"io/ioutil"
97
"strings"
108

11-
api "k8s.io/kubernetes/pkg/apis/core"
12-
kcoreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
9+
"github.com/spf13/cobra"
10+
11+
"github.com/openshift/origin/pkg/oc/util/ocscheme"
12+
coreapiv1 "k8s.io/api/core/v1"
13+
coreclientv1 "k8s.io/client-go/kubernetes/typed/core/v1"
1314
"k8s.io/kubernetes/pkg/credentialprovider"
1415
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
1516
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
1617
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
17-
18-
"github.com/spf13/cobra"
18+
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
1919
)
2020

2121
const CreateDockerConfigSecretRecommendedName = "new-dockercfg"
@@ -50,20 +50,31 @@ var (
5050
)
5151

5252
type CreateDockerConfigOptions struct {
53+
PrintFlags *genericclioptions.PrintFlags
54+
55+
Printer printers.ResourcePrinter
56+
5357
SecretName string
5458
RegistryLocation string
5559
Username string
5660
Password string
5761
EmailAddress string
5862

59-
SecretsInterface kcoreclient.SecretInterface
63+
SecretsInterface coreclientv1.SecretInterface
64+
65+
genericclioptions.IOStreams
66+
}
6067

61-
Out io.Writer
68+
func NewCreateDockerConfigOptions(streams genericclioptions.IOStreams) *CreateDockerConfigOptions {
69+
return &CreateDockerConfigOptions{
70+
PrintFlags: genericclioptions.NewPrintFlags("created").WithTypeSetter(ocscheme.PrintingInternalScheme),
71+
IOStreams: streams,
72+
}
6273
}
6374

6475
// NewCmdCreateDockerConfigSecret creates a command object for making a dockercfg secret
6576
func NewCmdCreateDockerConfigSecret(name, fullName string, f kcmdutil.Factory, streams genericclioptions.IOStreams, newSecretFullName, ocEditFullName string) *cobra.Command {
66-
o := &CreateDockerConfigOptions{Out: streams.Out}
77+
o := NewCreateDockerConfigOptions(streams)
6778

6879
cmd := &cobra.Command{
6980
Use: fmt.Sprintf("%s SECRET --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL", name),
@@ -81,15 +92,7 @@ func NewCmdCreateDockerConfigSecret(name, fullName string, f kcmdutil.Factory, s
8192
kcmdutil.CheckErr(kcmdutil.UsageErrorf(c, err.Error()))
8293
}
8394

84-
if len(kcmdutil.GetFlagString(c, "output")) != 0 {
85-
secret, err := o.NewDockerSecret()
86-
kcmdutil.CheckErr(err)
87-
88-
kcmdutil.CheckErr(kcmdutil.PrintObject(c, secret, streams.Out))
89-
return
90-
}
91-
92-
if err := o.CreateDockerSecret(); err != nil {
95+
if err := o.Run(); err != nil {
9396
kcmdutil.CheckErr(err)
9497
}
9598

@@ -100,12 +103,12 @@ func NewCmdCreateDockerConfigSecret(name, fullName string, f kcmdutil.Factory, s
100103
cmd.Flags().StringVar(&o.Password, "docker-password", "", "Password for Docker registry authentication")
101104
cmd.Flags().StringVar(&o.EmailAddress, "docker-email", "", "Email for Docker registry")
102105
cmd.Flags().StringVar(&o.RegistryLocation, "docker-server", "https://index.docker.io/v1/", "Server location for Docker registry")
103-
kcmdutil.AddPrinterFlags(cmd)
104106

107+
o.PrintFlags.AddFlags(cmd)
105108
return cmd
106109
}
107110

108-
func (o CreateDockerConfigOptions) CreateDockerSecret() error {
111+
func (o CreateDockerConfigOptions) Run() error {
109112
secret, err := o.NewDockerSecret()
110113
if err != nil {
111114
return err
@@ -115,12 +118,10 @@ func (o CreateDockerConfigOptions) CreateDockerSecret() error {
115118
return err
116119
}
117120

118-
fmt.Fprintf(o.GetOut(), "secret/%s\n", secret.Name)
119-
120-
return nil
121+
return o.Printer.PrintObj(secret, o.Out)
121122
}
122123

123-
func (o CreateDockerConfigOptions) NewDockerSecret() (*api.Secret, error) {
124+
func (o CreateDockerConfigOptions) NewDockerSecret() (*coreapiv1.Secret, error) {
124125
dockercfgAuth := credentialprovider.DockerConfigEntry{
125126
Username: o.Username,
126127
Password: o.Password,
@@ -136,11 +137,11 @@ func (o CreateDockerConfigOptions) NewDockerSecret() (*api.Secret, error) {
136137
return nil, err
137138
}
138139

139-
secret := &api.Secret{}
140+
secret := &coreapiv1.Secret{}
140141
secret.Name = o.SecretName
141-
secret.Type = api.SecretTypeDockerConfigJson
142+
secret.Type = coreapiv1.SecretTypeDockerConfigJson
142143
secret.Data = map[string][]byte{}
143-
secret.Data[api.DockerConfigJsonKey] = dockercfgContent
144+
secret.Data[coreapiv1.DockerConfigJsonKey] = dockercfgContent
144145

145146
return secret, nil
146147
}
@@ -151,7 +152,12 @@ func (o *CreateDockerConfigOptions) Complete(f kcmdutil.Factory, args []string)
151152
}
152153
o.SecretName = args[0]
153154

154-
client, err := f.ClientSet()
155+
config, err := f.ToRESTConfig()
156+
if err != nil {
157+
return err
158+
}
159+
160+
client, err := coreclientv1.NewForConfig(config)
155161
if err != nil {
156162
return err
157163
}
@@ -160,7 +166,12 @@ func (o *CreateDockerConfigOptions) Complete(f kcmdutil.Factory, args []string)
160166
return err
161167
}
162168

163-
o.SecretsInterface = client.Core().Secrets(namespace)
169+
o.SecretsInterface = client.Secrets(namespace)
170+
171+
o.Printer, err = o.PrintFlags.ToPrinter()
172+
if err != nil {
173+
return err
174+
}
164175

165176
return nil
166177
}
@@ -191,11 +202,3 @@ func (o CreateDockerConfigOptions) Validate() error {
191202

192203
return nil
193204
}
194-
195-
func (o CreateDockerConfigOptions) GetOut() io.Writer {
196-
if o.Out == nil {
197-
return ioutil.Discard
198-
}
199-
200-
return o.Out
201-
}

pkg/oc/cli/secrets/known_secret_types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ package secrets
33
import (
44
"reflect"
55

6+
coreapiv1 "k8s.io/api/core/v1"
67
"k8s.io/apimachinery/pkg/util/sets"
7-
kapi "k8s.io/kubernetes/pkg/apis/core"
88
)
99

1010
type KnownSecretType struct {
11-
Type kapi.SecretType
11+
Type coreapiv1.SecretType
1212
RequiredContents sets.String
1313
}
1414

@@ -22,7 +22,7 @@ func (ks KnownSecretType) Matches(secretContent map[string][]byte) bool {
2222

2323
var (
2424
KnownSecretTypes = []KnownSecretType{
25-
{kapi.SecretTypeDockercfg, sets.NewString(kapi.DockerConfigKey)},
26-
{kapi.SecretTypeDockerConfigJson, sets.NewString(kapi.DockerConfigJsonKey)},
25+
{coreapiv1.SecretTypeDockercfg, sets.NewString(coreapiv1.DockerConfigKey)},
26+
{coreapiv1.SecretTypeDockerConfigJson, sets.NewString(coreapiv1.DockerConfigJsonKey)},
2727
}
2828
)

0 commit comments

Comments
 (0)