Refactor: clean up SecretStore to not use KeystoreItem

More moving to use API objects, except in this case we eventually want
to deprecate SecretStore entirely.
This commit is contained in:
Justin Santa Barbara 2017-11-12 16:08:24 -05:00
parent e88496a248
commit 86ca778da3
5 changed files with 28 additions and 16 deletions

View File

@ -139,7 +139,7 @@ func RunDeleteSecret(f *util.Factory, out io.Writer, options *DeleteSecretOption
switch secrets[0].Type { switch secrets[0].Type {
case kops.SecretTypeSecret: case kops.SecretTypeSecret:
err = secretStore.DeleteSecret(secrets[0]) err = secretStore.DeleteSecret(secrets[0].Name)
case SecretTypeSSHPublicKey: case SecretTypeSSHPublicKey:
sshCredential := &kops.SSHCredential{} sshCredential := &kops.SSHCredential{}
sshCredential.Name = secrets[0].Name sshCredential.Name = secrets[0].Name

View File

@ -113,14 +113,14 @@ func listSecrets(keyStore fi.CAStore, secretStore fi.SecretStore, sshCredentialS
} }
if findType == "" || findType == strings.ToLower(string(kops.SecretTypeSecret)) { if findType == "" || findType == strings.ToLower(string(kops.SecretTypeSecret)) {
l, err := secretStore.ListSecrets() names, err := secretStore.ListSecrets()
if err != nil { if err != nil {
return nil, fmt.Errorf("error listing secrets %v", err) return nil, fmt.Errorf("error listing secrets %v", err)
} }
for _, id := range l { for _, name := range names {
i := &fi.KeystoreItem{ i := &fi.KeystoreItem{
Name: id, Name: name,
Type: kops.SecretTypeSecret, Type: kops.SecretTypeSecret,
} }
if findType != "" && findType != strings.ToLower(string(i.Type)) { if findType != "" && findType != strings.ToLower(string(i.Type)) {

View File

@ -29,7 +29,7 @@ type SecretStore interface {
// Secret returns a secret. Returns an error if not found // Secret returns a secret. Returns an error if not found
Secret(id string) (*Secret, error) Secret(id string) (*Secret, error)
// DeleteSecret deletes the specified secret // DeleteSecret deletes the specified secret
DeleteSecret(item *KeystoreItem) error DeleteSecret(id string) error
// FindSecret finds a secret, if exists. Returns nil,nil if not found // FindSecret finds a secret, if exists. Returns nil,nil if not found
FindSecret(id string) (*Secret, error) FindSecret(id string) (*Secret, error)
// GetOrCreateSecret creates a secret // GetOrCreateSecret creates a secret

View File

@ -140,9 +140,27 @@ func (c *ClientsetSecretStore) Secret(name string) (*fi.Secret, error) {
} }
// DeleteSecret implements fi.SecretStore::DeleteSecret // DeleteSecret implements fi.SecretStore::DeleteSecret
func (c *ClientsetSecretStore) DeleteSecret(item *fi.KeystoreItem) error { func (c *ClientsetSecretStore) DeleteSecret(name string) error {
client := c.clientset.Keysets(c.namespace) client := c.clientset.Keysets(c.namespace)
return fi.DeleteKeysetItem(client, item.Name, kops.SecretTypeKeypair, item.Id)
keyset, err := client.Get(name, v1.GetOptions{})
if err != nil {
if errors.IsNotFound(err) {
return nil
} else {
return fmt.Errorf("error reading Keyset %q: %v", name, err)
}
}
if keyset.Spec.Type != kops.SecretTypeSecret {
return fmt.Errorf("mismatch on Keyset type on %q", name)
}
if err := client.Delete(name, &v1.DeleteOptions{}); err != nil {
return fmt.Errorf("error deleting Keyset %q: %v", name, err)
}
return nil
} }
// GetOrCreateSecret implements fi.SecretStore::GetOrCreateSecret // GetOrCreateSecret implements fi.SecretStore::GetOrCreateSecret

View File

@ -74,15 +74,9 @@ func (c *VFSSecretStore) FindSecret(id string) (*fi.Secret, error) {
} }
// DeleteSecret implements fi.SecretStore DeleteSecret // DeleteSecret implements fi.SecretStore DeleteSecret
func (c *VFSSecretStore) DeleteSecret(item *fi.KeystoreItem) error { func (c *VFSSecretStore) DeleteSecret(name string) error {
switch item.Type { p := c.buildSecretPath(name)
case kops.SecretTypeSecret: return p.Remove()
p := c.buildSecretPath(item.Name)
return p.Remove()
default:
return fmt.Errorf("deletion of secretstore items of type %v not (yet) supported", item.Type)
}
} }
func (c *VFSSecretStore) ListSecrets() ([]string, error) { func (c *VFSSecretStore) ListSecrets() ([]string, error) {