Skip to content

Commit

Permalink
add glob support for nomad jobs defaulting to **/*.nomad
Browse files Browse the repository at this point in the history
  • Loading branch information
prabirshrestha committed Aug 1, 2023
1 parent a27bb84 commit 516cd87
Show file tree
Hide file tree
Showing 5 changed files with 157 additions and 217 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Flags:
--branch string git branch (default "main")
-h, --help help for git
--password string SSH private key password
--path string path relative to the repository root (default "/")
--path string glob pattern relative to the repository root (default "**/*.nomad")
--ssh-insecure-ignore-host-key Ignore insecure SSH host key
--ssh-key string SSH private key
--url string git repository URL
Expand All @@ -41,7 +41,7 @@ Global Flags:

Use it like this:
```
./nomoperator bootstrap git --url https://github.com/jonasvinther/nomad-state.git --path /jobs --branch main
./nomoperator bootstrap git --url https://github.com/jonasvinther/nomad-state.git --path jobs/*.nomad --branch main
```

## Run as Nomad job
Expand All @@ -54,7 +54,7 @@ job "nomoperator" {
driver = "exec"
config {
command = "nomoperator"
args = ["bootstrap", "git", "--url", "https://github.com/jonasvinther/nomad-state.git", "--branch", "main", "--path", "/prod-env"]
args = ["bootstrap", "git", "--url", "https://github.com/jonasvinther/nomad-state.git", "--branch", "main", "--path", "jobs/*.nomad"]
}
artifact {
source = "https://github.com/jonasvinther/nomad-gitops-operator/releases/download/v0.0.1/nomad-gitops-operator_0.0.1_linux_amd64.tar.gz"
Expand Down
12 changes: 5 additions & 7 deletions cmd/bootstrap_git.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"net/url"
"time"

"github.com/go-git/go-billy/v5/util"
"github.com/go-git/go-git/v5"
"github.com/spf13/cobra"

Expand All @@ -30,7 +31,7 @@ func init() {
bootstrapCmd.AddCommand(bootstrapGitCmd)
bootstrapGitCmd.Flags().StringVar(&gitArgs.url, "url", "", "git repository URL")
bootstrapGitCmd.Flags().StringVar(&gitArgs.branch, "branch", "main", "git branch")
bootstrapGitCmd.Flags().StringVar(&gitArgs.path, "path", "/", "path relative to the repository root")
bootstrapGitCmd.Flags().StringVar(&gitArgs.path, "path", "**/*.nomad", "glob pattern relative to the repository root")
bootstrapGitCmd.Flags().StringVar(&gitArgs.username, "username", "git", "SSH username")
bootstrapGitCmd.Flags().StringVar(&gitArgs.username, "password", "", "SSH private key password")
bootstrapGitCmd.Flags().StringVar(&gitArgs.sshkey, "ssh-key", "", "SSH private key")
Expand All @@ -43,7 +44,6 @@ var bootstrapGitCmd = &cobra.Command{
Long: ``,
// Args: cobra.MinimumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {

// Create Nomad client
client, err := nomad.NewClient()
if err != nil {
Expand All @@ -68,17 +68,15 @@ var bootstrapGitCmd = &cobra.Command{
worktree.Pull(&git.PullOptions{RemoteName: "origin"})

fs := worktree.Filesystem
path := gitArgs.path
files, err := fs.ReadDir(path)
files, err := util.Glob(fs, gitArgs.path)
if err != nil {
return err
}

desiredStateJobs := make(map[string]interface{})

// Parse and apply all jobs from within the git repo
for _, file := range files {
filePath := fs.Join(path, file.Name())
for _, filePath := range files {
f, err := fs.Open(filePath)
if err != nil {
return err
Expand All @@ -99,7 +97,7 @@ var bootstrapGitCmd = &cobra.Command{
desiredStateJobs[job.GetName()] = job

// Apply job
fmt.Printf("Applying job [%s]\n", job.GetName())
fmt.Printf("Applying job [%s][%s]\n", job.GetName(), filePath)
_, err = client.ApplyJob(job)
if err != nil {
return err
Expand Down
12 changes: 7 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@ module nomad-gitops-operator
go 1.18

require (
golang.org/x/crypto v0.11.0
github.com/go-git/go-billy/v5 v5.4.1
github.com/go-git/go-git/v5 v5.8.0
github.com/hashicorp/nomad-openapi v0.0.0-20230523183328-33c9d2d9ac36
github.com/spf13/cobra v1.7.0
github.com/spf13/viper v1.16.0
golang.org/x/crypto v0.11.0
)

require (
cloud.google.com/go v0.110.2 // indirect
cloud.google.com/go/iam v1.1.1 // indirect
cloud.google.com/go/storage v1.29.0 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect
github.com/acomagu/bufpipe v1.0.4 // indirect
Expand All @@ -21,16 +24,15 @@ require (
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/googleapis/gax-go/v2 v2.11.0 // indirect
github.com/hashicorp/cronexpr v1.1.2 // indirect
github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
github.com/imdario/mergo v0.3.16 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.9 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/sergi/go-diff v1.3.1 // indirect
Expand All @@ -41,17 +43,17 @@ require (
github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.4.2 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
golang.org/x/crypto v0.11.0 // indirect
golang.org/x/mod v0.12.0 // indirect
golang.org/x/net v0.12.0 // indirect
golang.org/x/oauth2 v0.10.0 // indirect
golang.org/x/sys v0.10.0 // indirect
golang.org/x/text v0.11.0 // indirect
golang.org/x/tools v0.11.0 // indirect
google.golang.org/api v0.126.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading

0 comments on commit 516cd87

Please sign in to comment.