Skip to content

Commit

Permalink
Correctly pass project roles from orchestrator to cli (#1297)
Browse files Browse the repository at this point in the history
* Correctly pass project roles from orchestrator to cli
  • Loading branch information
motatoes authored Mar 21, 2024
1 parent 4a6573a commit 6ed4fd0
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 17 deletions.
4 changes: 2 additions & 2 deletions backend/utils/graphs.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ func ConvertJobsToDiggerJobs(jobsMap map[string]orchestrator.Job, projectMap map

log.Printf("Number of Jobs: %v\n", len(jobsMap))
marshalledJobsMap := map[string][]byte{}
for _, job := range jobsMap {
marshalled, err := json.Marshal(orchestrator.JobToJson(job))
for projectName, job := range jobsMap {
marshalled, err := json.Marshal(orchestrator.JobToJson(job, projectMap[projectName]))
if err != nil {
return nil, nil, err
}
Expand Down
6 changes: 6 additions & 0 deletions cli/pkg/digger/digger.go
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,12 @@ func RunJob(
}
return errors.New(msg)
}

err = job.PopulateAwsCredentialsEnvVarsForJob()
if err != nil {
log.Fatalf("failed to fetch AWS keys, %v", err)
}

var terraformExecutor terraform.TerraformExecutor
projectPath := path.Join(workingDir, job.ProjectDir)
if job.Terragrunt {
Expand Down
3 changes: 3 additions & 0 deletions libs/orchestrator/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ func (fetcher GithubAwsTokenFetcher) FetchToken(context awssdkcreds.Context) ([]
}

func GetProviderFromRole(role string) *stscreds.WebIdentityRoleProvider {
if role == "" {
return nil
}
mySession := session.Must(session.NewSession())
stsSTS := sts.New(mySession, &awssdk.Config{Region: awssdk.String("us-east-1")})
x := stscreds.NewWebIdentityRoleProviderWithOptions(stsSTS, role, "diggerSess", GithubAwsTokenFetcher{})
Expand Down
45 changes: 30 additions & 15 deletions libs/orchestrator/json_models.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package orchestrator

import "slices"
import (
"github.com/diggerhq/digger/libs/digger_config"
"slices"
)

type StepJson struct {
Action string `json:"action"`
Expand All @@ -27,6 +30,8 @@ type JobJson struct {
Namespace string `json:"namespace"`
StateEnvVars map[string]string `json:"stateEnvVars"`
CommandEnvVars map[string]string `json:"commandEnvVars"`
StateRoleName string `json:"state_role_name"`
CommandRoleName string `json:"command_role_name"`
}

func (j *JobJson) IsPlan() bool {
Expand All @@ -37,7 +42,13 @@ func (j *JobJson) IsApply() bool {
return slices.Contains(j.Commands, "digger apply")
}

func JobToJson(job Job) JobJson {
func JobToJson(job Job, project digger_config.Project) JobJson {
stateRole, commandRole := "", ""
if project.AwsRoleToAssume != nil {
stateRole = project.AwsRoleToAssume.State
commandRole = project.AwsRoleToAssume.Command

}
return JobJson{
ProjectName: job.ProjectName,
ProjectDir: job.ProjectDir,
Expand All @@ -52,24 +63,28 @@ func JobToJson(job Job) JobJson {
Namespace: job.Namespace,
StateEnvVars: job.StateEnvVars,
CommandEnvVars: job.CommandEnvVars,
StateRoleName: stateRole,
CommandRoleName: commandRole,
}
}

func JsonToJob(jobJson JobJson) Job {
return Job{
ProjectName: jobJson.ProjectName,
ProjectDir: jobJson.ProjectDir,
ProjectWorkspace: jobJson.ProjectWorkspace,
Terragrunt: jobJson.Terragrunt,
Commands: jobJson.Commands,
ApplyStage: jsonToStage(jobJson.ApplyStage),
PlanStage: jsonToStage(jobJson.PlanStage),
PullRequestNumber: jobJson.PullRequestNumber,
EventName: jobJson.EventName,
RequestedBy: jobJson.RequestedBy,
Namespace: jobJson.Namespace,
StateEnvVars: jobJson.StateEnvVars,
CommandEnvVars: jobJson.CommandEnvVars,
ProjectName: jobJson.ProjectName,
ProjectDir: jobJson.ProjectDir,
ProjectWorkspace: jobJson.ProjectWorkspace,
Terragrunt: jobJson.Terragrunt,
Commands: jobJson.Commands,
ApplyStage: jsonToStage(jobJson.ApplyStage),
PlanStage: jsonToStage(jobJson.PlanStage),
PullRequestNumber: jobJson.PullRequestNumber,
EventName: jobJson.EventName,
RequestedBy: jobJson.RequestedBy,
Namespace: jobJson.Namespace,
StateEnvVars: jobJson.StateEnvVars,
CommandEnvVars: jobJson.CommandEnvVars,
StateEnvProvider: GetProviderFromRole(jobJson.StateRoleName),
CommandEnvProvider: GetProviderFromRole(jobJson.CommandRoleName),
}
}

Expand Down

0 comments on commit 6ed4fd0

Please sign in to comment.