Skip to content

Commit

Permalink
Merge pull request #47 from integr8ly/openshift-basic-providers
Browse files Browse the repository at this point in the history
Openshift Basic Providers
  • Loading branch information
openshift-merge-robot authored Nov 12, 2019
2 parents ce82a9c + d58d9e6 commit 001f6be
Show file tree
Hide file tree
Showing 17 changed files with 1,065 additions and 30 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ test/e2e/image:
.PHONY: test/unit
test/unit:
@echo Running tests:
go get -u github.com/rakyll/gotest
gotest -v -covermode=count -coverprofile=coverage.out ./pkg/controller/... ./pkg/providers/... ./pkg/resources/... ./pkg/apis/integreatly/v1alpha1/types/...

.PHONY: test/unit/coverage
Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ require (
github.com/prometheus/client_golang v1.1.0 // indirect
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 // indirect
github.com/prometheus/procfs v0.0.4 // indirect
github.com/rakyll/gotest v0.0.0-20180125184505-86f0749cd8cc
github.com/rakyll/gotest v0.0.0-20191108192113-45d501058f2a
github.com/sirupsen/logrus v1.4.2
github.com/spf13/pflag v1.0.3
github.com/stretchr/testify v1.4.0 // indirect
Expand All @@ -31,6 +31,7 @@ require (
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392 // indirect
golang.org/x/net v0.0.0-20191003171128-d98b1b443823 // indirect
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 // indirect
golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 // indirect
golang.org/x/tools v0.0.0-20190924052046-3ac2a5bbd98a // indirect
google.golang.org/appengine v1.6.2 // indirect
google.golang.org/grpc v1.22.0 // indirect
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,8 @@ github.com/prometheus/procfs v0.0.4 h1:w8DjqFMJDjuVwdZBQoOozr4MVWOnwF7RcL/7uxBjY
github.com/prometheus/procfs v0.0.4/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
github.com/rakyll/gotest v0.0.0-20180125184505-86f0749cd8cc h1:hrzpgS8mnUi65ieVrD3TKJMxHP84bzmybMTQIdK/XhM=
github.com/rakyll/gotest v0.0.0-20180125184505-86f0749cd8cc/go.mod h1:iln+RRtJaJ52lKwqrSmNgQYw32Fk16CgChX85eFqBgI=
github.com/rakyll/gotest v0.0.0-20191108192113-45d501058f2a h1:/kX+lZpr87Pb0yJKyxW40ZZO6jl52jFMmoQ0YhfwGLM=
github.com/rakyll/gotest v0.0.0-20191108192113-45d501058f2a/go.mod h1:jpFrc1UTqK0FtfF3doi3pEUBgWHYELkOPPECUlDsM2Q=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/robfig/cron v0.0.0-20170526150127-736158dc09e1/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
Expand Down Expand Up @@ -538,6 +540,8 @@ golang.org/x/sys v0.0.0-20190922100055-0a153f010e69 h1:rOhMmluY6kLMhdnrivzec6lLg
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be h1:QAcqgptGM8IQBC9K/RC4o+O9YmqEm0diQn9QmZw/0mU=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4 h1:Hynbrlo6LbYI3H1IqXpkVDOcX/3HiPdhVEuyj5a59RM=
golang.org/x/sys v0.0.0-20191110163157-d32e6e3b99c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
4 changes: 3 additions & 1 deletion pkg/controller/blobstorage/blobstorage_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package blobstorage
import (
"context"
"fmt"

"github.com/integr8ly/cloud-resource-operator/pkg/apis/integreatly/v1alpha1/types"
"github.com/integr8ly/cloud-resource-operator/pkg/providers/openshift"
"github.com/integr8ly/cloud-resource-operator/pkg/resources"

"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -37,7 +39,7 @@ func Add(mgr manager.Manager) error {
func newReconciler(mgr manager.Manager) reconcile.Reconciler {
client := mgr.GetClient()
logger := logrus.WithFields(logrus.Fields{"controller": "controller_blobstorage"})
providerList := []providers.BlobStorageProvider{aws.NewAWSBlobStorageProvider(client, logger)}
providerList := []providers.BlobStorageProvider{aws.NewAWSBlobStorageProvider(client, logger), openshift.NewBlobStorageProvider(client, logger)}
rp := resources.NewResourceProvider(client, mgr.GetScheme(), logger)
return &ReconcileBlobStorage{
client: client,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package smtpcredentialset

import (
"context"

"github.com/integr8ly/cloud-resource-operator/pkg/apis/integreatly/v1alpha1/types"
"github.com/integr8ly/cloud-resource-operator/pkg/providers/openshift"
"github.com/integr8ly/cloud-resource-operator/pkg/resources"

"github.com/integr8ly/cloud-resource-operator/pkg/providers"
Expand Down Expand Up @@ -35,7 +37,7 @@ func Add(mgr manager.Manager) error {
func newReconciler(mgr manager.Manager) reconcile.Reconciler {
client := mgr.GetClient()
logger := logrus.WithFields(logrus.Fields{"controller": "controller_smtpcredentialset"})
providerList := []providers.SMTPCredentialsProvider{aws.NewAWSSMTPCredentialProvider(client, logger)}
providerList := []providers.SMTPCredentialsProvider{aws.NewAWSSMTPCredentialProvider(client, logger), openshift.NewSMTPCredentialSetProvider(client, logger)}
rp := resources.NewResourceProvider(client, mgr.GetScheme(), logger)
return &ReconcileSMTPCredentialSet{
client: mgr.GetClient(),
Expand Down
18 changes: 9 additions & 9 deletions pkg/providers/aws/provider_blobstorage.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ const (
blobstorageProviderName = "aws-s3"
defaultAwsBucketNameLength = 40
// default create options
dataBucketName = "bucketName"
dataBucketRegion = "bucketRegion"
dataCredentialKeyID = "credentialKeyID"
dataCredentialSecretKey = "credentialSecretKey"
defaultForceBucketDeletion = false
DetailsBlobStorageBucketName = "bucketName"
DetailsBlobStorageBucketRegion = "bucketRegion"
DetailsBlobStorageCredentialKeyID = "credentialKeyID"
DetailsBlobStorageCredentialSecretKey = "credentialSecretKey"
defaultForceBucketDeletion = false
)

// BlobStorageDeploymentDetails Provider-specific details about the AWS S3 bucket created
Expand All @@ -55,10 +55,10 @@ type BlobStorageDeploymentDetails struct {

func (d *BlobStorageDeploymentDetails) Data() map[string][]byte {
return map[string][]byte{
dataBucketName: []byte(d.BucketName),
dataBucketRegion: []byte(d.BucketRegion),
dataCredentialKeyID: []byte(d.CredentialKeyID),
dataCredentialSecretKey: []byte(d.CredentialSecretKey),
DetailsBlobStorageBucketName: []byte(d.BucketName),
DetailsBlobStorageBucketRegion: []byte(d.BucketRegion),
DetailsBlobStorageCredentialKeyID: []byte(d.CredentialKeyID),
DetailsBlobStorageCredentialSecretKey: []byte(d.CredentialSecretKey),
}
}

Expand Down
22 changes: 11 additions & 11 deletions pkg/providers/aws/provider_smtpcredentialset.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ import (
const (
smtpCredentialProviderName = "aws-ses"
// default create options
detailsSMTPUsernameKey = "username"
detailsSMTPPasswordKey = "password"
detailsSMTPPortKey = "port"
detailsSMTPHostKey = "host"
detailsSMTPTLSKey = "tls"
DetailsSMTPUsernameKey = "username"
DetailsSMTPPasswordKey = "password"
DetailsSMTPPortKey = "port"
DetailsSMTPHostKey = "host"
DetailsSMTPTLSKey = "tls"
)

// SMTPCredentialSetDetails Provider-specific details about SMTP credentials derived from an AWS IAM role
Expand All @@ -47,11 +47,11 @@ type SMTPCredentialSetDetails struct {

func (d *SMTPCredentialSetDetails) Data() map[string][]byte {
return map[string][]byte{
detailsSMTPUsernameKey: []byte(d.Username),
detailsSMTPPasswordKey: []byte(d.Password),
detailsSMTPPortKey: []byte(strconv.Itoa(d.Port)),
detailsSMTPHostKey: []byte(d.Host),
detailsSMTPTLSKey: []byte(strconv.FormatBool(d.TLS)),
DetailsSMTPUsernameKey: []byte(d.Username),
DetailsSMTPPasswordKey: []byte(d.Password),
DetailsSMTPPortKey: []byte(strconv.Itoa(d.Port)),
DetailsSMTPHostKey: []byte(d.Host),
DetailsSMTPTLSKey: []byte(strconv.FormatBool(d.TLS)),
}
}

Expand Down Expand Up @@ -139,7 +139,7 @@ func (p *SMTPCredentialProvider) CreateSMTPCredentials(ctx context.Context, smtp
DeploymentDetails: &SMTPCredentialSetDetails{
Username: sendMailCreds.AccessKeyID,
Password: smtpPass,
Port: 465,
Port: 587,
Host: sesSMTPHost,
TLS: true,
},
Expand Down
10 changes: 5 additions & 5 deletions pkg/providers/aws/provider_smtpcredentialset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -339,11 +339,11 @@ func TestSMTPCredentialProvider_CreateSMTPCredentials(t *testing.T) {
return nil
},
wantData: map[string][]byte{
detailsSMTPUsernameKey: []byte("test"),
detailsSMTPPasswordKey: []byte("AsuNxtdhciTpIaQYwF9CtO/nlNX2hCZkD8E+4vZzrjs0"),
detailsSMTPPortKey: []byte("465"),
detailsSMTPHostKey: []byte(sesSMTPEndpointEUWest1),
detailsSMTPTLSKey: []byte("true"),
DetailsSMTPUsernameKey: []byte("test"),
DetailsSMTPPasswordKey: []byte("AsuNxtdhciTpIaQYwF9CtO/nlNX2hCZkD8E+4vZzrjs0"),
DetailsSMTPPortKey: []byte("587"),
DetailsSMTPHostKey: []byte(sesSMTPEndpointEUWest1),
DetailsSMTPTLSKey: []byte("true"),
},
},
{
Expand Down
83 changes: 83 additions & 0 deletions pkg/providers/openshift/provider_blobstorage.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package openshift

import (
"context"
"time"

"github.com/integr8ly/cloud-resource-operator/pkg/apis/integreatly/v1alpha1"
"github.com/integr8ly/cloud-resource-operator/pkg/apis/integreatly/v1alpha1/types"
"github.com/integr8ly/cloud-resource-operator/pkg/providers"
"github.com/integr8ly/cloud-resource-operator/pkg/providers/aws"
"github.com/integr8ly/cloud-resource-operator/pkg/resources"
"github.com/sirupsen/logrus"
v1 "k8s.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)

const (
varPlaceholder = "REPLACE_ME"
)

var _ providers.BlobStorageProvider = (*BlobStorageProvider)(nil)

type BlobStorageProvider struct {
Client client.Client
Logger *logrus.Entry
}

func NewBlobStorageProvider(c client.Client, l *logrus.Entry) *BlobStorageProvider {
return &BlobStorageProvider{
Client: c,
Logger: l,
}
}

func (b BlobStorageProvider) GetName() string {
return "openshift-blobstorage"
}

func (b BlobStorageProvider) SupportsStrategy(s string) bool {
return providers.OpenShiftDeploymentStrategy == s
}

func (b BlobStorageProvider) GetReconcileTime(bs *v1alpha1.BlobStorage) time.Duration {
return time.Second * 10
}

func (b BlobStorageProvider) CreateStorage(ctx context.Context, bs *v1alpha1.BlobStorage) (*providers.BlobStorageInstance, types.StatusMessage, error) {
// default to an empty s3 set of credentials for now. in the future. this should determine the cloud provider being
// used by checking the infrastructure cr.
dd := &aws.BlobStorageDeploymentDetails{
BucketName: varPlaceholder,
BucketRegion: varPlaceholder,
CredentialKeyID: varPlaceholder,
CredentialSecretKey: varPlaceholder,
}

if bs.Spec.SecretRef.Namespace == "" {
bs.Spec.SecretRef.Namespace = bs.Namespace
}

if bs.Status.Phase != types.PhaseComplete || bs.Status.SecretRef.Name == "" || bs.Status.SecretRef.Namespace == "" {
return &providers.BlobStorageInstance{
DeploymentDetails: dd,
}, "reconcile complete", nil
}

sec := &v1.Secret{}
if err := b.Client.Get(ctx, client.ObjectKey{Name: bs.Status.SecretRef.Name, Namespace: bs.Status.SecretRef.Namespace}, sec); err != nil {
return nil, "failed to reconcile", err
}

dd.BucketName = resources.StringOrDefault(string(sec.Data[aws.DetailsBlobStorageBucketName]), varPlaceholder)
dd.BucketRegion = resources.StringOrDefault(string(sec.Data[aws.DetailsBlobStorageBucketRegion]), varPlaceholder)
dd.CredentialKeyID = resources.StringOrDefault(string(sec.Data[aws.DetailsBlobStorageCredentialKeyID]), varPlaceholder)
dd.CredentialSecretKey = resources.StringOrDefault(string(sec.Data[aws.DetailsBlobStorageCredentialSecretKey]), varPlaceholder)
return &providers.BlobStorageInstance{
DeploymentDetails: dd,
}, "reconcile complete", nil
}

func (b BlobStorageProvider) DeleteStorage(ctx context.Context, bs *v1alpha1.BlobStorage) (types.StatusMessage, error) {
return "deletion complete", nil
}
Loading

0 comments on commit 001f6be

Please sign in to comment.