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

Commit cdd6871

Browse files
Adding Code Generation for Static S3 Sites
Signed-off-by: Christopher Hein <[email protected]>
1 parent 29b2737 commit cdd6871

File tree

4 files changed

+70
-0
lines changed

4 files changed

+70
-0
lines changed

pkg/apis/operator.aws/v1alpha1/s3bucket.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,21 @@ type S3BucketSpec struct {
3333
Versioning bool `json:"versioning"`
3434
AccessControl string `json:"accessControl"`
3535
Logging S3BucketLogging `json:"logging"`
36+
Website S3BucketWebsite `json:"website"`
37+
}
38+
39+
// S3BucketWebsite defines the Website resource for S3Bucket
40+
type S3BucketWebsite struct {
41+
Enabled bool `json:"enabled"`
42+
IndexPage string `json:"indexPage"`
43+
ErrorPage string `json:"errorPage"`
3644
}
3745

3846
// S3BucketOutput defines the output resource for S3Bucket
3947
type S3BucketOutput struct {
4048
BucketName string `json:"bucketName"`
4149
BucketARN string `json:"bucketARN"`
50+
WebsiteURL string `json:"websiteURL"`
4251
}
4352

4453
// S3BucketStatus holds the status of the Cloudformation template

pkg/apis/operator.aws/v1alpha1/zz_generated.deepcopy.go

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/operator/s3bucket/cft.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,24 @@ func (s *Cloudformation) CreateStack() (output *cloudformation.CreateStackOutput
105105
return output, err
106106
}
107107
loggingprefix := helpers.CreateParam("LoggingPrefix", helpers.Stringify(loggingprefixValue))
108+
websiteenabledTemp := "{{.Obj.Spec.Website.Enabled}}"
109+
websiteenabledValue, err := helpers.Templatize(websiteenabledTemp, helpers.Data{Obj: s.S3Bucket, Config: s.config, Helpers: helpers.New()})
110+
if err != nil {
111+
return output, err
112+
}
113+
websiteenabled := helpers.CreateParam("EnableStaticSite", helpers.Stringify(websiteenabledValue))
114+
websiteindexPageTemp := "{{.Obj.Spec.Website.IndexPage}}"
115+
websiteindexPageValue, err := helpers.Templatize(websiteindexPageTemp, helpers.Data{Obj: s.S3Bucket, Config: s.config, Helpers: helpers.New()})
116+
if err != nil {
117+
return output, err
118+
}
119+
websiteindexPage := helpers.CreateParam("StaticSiteIndex", helpers.Stringify(websiteindexPageValue))
120+
websiteerrorPageTemp := "{{.Obj.Spec.Website.ErrorPage}}"
121+
websiteerrorPageValue, err := helpers.Templatize(websiteerrorPageTemp, helpers.Data{Obj: s.S3Bucket, Config: s.config, Helpers: helpers.New()})
122+
if err != nil {
123+
return output, err
124+
}
125+
websiteerrorPage := helpers.CreateParam("StaticSiteError", helpers.Stringify(websiteerrorPageValue))
108126

109127
parameters := []*cloudformation.Parameter{}
110128
parameters = append(parameters, resourceName)
@@ -116,6 +134,9 @@ func (s *Cloudformation) CreateStack() (output *cloudformation.CreateStackOutput
116134
parameters = append(parameters, accessControl)
117135
parameters = append(parameters, loggingenabled)
118136
parameters = append(parameters, loggingprefix)
137+
parameters = append(parameters, websiteenabled)
138+
parameters = append(parameters, websiteindexPage)
139+
parameters = append(parameters, websiteerrorPage)
119140

120141
stackInputs.SetParameters(parameters)
121142

@@ -180,6 +201,24 @@ func (s *Cloudformation) UpdateStack(updated *awsV1alpha1.S3Bucket) (output *clo
180201
return output, err
181202
}
182203
loggingprefix := helpers.CreateParam("LoggingPrefix", helpers.Stringify(loggingprefixValue))
204+
websiteenabledTemp := "{{.Obj.Spec.Website.Enabled}}"
205+
websiteenabledValue, err := helpers.Templatize(websiteenabledTemp, helpers.Data{Obj: updated, Config: s.config, Helpers: helpers.New()})
206+
if err != nil {
207+
return output, err
208+
}
209+
websiteenabled := helpers.CreateParam("EnableStaticSite", helpers.Stringify(websiteenabledValue))
210+
websiteindexPageTemp := "{{.Obj.Spec.Website.IndexPage}}"
211+
websiteindexPageValue, err := helpers.Templatize(websiteindexPageTemp, helpers.Data{Obj: updated, Config: s.config, Helpers: helpers.New()})
212+
if err != nil {
213+
return output, err
214+
}
215+
websiteindexPage := helpers.CreateParam("StaticSiteIndex", helpers.Stringify(websiteindexPageValue))
216+
websiteerrorPageTemp := "{{.Obj.Spec.Website.ErrorPage}}"
217+
websiteerrorPageValue, err := helpers.Templatize(websiteerrorPageTemp, helpers.Data{Obj: updated, Config: s.config, Helpers: helpers.New()})
218+
if err != nil {
219+
return output, err
220+
}
221+
websiteerrorPage := helpers.CreateParam("StaticSiteError", helpers.Stringify(websiteerrorPageValue))
183222

184223
parameters := []*cloudformation.Parameter{}
185224
parameters = append(parameters, resourceName)
@@ -191,6 +230,9 @@ func (s *Cloudformation) UpdateStack(updated *awsV1alpha1.S3Bucket) (output *clo
191230
parameters = append(parameters, accessControl)
192231
parameters = append(parameters, loggingenabled)
193232
parameters = append(parameters, loggingprefix)
233+
parameters = append(parameters, websiteenabled)
234+
parameters = append(parameters, websiteindexPage)
235+
parameters = append(parameters, websiteerrorPage)
194236

195237
stackInputs.SetParameters(parameters)
196238

pkg/operator/s3bucket/controller.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ func updateStatus(config *config.Config, name string, namespace string, stackID
216216
}
217217
resourceCopy.Output.BucketName = outputs["BucketName"]
218218
resourceCopy.Output.BucketARN = outputs["BucketArn"]
219+
resourceCopy.Output.WebsiteURL = outputs["WebsiteURL"]
219220
}
220221

221222
_, err = clientSet.S3Buckets(namespace).Update(resourceCopy)
@@ -272,6 +273,7 @@ func syncAdditionalResources(config *config.Config, s *awsV1alpha1.S3Bucket) (er
272273
"serviceName": "{{call .Helpers.KubernetesResourceName .Obj.Name}}",
273274
"region": "{{.Config.Region}}",
274275
"bucketURL": "{{.Obj.Name}}.s3-{{.Config.Region}}.amazonaws.com",
276+
"websiteURL": "{{.Obj.Output.WebsiteURL}}",
275277
}
276278
s3BucketCM := helpers.CreateConfigMap(config, s, s.Name, s.Namespace, s3BucketCMData)
277279
configmaps = append(configmaps, s3BucketCM)

0 commit comments

Comments
 (0)