Skip to content
This repository was archived by the owner on Nov 7, 2019. It is now read-only.

Commit 9a19d13

Browse files
Adding Code to Create ConfigMaps Automatically
**Why:** * This will allow the operator to create configmaps for resources based on the outputs. **This change addresses the need by:** * closes #67 Signed-off-by: Christopher Hein <[email protected]>
1 parent 42efecb commit 9a19d13

File tree

5 files changed

+67
-15
lines changed

5 files changed

+67
-15
lines changed

models/dynamodb.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,13 @@ spec:
9797
TableARN is the full Amazon ARN for the table created
9898
structKey: TableARN
9999
templateKey: TableArn
100+
additionalResources:
101+
configMaps:
102+
- name: s3BucketCM
103+
data:
104+
- key: tableName
105+
value: "{{.Obj.Output.TableName}}"
106+
- key: tableARN
107+
value: "{{.Obj.Output.TableARN}}"
108+
- key: region
109+
value: "{{.Config.Region}}"

models/s3bucket.yaml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,17 @@ spec:
8282
externalName: "{{.Obj.Name}}.s3-{{.Config.Region}}.amazonaws.com"
8383
ports:
8484
- port: 443
85-
configMap:
86-
- name: s3BucketCM
87-
data:
88-
bucketName: "{{.Obj.Name}}"
89-
bucketARN: "{{.Obj.Output.BucketARN}}"
90-
serviceName: "{{.Obj}}"
91-
region: "{{.Config.Region}}"
92-
bucketURL: "{{.Obj.Name}}.s3-{{.Config.Region}}.amazonaws.com"
85+
configMaps:
86+
- name: s3BucketCM
87+
data:
88+
- key: bucketName
89+
value: "{{.Obj.Name}}"
90+
- key: bucketARN
91+
value: "{{.Obj.Output.BucketARN}}"
92+
- key: serviceName
93+
value: "{{call .Helpers.KubernetesResourceName .Obj.Name}}"
94+
- key: region
95+
value: "{{.Config.Region}}"
96+
- key: bucketURL
97+
value: "{{.Obj.Name}}.s3-{{.Config.Region}}.amazonaws.com"
9398

pkg/helpers/config_map.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package helpers
2+
3+
import (
4+
"github.com/christopherhein/aws-operator/pkg/config"
5+
apiv1 "k8s.io/api/core/v1"
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
)
8+
9+
// CreateConfigMap will create a Kubernetes Servic Using ExternalName types
10+
func CreateConfigMap(config *config.Config, resource interface{}, svcName string, svcNamespace string, configMapTemplate map[string]string) string {
11+
logger := config.Logger
12+
cmData := map[string]string{}
13+
for key, value := range configMapTemplate {
14+
tempValue, err := Templatize(value, Data{Obj: resource, Config: config, Helpers: New()})
15+
if err != nil {
16+
logger.WithError(err).Error("error parsing config map template")
17+
return ""
18+
}
19+
cmData[key] = tempValue
20+
}
21+
22+
configMap := &apiv1.ConfigMap{
23+
ObjectMeta: metav1.ObjectMeta{
24+
Name: KubernetesResourceName(svcName),
25+
},
26+
Data: cmData,
27+
}
28+
29+
newConfigMap, err := config.Context.Clientset.CoreV1().ConfigMaps(svcNamespace).Create(configMap)
30+
if err != nil {
31+
logger.WithError(err).Error("error creating configmap")
32+
}
33+
return newConfigMap.Name
34+
}

pkg/helpers/service.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@ import (
66
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
77
)
88

9-
// Data wrapps the object that is needed for the services
10-
type Data struct {
11-
Helpers Helpers
12-
Obj interface{}
13-
Config *config.Config
14-
}
15-
169
// CreateExternalNameService will create a Kubernetes Servic Using ExternalName types
1710
func CreateExternalNameService(config *config.Config, resource interface{}, svcName string, svcNamespace string, externalNameTemplate string, svcPort int32) string {
1811
logger := config.Logger

pkg/helpers/types.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package helpers
2+
3+
import "github.com/christopherhein/aws-operator/pkg/config"
4+
5+
// Data wrapps the object that is needed for the services
6+
type Data struct {
7+
Helpers Helpers
8+
Obj interface{}
9+
Config *config.Config
10+
}

0 commit comments

Comments
 (0)