Skip to content
New issue

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

Support ict (jobs and jobrunnergroup) #119

Merged
merged 20 commits into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ require (
github.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249
github.com/oklog/run v1.1.0
github.com/panta/machineid v1.0.2
github.com/signadot/go-sdk v0.3.8-0.20240516163659-87dfff7a3922
github.com/signadot/go-sdk v0.3.8-0.20240522192013-3882db39d258
github.com/signadot/libconnect v0.1.1-0.20240306100356-4c865b888453
github.com/spf13/cobra v1.6.0
github.com/spf13/viper v1.11.0
Expand Down Expand Up @@ -49,7 +49,7 @@ require (
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/fatih/color v1.15.0
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/analysis v0.23.0 // indirect
github.com/go-openapi/errors v0.22.0 // indirect
Expand Down Expand Up @@ -91,9 +91,9 @@ require (
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
go.mongodb.org/mongo-driver v1.15.0 // indirect
go.opentelemetry.io/otel v1.26.0 // indirect
go.opentelemetry.io/otel/metric v1.26.0 // indirect
go.opentelemetry.io/otel/trace v1.26.0 // indirect
go.opentelemetry.io/otel v1.27.0 // indirect
go.opentelemetry.io/otel/metric v1.27.0 // indirect
go.opentelemetry.io/otel/trace v1.27.0 // indirect
golang.org/x/crypto v0.21.0 // indirect
golang.org/x/oauth2 v0.16.0 // indirect
golang.org/x/sys v0.18.0 // indirect
Expand All @@ -118,4 +118,4 @@ require (
// Used for local dev
// replace github.com/signadot/libconnect => ../libconnect/

// replace github.com/signadot/go-sdk => ../go-sdk
//replace github.com/signadot/go-sdk => ../go-sdk
14 changes: 14 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU=
Expand Down Expand Up @@ -298,6 +300,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/signadot/go-sdk v0.3.7 h1:r8OuhbKzV9a55o7ZTkWuANGbwljfAcZBSwOqstN+tj8=
github.com/signadot/go-sdk v0.3.7/go.mod h1:O27LoqeYQzLmIUVCZ/dTukJSEtmZMnqP1Upp7I00tEg=
github.com/signadot/go-sdk v0.3.8-0.20240514115106-afd906e78099 h1:BjcaLV9xxB7J5F8UW72Y1bUUVe1k2p5XONpXbjPaEN8=
github.com/signadot/go-sdk v0.3.8-0.20240514115106-afd906e78099/go.mod h1:dgIOK+FoU5oEWHXYFI4diXJtBLVJTWsivUl7u8D5eCQ=
github.com/signadot/go-sdk v0.3.8-0.20240514201336-f8c37ac3c72e h1:yfgTUgk4TtvZx7OGrBxY8HN4WTi0098p6m//8/eiJrE=
Expand All @@ -306,6 +310,10 @@ github.com/signadot/go-sdk v0.3.8-0.20240516151729-61be7eb1919a h1:3fEzB8edKrTo4
github.com/signadot/go-sdk v0.3.8-0.20240516151729-61be7eb1919a/go.mod h1:dgIOK+FoU5oEWHXYFI4diXJtBLVJTWsivUl7u8D5eCQ=
github.com/signadot/go-sdk v0.3.8-0.20240516163659-87dfff7a3922 h1:IBlllSFc/DQk33JzVI0RkFZ9/KlaCa8RWiKAfnO78hM=
github.com/signadot/go-sdk v0.3.8-0.20240516163659-87dfff7a3922/go.mod h1:dgIOK+FoU5oEWHXYFI4diXJtBLVJTWsivUl7u8D5eCQ=
github.com/signadot/go-sdk v0.3.8-0.20240521210827-dc1d01e5e52b h1:0Qwmpo4x9vCtqnbMeoIirblxWfHOXL5y42HJepgZtwc=
github.com/signadot/go-sdk v0.3.8-0.20240521210827-dc1d01e5e52b/go.mod h1:LBc3zdVqtLQpXo78HN/DrMhf6PBcfyhlg/tVRrDL+sg=
github.com/signadot/go-sdk v0.3.8-0.20240522192013-3882db39d258 h1:ilo+iUvNMfCDxaS/msDJd28l2M5l+M2Tn28AnLG1wAI=
github.com/signadot/go-sdk v0.3.8-0.20240522192013-3882db39d258/go.mod h1:LBc3zdVqtLQpXo78HN/DrMhf6PBcfyhlg/tVRrDL+sg=
github.com/signadot/libconnect v0.1.1-0.20240306100356-4c865b888453 h1:omG9Iuz5vO0wNvpX/o1sAu+yuHnjHp6okvV9dDRCcd4=
github.com/signadot/libconnect v0.1.1-0.20240306100356-4c865b888453/go.mod h1:hS/87oYNXxPg5+sSQuHnQgc8q1xEsBIExnbLEeC46+8=
github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
Expand Down Expand Up @@ -355,12 +363,18 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs=
go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4=
go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg=
go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ=
go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30=
go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4=
go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik=
go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak=
go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw=
go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA=
go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0=
go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw=
go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
Expand Down
4 changes: 4 additions & 0 deletions internal/command/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"github.com/signadot/cli/internal/buildinfo"
"github.com/signadot/cli/internal/command/bug"
"github.com/signadot/cli/internal/command/cluster"
"github.com/signadot/cli/internal/command/jobrunnergroup"
"github.com/signadot/cli/internal/command/jobs"
"github.com/signadot/cli/internal/command/local"
"github.com/signadot/cli/internal/command/locald"
"github.com/signadot/cli/internal/command/resourceplugin"
Expand Down Expand Up @@ -39,6 +41,8 @@ func New() *cobra.Command {
local.New(cfg),
locald.New(cfg),
bug.New(cfg),
jobrunnergroup.New(cfg),
jobs.New(cfg),
)

return cmd
Expand Down
70 changes: 70 additions & 0 deletions internal/command/jobrunnergroup/apply.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package jobrunnergroup

import (
"errors"
"fmt"
"io"

"github.com/signadot/cli/internal/config"
"github.com/signadot/cli/internal/print"
runnergroups "github.com/signadot/go-sdk/client/runner_groups"
"github.com/signadot/go-sdk/models"
"github.com/spf13/cobra"
)

func newApply(jobrunnergroup *config.JobRunnerGroup) *cobra.Command {
cfg := &config.JobRunnerGroupApply{JobRunnerGroup: jobrunnergroup}

cmd := &cobra.Command{
Use: "apply -f FILENAME [ --set var1=val1 --set var2=val2 ... ]",
Short: "Create or update a jobrunnergroup with variable expansion",
davixcky marked this conversation as resolved.
Show resolved Hide resolved
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return apply(cfg, cmd.OutOrStdout(), cmd.ErrOrStderr(), args)
},
}

cfg.AddFlags(cmd)

return cmd
}

func apply(cfg *config.JobRunnerGroupApply, out, log io.Writer, _ []string) error {
if err := cfg.InitAPIConfig(); err != nil {
return err
}
if cfg.Filename == "" {
return errors.New("must specify jobrunnergroup request file with '-f' flag")
}
req, err := loadRunnerGroup(cfg.Filename, cfg.TemplateVals, false /*forDelete */)
if err != nil {
return err
}

params := runnergroups.NewApplyRunnergroupParams().
WithOrgName(cfg.Org).
WithRunnergroupName(req.Name).WithData(req)

result, err := cfg.Client.RunnerGroups.ApplyRunnergroup(params, nil)
if err != nil {
return err
}
resp := result.Payload

fmt.Fprintf(log, "Created runner %q (%q)\n\n", req.Name, cfg.RunnerGroupDashboardUrl(req.Name))

return writeOutput(cfg, out, resp)
}

func writeOutput(cfg *config.JobRunnerGroupApply, out io.Writer, resp *models.RunnergroupsRunnerGroup) error {
davixcky marked this conversation as resolved.
Show resolved Hide resolved
switch cfg.OutputFormat {
case config.OutputFormatDefault:
return nil
case config.OutputFormatJSON:
return print.RawJSON(out, resp)
case config.OutputFormatYAML:
return print.RawYAML(out, resp)
default:
return fmt.Errorf("unsupported output format: %q", cfg.OutputFormat)
}
}
26 changes: 26 additions & 0 deletions internal/command/jobrunnergroup/command.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package jobrunnergroup

import (
"github.com/signadot/cli/internal/config"
"github.com/spf13/cobra"
)

func New(api *config.API) *cobra.Command {
cfg := &config.JobRunnerGroup{API: api}

cmd := &cobra.Command{
Use: "jobrunnergroup",
Short: "Inspect and manipulate jobrunnergroup",
Aliases: []string{"jrg"},
}

// Subcommands
cmd.AddCommand(
newGet(cfg),
newList(cfg),
newApply(cfg),
newDelete(cfg),
davixcky marked this conversation as resolved.
Show resolved Hide resolved
)

return cmd
}
71 changes: 71 additions & 0 deletions internal/command/jobrunnergroup/delete.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package jobrunnergroup

import (
"errors"
"fmt"
"io"

"github.com/signadot/cli/internal/config"
runnergroups "github.com/signadot/go-sdk/client/runner_groups"
"github.com/spf13/cobra"
)

func newDelete(jobrunnergroup *config.JobRunnerGroup) *cobra.Command {
cfg := &config.JobRunnerGroupDelete{JobRunnerGroup: jobrunnergroup}

cmd := &cobra.Command{
Use: "delete { NAME | -f FILENAME [ --set var1=val1 --set var2=val2 ... ] }",
Short: "Delete jobrunnergroup",
Args: cobra.MaximumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
return rgDelete(cfg, cmd.ErrOrStderr(), args)
},
}

cfg.AddFlags(cmd)

return cmd
}

func rgDelete(cfg *config.JobRunnerGroupDelete, log io.Writer, args []string) error {
if err := cfg.InitAPIConfig(); err != nil {
return err
}
// Get the name either from a file or from the command line.
var name string
if cfg.Filename == "" {
if len(args) == 0 {
return errors.New("must specify filename (-f) or jobrunnergroup name")
}
if len(cfg.TemplateVals) != 0 {
return errors.New("must specify filename (-f) to use --set")
}
name = args[0]
} else {
if len(args) != 0 {
return errors.New("must not provide args when filename (-f) specified")
}
rg, err := loadRunnerGroup(cfg.Filename, cfg.TemplateVals, true /* forDelete */)
if err != nil {
return err
}
name = rg.Name
}

if name == "" {
return errors.New("jobrunnergroup name is required")
}

// Delete the jobrunnergroup.
params := runnergroups.NewDeleteRunnergroupParams().
WithOrgName(cfg.Org).
WithRunnergroupName(name)
_, err := cfg.Client.RunnerGroups.DeleteRunnergroup(params, nil)
if err != nil {
return err
}

fmt.Fprintf(log, "Deleted jobrunnergroup %q.\n\n", name)

return nil
}
48 changes: 48 additions & 0 deletions internal/command/jobrunnergroup/get.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package jobrunnergroup

import (
"fmt"
"io"

"github.com/signadot/cli/internal/config"
"github.com/signadot/cli/internal/print"
runnergroups "github.com/signadot/go-sdk/client/runner_groups"
"github.com/spf13/cobra"
)

func newGet(jobrunnergroup *config.JobRunnerGroup) *cobra.Command {
cfg := &config.JobRunnerGroupGet{JobRunnerGroup: jobrunnergroup}

cmd := &cobra.Command{
Use: "get NAME",
Short: "Get jobrunnergroup",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
return get(cfg, cmd.OutOrStdout(), args[0])
},
}

return cmd
}

func get(cfg *config.JobRunnerGroupGet, out io.Writer, name string) error {
if err := cfg.InitAPIConfig(); err != nil {
return err
}
params := runnergroups.NewGetRunnergroupParams().WithOrgName(cfg.Org).WithRunnergroupName(name)
resp, err := cfg.Client.RunnerGroups.GetRunnergroup(params, nil)
if err != nil {
return err
}

switch cfg.OutputFormat {
case config.OutputFormatDefault:
return printRunnerGroupDetails(cfg.JobRunnerGroup, out, resp.Payload)
case config.OutputFormatJSON:
return print.RawJSON(out, resp.Payload)
case config.OutputFormatYAML:
return print.RawYAML(out, resp.Payload)
default:
return fmt.Errorf("unsupported output format: %q", cfg.OutputFormat)
}
}
48 changes: 48 additions & 0 deletions internal/command/jobrunnergroup/list.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package jobrunnergroup

import (
"fmt"
"io"

runnergroups "github.com/signadot/go-sdk/client/runner_groups"

"github.com/signadot/cli/internal/config"
"github.com/signadot/cli/internal/print"
"github.com/spf13/cobra"
)

func newList(jobrunnergroup *config.JobRunnerGroup) *cobra.Command {
cfg := &config.JobRunnerGroupList{JobRunnerGroup: jobrunnergroup}

cmd := &cobra.Command{
Use: "list",
Short: "List runnergroups",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return list(cfg, cmd.OutOrStdout())
},
}

return cmd
}

func list(cfg *config.JobRunnerGroupList, out io.Writer) error {
if err := cfg.InitAPIConfig(); err != nil {
return err
}
resp, err := cfg.Client.RunnerGroups.ListRunnergroup(runnergroups.NewListRunnergroupParams().WithOrgName(cfg.Org), nil)
if err != nil {
return err
}

switch cfg.OutputFormat {
case config.OutputFormatDefault:
return printRunnerGroupTable(cfg, out, resp.Payload)
case config.OutputFormatJSON:
return print.RawJSON(out, resp.Payload)
case config.OutputFormatYAML:
return print.RawYAML(out, resp.Payload)
default:
return fmt.Errorf("unsupported output format: %q", cfg.OutputFormat)
}
}
Loading