Skip to content
This repository has been archived by the owner on Sep 2, 2022. It is now read-only.

Commit

Permalink
Make Secret to rely on k8s corev1.Secret (#384)
Browse files Browse the repository at this point in the history
* Make Secret to rely on k8s corev1.Secret

* Cleansing a bit
  • Loading branch information
gildub committed Sep 5, 2019
1 parent 9248f73 commit ef9d17c
Show file tree
Hide file tree
Showing 27 changed files with 145 additions and 123 deletions.
4 changes: 3 additions & 1 deletion pkg/transform/oauth/basicauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
"github.com/fusor/cpma/pkg/transform/secrets"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

Expand All @@ -17,7 +19,7 @@ func buildBasicAuthIP(serializer *json.Serializer, p IdentityProvider) (*Provide
err error
idP = &configv1.IdentityProvider{}
basicAuth legacyconfigv1.BasicAuthPasswordIdentityProvider
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
providerConfigMaps []*configmaps.ConfigMap
)

Expand Down
7 changes: 4 additions & 3 deletions pkg/transform/oauth/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@ package oauth
import (
"encoding/base64"

"github.com/pkg/errors"

"github.com/fusor/cpma/pkg/io"
"github.com/fusor/cpma/pkg/transform/configmaps"
"github.com/fusor/cpma/pkg/transform/secrets"
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildGitHubIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
err error
idP = &configv1.IdentityProvider{}
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
providerConfigMaps []*configmaps.ConfigMap
github legacyconfigv1.GitHubIdentityProvider
)
Expand Down
4 changes: 3 additions & 1 deletion pkg/transform/oauth/gitlab.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ import (
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildGitLabIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
err error
idP = &configv1.IdentityProvider{}
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
providerConfigMaps []*configmaps.ConfigMap
gitlab legacyconfigv1.GitLabIdentityProvider
)
Expand Down
4 changes: 3 additions & 1 deletion pkg/transform/oauth/google.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@ import (
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildGoogleIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
err error
idP = &configv1.IdentityProvider{}
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
google legacyconfigv1.GoogleIdentityProvider
)

Expand Down
4 changes: 3 additions & 1 deletion pkg/transform/oauth/htpasswd.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ import (
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildHTPasswdIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
err error
idP = &configv1.IdentityProvider{}
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
htpasswd legacyconfigv1.HTPasswdPasswordIdentityProvider
)

Expand Down
4 changes: 3 additions & 1 deletion pkg/transform/oauth/keystone.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ import (
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildKeystoneIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
idP = &configv1.IdentityProvider{}
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
providerConfigMaps []*configmaps.ConfigMap
err error
keystone legacyconfigv1.KeystonePasswordIdentityProvider
Expand Down
9 changes: 5 additions & 4 deletions pkg/transform/oauth/oauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import (
"errors"

"github.com/fusor/cpma/pkg/transform/configmaps"
"github.com/fusor/cpma/pkg/transform/secrets"
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
oauthv1 "github.com/openshift/api/oauth/v1"
"github.com/sirupsen/logrus"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/client-go/kubernetes/scheme"
Expand Down Expand Up @@ -53,14 +54,14 @@ type IdentityProvider struct {
// ResultResources stores all oAuth config parts
type ResultResources struct {
OAuthCRD *configv1.OAuth
Secrets []*secrets.Secret
Secrets []*corev1.Secret
ConfigMaps []*configmaps.ConfigMap
}

// ProviderResources stores all resources related to one provider
type ProviderResources struct {
IDP *configv1.IdentityProvider
Secrets []*secrets.Secret
Secrets []*corev1.Secret
ConfigMaps []*configmaps.ConfigMap
}

Expand All @@ -80,7 +81,7 @@ const (
// Translate converts OCPv3 OAuth to OCPv4 OAuth Custom Resources
func Translate(identityProviders []IdentityProvider, tokenConfig TokenConfig, templates legacyconfigv1.OAuthTemplates) (*ResultResources, error) {
var err error
var secretsSlice []*secrets.Secret
var secretsSlice []*corev1.Secret
var сonfigMapSlice []*configmaps.ConfigMap
var providerResources *ProviderResources

Expand Down
4 changes: 3 additions & 1 deletion pkg/transform/oauth/openid.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ import (
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"
"github.com/pkg/errors"

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
)

func buildOpenIDIP(serializer *json.Serializer, p IdentityProvider) (*ProviderResources, error) {
var (
err error
providerSecrets []*secrets.Secret
providerSecrets []*corev1.Secret
idP = &configv1.IdentityProvider{}
openID legacyconfigv1.OpenIDIdentityProvider
)
Expand Down
6 changes: 4 additions & 2 deletions pkg/transform/oauth/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"github.com/fusor/cpma/pkg/transform/secrets"
configv1 "github.com/openshift/api/config/v1"
legacyconfigv1 "github.com/openshift/api/legacyconfig/v1"

corev1 "k8s.io/api/core/v1"
)

const (
Expand All @@ -14,8 +16,8 @@ const (
providerSelectionSecret = "templates-providerselect-secret"
)

func translateTemplates(templates legacyconfigv1.OAuthTemplates) (*configv1.OAuthTemplates, []*secrets.Secret, error) {
var templateSecrets []*secrets.Secret
func translateTemplates(templates legacyconfigv1.OAuthTemplates) (*configv1.OAuthTemplates, []*corev1.Secret, error) {
var templateSecrets []*corev1.Secret

translatedTemplates := &configv1.OAuthTemplates{}

Expand Down
2 changes: 1 addition & 1 deletion pkg/transform/oauth_transform.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func (e OAuthExtraction) buildManifestOutput() (Output, error) {
return nil, err
}

filename := "100_CPMA-cluster-config-secret-" + secret.Metadata.Name + ".yaml"
filename := "100_CPMA-cluster-config-secret-" + secret.Name + ".yaml"
m := Manifest{Name: filename, CRD: secretCR}
manifests = append(manifests, m)
}
Expand Down
97 changes: 32 additions & 65 deletions pkg/transform/secrets/secrets.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,6 @@ import (
"k8s.io/apimachinery/pkg/util/validation"
)

// HTPasswdFileSecret is an htpasswd secret
type HTPasswdFileSecret struct {
HTPasswd string `json:"htpasswd"`
}

// KeystoneFileSecret is a keystone secret
type KeystoneFileSecret struct {
Keystone string `json:"keystone"`
}

// LiteralSecret is a literal secret
type LiteralSecret struct {
ClientSecret string `json:"clientSecret"`
}

// BasicAuthFileSecret is a basic auth secret
type BasicAuthFileSecret struct {
BasicAuth string `json:"basicAuth"`
}

// Secret contains a secret
type Secret struct {
APIVersion string `json:"apiVersion"`
Kind string `json:"kind"`
Type string `json:"type"`
Metadata MetaData `json:"metadata"`
Data interface{} `json:"data"`
}

// MetaData is the Metadata for a secret
type MetaData struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
}

// SecretType is an enumerator for secret types
type SecretType int

Expand All @@ -64,11 +29,11 @@ var typeArray = []string{
"BasicAuthSecretType",
}

// APIVersion is the apiVersion string
var APIVersion = "v1"

const secretNameError = `Secret name is no valid, make sure it consists of lower case alphanumeric characters, ‘-’ or ‘.’,` +
`and must start and end with an alphanumeric character (e.g. ‘example.com’, regex used for validation is ‘[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*’)`
const (
apiVersion = "v1"
secretNameError = `Secret name is no valid, make sure it consists of lower case alphanumeric characters, ‘-’ or ‘.’,` +
`and must start and end with an alphanumeric character (e.g. ‘example.com’, regex used for validation is ‘[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*’)`
)

// GenTLSSecret generates a TLS secret
func GenTLSSecret(name string, namespace string, cert []byte, key []byte) (*corev1.Secret, error) {
Expand All @@ -79,7 +44,7 @@ func GenTLSSecret(name string, namespace string, cert []byte, key []byte) (*core

secret := &corev1.Secret{
TypeMeta: metav1.TypeMeta{
APIVersion: "v1",
APIVersion: apiVersion,
Kind: "Secret",
},
ObjectMeta: metav1.ObjectMeta{
Expand All @@ -97,9 +62,8 @@ func GenTLSSecret(name string, namespace string, cert []byte, key []byte) (*core
}

// GenSecret generates a secret
func GenSecret(name string, secretContent string, namespace string, secretType SecretType) (*Secret, error) {
func GenSecret(name string, secretContent string, namespace string, secretType SecretType) (*corev1.Secret, error) {
nameErrors := validation.IsDNS1123Label(name)

if nameErrors != nil {
return nil, errors.New(secretNameError)
}
Expand All @@ -109,42 +73,45 @@ func GenSecret(name string, secretContent string, namespace string, secretType S
return nil, err
}

var secret = Secret{
APIVersion: APIVersion,
Data: data,
Kind: "Secret",
Type: "Opaque",
Metadata: MetaData{
secret := &corev1.Secret{
TypeMeta: metav1.TypeMeta{
APIVersion: apiVersion,
Kind: "Secret",
},
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
},
Type: "Opaque",
Data: data,
}
return &secret, nil

return secret, nil
}

func buildData(secretType SecretType, secretContent string) (interface{}, error) {
var data interface{}
func buildData(secretType SecretType, secretContent string) (map[string][]byte, error) {
var data map[string][]byte

switch secretType {
case KeystoneSecretType:
data = KeystoneFileSecret{Keystone: secretContent}
data = map[string][]byte{
"keystone": []byte(secretContent),
}
case HtpasswdSecretType:
data = HTPasswdFileSecret{HTPasswd: secretContent}
data = map[string][]byte{
"htpasswd": []byte(secretContent),
}
case LiteralSecretType:
data = LiteralSecret{ClientSecret: secretContent}
data = map[string][]byte{
"clientSecret": []byte(secretContent),
}
case BasicAuthSecretType:
data = BasicAuthFileSecret{BasicAuth: secretContent}
data = map[string][]byte{
"basicAuth": []byte(secretContent),
}
default:
return nil, errors.New("Not a valid secret type " + secretType.String())
return nil, errors.New("Unknown secret type")
}

return data, nil
}

// SecretType.String returns a string representation for SecretType enum
func (secType SecretType) String() string {
if secType >= KeystoneSecretType && int(secType) < len(typeArray) {
return typeArray[secType]
}
return "unknown"
}

0 comments on commit ef9d17c

Please sign in to comment.