Skip to content

Commit

Permalink
feat: handle GitOps agent in devbox
Browse files Browse the repository at this point in the history
  • Loading branch information
rangoo94 committed Jan 22, 2025
1 parent 67efe6c commit fb1687b
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 17 deletions.
27 changes: 12 additions & 15 deletions cmd/tcl/kubectl-testkube/devbox/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -234,27 +234,24 @@ func NewDevBoxCommand() *cobra.Command {
}
fmt.Println("Creating additional GitOps agents in Cloud...")
for i := uint16(0); i < count; i++ {
// TODO: Do actual agent
//runner, err := cloud.CreateRunner(env.Id, fmt.Sprintf("runner-%d", i+1), map[string]string{
// "each": "one",
// "even": fmt.Sprintf("%v", (i+1)%2 == 0),
// "odd": fmt.Sprintf("%v", (i+1)%2 == 1),
// "modulo3": fmt.Sprintf("%d", (i+1)%3),
//})
//if err != nil {
// fail(errors.Wrap(err, "failed to create runner agent"))
//}
//fmt.Printf(" %s %s\n", runner.Name, color.Gray.Render(fmt.Sprintf("(%s / %s)", runner.ID, runner.SecretKey)))
//runnersData = append(runnersData, *runner)
fmt.Printf(" %s %s\n", "superagent", color.Gray.Render(fmt.Sprintf("(%s / %s)", env.Id, env.AgentToken)))
gitopsData = append(gitopsData, *cloud.SuperAgent(env))
gitops, err := cloud.CreateGitOpsAgent(env.Id, fmt.Sprintf("gitops-%d", i+1), map[string]string{
"each": "one",
"even": fmt.Sprintf("%v", (i+1)%2 == 0),
"odd": fmt.Sprintf("%v", (i+1)%2 == 1),
"modulo3": fmt.Sprintf("%d", (i+1)%3),
})
if err != nil {
fail(errors.Wrap(err, "failed to create GitOps agent"))
}
fmt.Printf(" %s %s\n", gitops.Name, color.Gray.Render(fmt.Sprintf("(%s / %s)", gitops.ID, gitops.SecretKey)))
gitopsData = append(gitopsData, *gitops)
}
}

// Initialize GitOps objects
gitopsPods := make([]*devutils.PodObject, len(gitopsData))
for i := range gitopsData {
gitopsPods[i] = namespace.Pod(fmt.Sprintf("gitop-%d", i+1)).SetKind("gitop")
gitopsPods[i] = namespace.Pod(fmt.Sprintf("gitops-%d", i+1)).SetKind("gitops")
}
gitops := make([]*devutils.GitOpsAgent, len(gitopsData))
for i := range gitopsData {
Expand Down
8 changes: 8 additions & 0 deletions cmd/tcl/kubectl-testkube/devbox/devutils/cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,11 @@ func (c *CloudObject) CreateRunner(environmentId string, name string, labels map
}
return &runner, nil
}

func (c *CloudObject) CreateGitOpsAgent(environmentId string, name string, labels map[string]string) (*client.Agent, error) {
runner, err := c.agentClient.CreateGitOpsAgent(environmentId, name, labels)
if err != nil {
return nil, err
}
return &runner, nil
}
11 changes: 11 additions & 0 deletions pkg/cloud/client/agents.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

const (
AgentRunnerType = "run"
AgentGitOpsType = "sync"
)

func NewAgentsClient(baseUrl, token, orgID string) *AgentsClient {
Expand Down Expand Up @@ -47,3 +48,13 @@ func (c AgentsClient) CreateRunner(envId string, name string, labels map[string]
}
return c.RESTClient.Create(agent)
}

func (c AgentsClient) CreateGitOpsAgent(envId string, name string, labels map[string]string) (Agent, error) {
agent := Agent{
EnvironmentIDs: []string{envId},
Name: name,
Type: AgentGitOpsType,
Labels: labels,
}
return c.RESTClient.Create(agent)
}
3 changes: 3 additions & 0 deletions pkg/crdstorage/testworkflows.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ func (s *testWorkflowsStorage) Process(ctx context.Context, event Event[testkube
if err == nil && (current.Equals(&event.Resource) || (!event.Timestamp.IsZero() && !current.Updated.Before(event.Timestamp))) {
return nil
}
if err != nil {
return s.client.Create(ctx, s.environmentId, event.Resource)
}
return s.client.Update(ctx, s.environmentId, event.Resource)
case EventTypeDelete:
// Avoid processing when there is no difference, or we have newer result
Expand Down
12 changes: 10 additions & 2 deletions pkg/crdstorage/testworkflowtemplates.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (s *testWorkflowTemplatesStorage) Process(ctx context.Context, event Event[
case EventTypeCreate:
// Avoid processing when there is no difference
current, err := s.client.Get(ctx, s.environmentId, name)
if err == nil && current.Equals(&event.Resource) {
if err == nil && (current.Equals(&event.Resource) || (!event.Timestamp.IsZero() && !current.Updated.Before(event.Timestamp))) {
return nil
}
if current != nil {
Expand All @@ -61,11 +61,19 @@ func (s *testWorkflowTemplatesStorage) Process(ctx context.Context, event Event[
case EventTypeUpdate:
// Avoid processing when there is no difference
current, err := s.client.Get(ctx, s.environmentId, name)
if err == nil && current.Equals(&event.Resource) {
if err == nil && (current.Equals(&event.Resource) || (!event.Timestamp.IsZero() && !current.Updated.Before(event.Timestamp))) {
return nil
}
if err != nil {
return s.client.Create(ctx, s.environmentId, event.Resource)
}
return s.client.Update(ctx, s.environmentId, event.Resource)
case EventTypeDelete:
// Avoid processing when there is no difference, or we have newer result
current, err := s.client.Get(ctx, s.environmentId, name)
if err == nil && (!event.Timestamp.IsZero() && !current.Updated.Before(event.Timestamp)) {
return nil
}
return s.client.Delete(ctx, s.environmentId, name)
default:
return fmt.Errorf("unknown event type: %s", event.Type)
Expand Down

0 comments on commit fb1687b

Please sign in to comment.