Skip to content

Commit ba9c467

Browse files
committed
fix: reuse the apiSpec in memory rather than opening it again
1 parent bd1b143 commit ba9c467

File tree

3 files changed

+19
-43
lines changed

3 files changed

+19
-43
lines changed

pkg/provider/pulumi/aws/aws.go

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"context"
2121
"io/ioutil"
2222
"os"
23-
"path"
2423

2524
"github.com/pkg/errors"
2625
"github.com/pulumi/pulumi-aws/sdk/v4/go/aws/dynamodb"
@@ -34,7 +33,6 @@ import (
3433
"github.com/nitrictech/newcli/pkg/provider/pulumi/types"
3534
"github.com/nitrictech/newcli/pkg/stack"
3635
"github.com/nitrictech/newcli/pkg/target"
37-
"github.com/nitrictech/newcli/pkg/utils"
3836
)
3937

4038
type awsProvider struct {
@@ -85,29 +83,26 @@ func (a *awsProvider) Deploy(ctx *pulumi.Context) error {
8583
}
8684
}
8785

88-
buckets := map[string]*s3.Bucket{}
8986
for k := range a.s.Buckets {
90-
buckets[k], err = s3.NewBucket(ctx, k, &s3.BucketArgs{
87+
_, err = s3.NewBucket(ctx, k, &s3.BucketArgs{
9188
Tags: commonTags(ctx, k),
9289
})
9390
if err != nil {
9491
return errors.WithMessage(err, "s3 bucket "+k)
9592
}
9693
}
9794

98-
queues := map[string]*sqs.Queue{}
9995
for k := range a.s.Queues {
100-
queues[k], err = sqs.NewQueue(ctx, k, &sqs.QueueArgs{
96+
_, err = sqs.NewQueue(ctx, k, &sqs.QueueArgs{
10197
Tags: commonTags(ctx, k),
10298
})
10399
if err != nil {
104100
return errors.WithMessage(err, "sqs queue "+k)
105101
}
106102
}
107103

108-
dbs := map[string]*dynamodb.Table{}
109104
for k := range a.s.Collections {
110-
dbs[k], err = dynamodb.NewTable(ctx, "mytable", &dynamodb.TableArgs{
105+
_, err = dynamodb.NewTable(ctx, "mytable", &dynamodb.TableArgs{
111106
Attributes: dynamodb.TableAttributeArray{
112107
&dynamodb.TableAttributeArgs{
113108
Name: pulumi.String("_pk"),
@@ -137,13 +132,6 @@ func (a *awsProvider) Deploy(ctx *pulumi.Context) error {
137132
}
138133
}
139134

140-
for k, s := range a.s.Sites {
141-
err := a.site(ctx, k, &s)
142-
if err != nil {
143-
return errors.WithMessage(err, "site "+k)
144-
}
145-
}
146-
147135
authToken, err := ecr.GetAuthorizationToken(ctx, &ecr.GetAuthorizationTokenArgs{})
148136
if err != nil {
149137
return err
@@ -187,23 +175,16 @@ func (a *awsProvider) Deploy(ctx *pulumi.Context) error {
187175
return errors.WithMessage(err, "lambda container "+c.Name())
188176
}
189177
}
190-
apiGateways := map[string]*ApiGateway{}
191-
for k, apiFile := range a.s.Apis {
192-
apiGateways[k], err = newApiGateway(ctx, k, &ApiGatewayArgs{
193-
ApiFilePath: path.Join(a.s.Path(), apiFile),
178+
179+
for k := range a.s.Apis {
180+
_, err = newApiGateway(ctx, k, &ApiGatewayArgs{
181+
OpenAPISpec: a.s.ApiDoc(k),
194182
LambdaFunctions: funcs})
195183
if err != nil {
196184
return errors.WithMessage(err, "gateway "+k)
197185
}
198186
}
199187

200-
for k, v := range a.s.EntryPoints {
201-
err = a.entrypoint(ctx, k, &v)
202-
if err != nil {
203-
return errors.WithMessage(err, "entrypoint "+k)
204-
}
205-
}
206-
207188
return nil
208189
}
209190

@@ -212,11 +193,3 @@ func (a *awsProvider) CleanUp() {
212193
os.Remove(a.tmpDir)
213194
}
214195
}
215-
216-
func (a *awsProvider) site(ctx *pulumi.Context, name string, o interface{}) error {
217-
return utils.NewNotSupportedErr("site not supported on AWS yet")
218-
}
219-
220-
func (a *awsProvider) entrypoint(ctx *pulumi.Context, name string, o interface{}) error {
221-
return utils.NewNotSupportedErr("entrypoint not supported on AWS yet")
222-
}

pkg/provider/pulumi/aws/gateway.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
)
2525

2626
type ApiGatewayArgs struct {
27-
ApiFilePath string
27+
OpenAPISpec *openapi3.T
2828
LambdaFunctions map[string]*Lambda
2929
}
3030

@@ -42,21 +42,16 @@ func newApiGateway(ctx *pulumi.Context, name string, args *ApiGatewayArgs, opts
4242
return nil, err
4343
}
4444

45-
spec, err := openapi3.NewLoader().LoadFromFile(args.ApiFilePath)
46-
if err != nil {
47-
return nil, err
48-
}
49-
50-
for k, p := range spec.Paths {
45+
for k, p := range args.OpenAPISpec.Paths {
5146
p.Get = awsOperation(ctx.Log, p.Get, args.LambdaFunctions)
5247
p.Post = awsOperation(ctx.Log, p.Post, args.LambdaFunctions)
5348
p.Patch = awsOperation(ctx.Log, p.Patch, args.LambdaFunctions)
5449
p.Put = awsOperation(ctx.Log, p.Put, args.LambdaFunctions)
5550
p.Delete = awsOperation(ctx.Log, p.Delete, args.LambdaFunctions)
56-
spec.Paths[k] = p
51+
args.OpenAPISpec.Paths[k] = p
5752
}
5853

59-
b, err := spec.MarshalJSON()
54+
b, err := args.OpenAPISpec.MarshalJSON()
6055
if err != nil {
6156
return nil, err
6257
}

pkg/stack/types.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ func (s *Stack) SetApiDoc(name string, doc *openapi3.T) {
168168
s.apiDocs[name] = doc
169169
}
170170

171+
func (s *Stack) ApiDoc(name string) *openapi3.T {
172+
if s.apiDocs == nil {
173+
return nil
174+
}
175+
176+
return s.apiDocs[name]
177+
}
178+
171179
func FromFile(name string) (*Stack, error) {
172180
yamlFile, err := ioutil.ReadFile(name)
173181
if err != nil {

0 commit comments

Comments
 (0)