We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
We need to simulate the CodePipeline to provision resources for premium tenants during local development.
manifests templates project.tpl.txt user.tpl.txt
Ensure template contents have parameters in all caps. For example:
test: INSERT_NUMBER
provision.sh
#!/bin/bash # Create namespace. kubectl create ns ${TenantName} # Create dedicated user table for tenant. # Create dedicated project table for tenant. # Initialize manifests from templates. cp user.tpl.txt ./manifests/templates/mic-user.yaml cp project.tpl.txt ./manifests/templates/mic-project.yaml # Hydrate user deployment yaml file for tenant. sed -i -e 's,INSERT_NUMBER,'$Num',g' ./manifests/templates/mic-user.yaml # Hydrate project deployment yaml file for tenant. sed -i -e 's,INSERT_NUMBER,'$Num',g' ./manifests/templates/mic-project.yaml # Deploy resources. kubectl apply -f ./manifests/templates
type MockCodePipeline struct { logger *zap.Logger cmd *exec.Cmd } func NewMockCodePipeline(logger *zap.Logger) *MockCodePipeline { cmd := exec.Command("./provision.sh") return &MockCodePipeline{ logger: logger, cmd: cmd, } } func (scp *MockCodePipeline) simulateCodePipeline() { // Gather requirements. Do not include duplicate environment keys to avoid overriding values. scp.setProjectEnvRequirements() scp.setUserEnvRequirements() // Execute. scp.logger.Info(scp.cmd.String()) //if output, err := cmd.Output(); err != nil { // scp.logger.Error("", zap.Error(err)) //} else { // scp.logger.Info("", zap.Any("output", output)) //} } func (scp *MockCodePipeline) setProjectEnvRequirements() { var env []string // gather requirements scp.cmd.Env = append(scp.cmd.Env, env...) } func (scp *MockCodePipeline) setUserEnvRequirements() { var env []string // gather requirements scp.cmd.Env = append(scp.cmd.Env, env...) } func (rs *RegistrationService) provision(ctx context.Context, tenantPath string, plan Plan) error { if plan != PlanPremium { return nil } if !rs.isProd { scp := NewMockCodePipeline(rs.logger) scp.simulateCodePipeline() return nil } client := codepipeline.New(codepipeline.Options{ Region: rs.region, }) input := codepipeline.StartPipelineExecutionInput{ Name: aws.String("tenant-onboarding-pipeline"), ClientRequestToken: aws.String(fmt.Sprintf("requestToken-%s", time.Now().UTC())), } output, err := client.StartPipelineExecution(ctx, &input) if err != nil { return err } rs.logger.Info(fmt.Sprintf("successfully started pipeline - response: %+v", output)) return nil }
https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/main/services/application/apps/order/k8s/template.yaml
https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/c59165babe46073601243876b947029521bd2019/cdk/root/lib/tenant-infra/tenant-infra-stack.ts
https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/c59165babe46073601243876b947029521bd2019/buildspec.yaml
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Problem
We need to simulate the CodePipeline to provision resources for premium tenants during local development.
Acceptance Criteria
Technical Breakdown
Ensure template contents have parameters in all caps. For example:
provision.sh
script in project root.https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/main/services/application/apps/order/k8s/template.yaml
https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/c59165babe46073601243876b947029521bd2019/cdk/root/lib/tenant-infra/tenant-infra-stack.ts
https://github.com/aws-samples/aws-saas-factory-eks-saas-workshop/blob/c59165babe46073601243876b947029521bd2019/buildspec.yaml
The text was updated successfully, but these errors were encountered: