Skip to content

Commit

Permalink
fix deployment order errors.
Browse files Browse the repository at this point in the history
  • Loading branch information
tjholm committed Jan 31, 2024
1 parent a9d3faa commit 2238889
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 21 deletions.
12 changes: 9 additions & 3 deletions cloud/azure/deploy/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ func (p *NitricAzurePulumiProvider) Api(ctx *pulumi.Context, parent pulumi.Resou
}
}

if len(openapiDoc.Paths) < 1 {
return fmt.Errorf("no paths defined in api: %s", name)
}

for _, pathItem := range openapiDoc.Paths {
for _, op := range pathItem.Operations() {
if v, ok := op.Extensions["x-nitric-target"]; ok {
Expand All @@ -180,17 +184,17 @@ func (p *NitricAzurePulumiProvider) Api(ctx *pulumi.Context, parent pulumi.Resou

targetMap, isMap := v.(map[string]interface{})
if !isMap {
continue
return fmt.Errorf("operation: %s has malformed x-nitric-target annotation", op.OperationID)
}

target, isString := targetMap["name"].(string)
if !isString {
continue
return fmt.Errorf("operation: %s has malformed x-nitric-target annotation", op.OperationID)
}

app, ok := p.containerApps[target]
if !ok {
continue
return fmt.Errorf("Unable to find container app for service: %s", target)
}

// this.api.id returns a URL path, which is the incorrect value here.
Expand All @@ -214,6 +218,8 @@ func (p *NitricAzurePulumiProvider) Api(ctx *pulumi.Context, parent pulumi.Resou
if err != nil {
return errors.WithMessage(err, "NewApiOperationPolicy "+op.OperationID)
}
} else {
return fmt.Errorf("operation: %s missing x-nitric-target annotation", op.OperationID)
}
}
}
Expand Down
37 changes: 19 additions & 18 deletions cloud/azure/deploy/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,25 @@ func (a *NitricAzurePulumiProvider) Pre(ctx *pulumi.Context, nitricResources []*
return errors.WithMessage(err, "resource group create")
}

if hasResourceType(nitricResources, resourcespb.ResourceType_Secret) {
pterm.Info.Println("Stack declares one or more secrets, creating stack level Azure Key Vault")
a.keyVault, err = createKeyVault(ctx, a.resourceGroup, a.clientConfig.TenantId, tags.Tags(a.stackId, ctx.Stack(), commonresources.Stack))
if err != nil {
return errors.WithMessage(err, "keyvault create")
}
}

// Create a storage account if buckets
// Unlike AWS and GCP which have centralized storage management, Azure allows for multiple storage accounts.
// This means we need to create a storage account for each stack, before buckets can be created.
if hasResourceType(nitricResources, resourcespb.ResourceType_Bucket) {
pterm.Info.Println("Stack declares one or more buckets, creating stack level Azure Storage Account")
a.storageAccount, err = createStorageAccount(ctx, a.resourceGroup, tags.Tags(a.stackId, ctx.Stack(), commonresources.Stack))
if err != nil {
return errors.WithMessage(err, "storage account create")
}
}

a.containerEnv, err = a.newContainerEnv(ctx, a.stackId, map[string]string{})
if err != nil {
return err
Expand All @@ -244,24 +263,6 @@ func (a *NitricAzurePulumiProvider) Pre(ctx *pulumi.Context, nitricResources []*
// Create a key vault if secrets are required.
// Unlike AWS and GCP which have centralized secrets management, Azure allows for multiple key vaults.
// This means we need to create a keyvault for each stack.
if hasResourceType(nitricResources, resourcespb.ResourceType_Secret) {
pterm.Info.Println("Stack declares one or more secrets, creating stack level Azure Key Vault")
a.keyVault, err = createKeyVault(ctx, a.resourceGroup, a.clientConfig.TenantId, tags.Tags(a.stackId, ctx.Stack(), commonresources.Stack))
if err != nil {
return errors.WithMessage(err, "keyvault create")
}
}

// Create a storage account if buckets
// Unlike AWS and GCP which have centralized storage management, Azure allows for multiple storage accounts.
// This means we need to create a storage account for each stack, before buckets can be created.
if hasResourceType(nitricResources, resourcespb.ResourceType_Bucket) {
pterm.Info.Println("Stack declares one or more buckets, creating stack level Azure Storage Account")
a.storageAccount, err = createStorageAccount(ctx, a.resourceGroup, tags.Tags(a.stackId, ctx.Stack(), commonresources.Stack))
if err != nil {
return errors.WithMessage(err, "storage account create")
}
}

return nil
}
Expand Down
2 changes: 2 additions & 0 deletions cloud/azure/deploy/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -394,5 +394,7 @@ func (p *NitricAzurePulumiProvider) Service(ctx *pulumi.Context, parent pulumi.R
"containerApp": res.App,
})

p.containerApps[name] = res

return err
}

0 comments on commit 2238889

Please sign in to comment.