Skip to content

Commit

Permalink
feat: move deploy code to main package
Browse files Browse the repository at this point in the history
  • Loading branch information
ecshreve committed Jun 7, 2023
1 parent 8abd9c6 commit a51a4cc
Show file tree
Hide file tree
Showing 10 changed files with 188 additions and 699 deletions.
34 changes: 34 additions & 0 deletions cmd/slomad/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,49 @@ import "github.com/ecshreve/slomad/cmd/slomad"

## Index

- [func RunDeploy(j *slomad.Job, confirm, force, verbose bool) error](<#func-rundeploy>)
- [func main()](<#func-main>)
- [func newNomadClient() (*nomadApi.Client, error)](<#func-newnomadclient>)
- [func planApiJob(nomadClient *nomadApi.Client, job *nomadApi.Job) error](<#func-planapijob>)
- [func submitApiJob(nomadClient *nomadApi.Client, job *nomadApi.Job) error](<#func-submitapijob>)


## func RunDeploy

```go
func RunDeploy(j *slomad.Job, confirm, force, verbose bool) error
```

RunDeploy runs a deploy for the given job.

## func main

```go
func main()
```

## func newNomadClient

```go
func newNomadClient() (*nomadApi.Client, error)
```

## func planApiJob

```go
func planApiJob(nomadClient *nomadApi.Client, job *nomadApi.Job) error
```

planApiJob creates a nomad api client, and runs a plan for the given job, printing the output diff.

## func submitApiJob

```go
func submitApiJob(nomadClient *nomadApi.Client, job *nomadApi.Job) error
```

submitApiJob creates a nomad api client, and submits the job to nomad.



Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)
69 changes: 29 additions & 40 deletions pkg/slomad/deploy.go → cmd/slomad/deploy.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,42 @@
package slomad
package main

import (
"fmt"
"os"

"github.com/ecshreve/slomad/pkg/slomad"
nomadApi "github.com/hashicorp/nomad/api"
"github.com/samsarahq/go/oops"
log "github.com/sirupsen/logrus"
)

// RunDeploy runs a deploy for the given job.
func RunDeploy(j *slomad.Job, confirm, force, verbose bool) error {
aj, err := j.GetNomadApiJob(force)
if err != nil {
return oops.Wrapf(err, "error creating api job for slomad job: %+v", j)
}

cl, err := newNomadClient()
if err != nil {
return oops.Wrapf(err, "error creating nomad api client")
}

if err = planApiJob(cl, aj); err != nil {
return oops.Wrapf(err, "error planning api job")
}

if confirm {
if err = submitApiJob(cl, aj); err != nil {
return oops.Wrapf(err, "error submitting api job")
}
} else {
log.Infof("Skipping job submission")
}

return nil
}

func newNomadClient() (*nomadApi.Client, error) {
nomadConfig := nomadApi.DefaultConfig()
nomadConfig.Address = os.Getenv("NOMAD_TARGET")
Expand Down Expand Up @@ -49,42 +77,3 @@ func submitApiJob(nomadClient *nomadApi.Client, job *nomadApi.Job) error {
log.Infof("Sucessfully submitted nomad job %s\n", *job.Name)
return nil
}

func SubmitApiJobSpecial(job *nomadApi.Job) error {
cl, err := newNomadClient()
if err != nil {
return oops.Wrapf(err, "error creating nomad api client")
}

if err = submitApiJob(cl, job); err != nil {
return oops.Wrapf(err, "error submitting api job")
}

return nil
}

func RunDeploy(j *Job, confirm, force, verbose bool) error {
cl, err := newNomadClient()
if err != nil {
return oops.Wrapf(err, "error creating nomad api client")
}

_, aj, err := j.ToNomadJob(force)
if err != nil {
return oops.Wrapf(err, "error creating api job for job: %+v", j)
}

if err = planApiJob(cl, aj); err != nil {
return oops.Wrapf(err, "error planning api job")
}

if confirm {
if err = submitApiJob(cl, aj); err != nil {
return oops.Wrapf(err, "error submitting api job")
}
} else {
log.Infof("Skipping job submission")
}

return nil
}
2 changes: 1 addition & 1 deletion cmd/slomad/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func main() {
}

for _, srvc := range services {
if err := slomad.RunDeploy(srvc, confirm, false, false); err != nil {
if err := RunDeploy(srvc, confirm, false, false); err != nil {
log.Fatalln(oops.Wrapf(err, "error deploying job"))
}
}
Expand Down
35 changes: 12 additions & 23 deletions internal/registry/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,16 @@ import "github.com/ecshreve/slomad/internal/registry"
## Index

- [Variables](<#variables>)
- [func DeployTraefikJob(confirm bool) error](<#func-deploytraefikjob>)
- [func getStorageArgs(storage string) []string](<#func-getstorageargs>)
- [func promConfigHelper(tmpl string) string](<#func-promconfighelper>)


## Variables

```go
var ControllerJob = smd.NewStorageJob(smd.JobParams{
var ControllerJob = smd.NewJob(smd.JobParams{
Name: "storage-controller",
Type: smd.SERVICE,
Type: smd.STORAGE_CONTROLLER,
Target: smd.WORKER,
TaskConfigParams: smd.TaskConfigParams{
Ports: smd.BasicPortConfig(0),
Expand All @@ -30,7 +29,7 @@ var ControllerJob = smd.NewStorageJob(smd.JobParams{
```

```go
var GrafanaJob = smd.NewAppJob(smd.JobParams{
var GrafanaJob = smd.NewJob(smd.JobParams{
Name: "grafana",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand All @@ -41,7 +40,6 @@ var GrafanaJob = smd.NewAppJob(smd.JobParams{
Env: map[string]string{"GF_SERVER_HTTP_PORT": "${NOMAD_PORT_http}"},
},
StorageParams: smd.StorageParams{
Storage: utils.StringPtr("grafana"),
Volumes: []smd.Volume{{Src: "grafana-vol", Dst: "/var/lib/grafana", Mount: true}},
},
})
Expand All @@ -50,7 +48,7 @@ var GrafanaJob = smd.NewAppJob(smd.JobParams{
TODO: mount nomad volume and persist data

```go
var InfluxDBJob = smd.NewAppJob(smd.JobParams{
var InfluxDBJob = smd.NewJob(smd.JobParams{
Name: "influxdb",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand All @@ -67,7 +65,7 @@ var InfluxDBJob = smd.NewAppJob(smd.JobParams{
```

```go
var LokiJob = smd.NewAppJob(smd.JobParams{
var LokiJob = smd.NewJob(smd.JobParams{
Name: "loki",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand All @@ -79,7 +77,7 @@ var LokiJob = smd.NewAppJob(smd.JobParams{
```

```go
var NodeExporterJob = smd.NewAppJob(smd.JobParams{
var NodeExporterJob = smd.NewJob(smd.JobParams{
Name: "node-exporter",
Type: smd.SYSTEM,
TaskConfigParams: smd.TaskConfigParams{
Expand All @@ -104,9 +102,9 @@ var NodeExporterJob = smd.NewAppJob(smd.JobParams{
```

```go
var NodeJob = smd.NewStorageJob(smd.JobParams{
var NodeJob = smd.NewJob(smd.JobParams{
Name: "storage-node",
Type: smd.SYSTEM,
Type: smd.STORAGE_NODE,
TaskConfigParams: smd.TaskConfigParams{
Ports: smd.BasicPortConfig(0),
Shape: smd.TINY_TASK,
Expand All @@ -118,7 +116,7 @@ var NodeJob = smd.NewStorageJob(smd.JobParams{
PrometheusJob is a Job for the Prometheus service.

```go
var PrometheusJob = smd.NewAppJob(smd.JobParams{
var PrometheusJob = smd.NewJob(smd.JobParams{
Name: "prometheus",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand All @@ -128,14 +126,13 @@ var PrometheusJob = smd.NewAppJob(smd.JobParams{
Templates: map[string]string{"prometheus.yml": promConfigHelper(prometheusConfig)},
},
StorageParams: smd.StorageParams{
Storage: utils.StringPtr("prometheus"),
Volumes: []smd.Volume{{Src: "local/config", Dst: "/etc/prometheus"}},
},
})
```

```go
var PromtailJob = smd.NewAppJob(smd.JobParams{
var PromtailJob = smd.NewJob(smd.JobParams{
Name: "promtail",
Type: smd.SYSTEM,
TaskConfigParams: smd.TaskConfigParams{
Expand All @@ -158,7 +155,7 @@ var PromtailJob = smd.NewAppJob(smd.JobParams{
```

```go
var SpeedtestJob = smd.NewAppJob(smd.JobParams{
var SpeedtestJob = smd.NewJob(smd.JobParams{
Name: "speedtest",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand Down Expand Up @@ -298,7 +295,7 @@ var TraefikJob = nomadStructs.Job{
```

```go
var WhoamiJob = smd.NewAppJob(smd.JobParams{
var WhoamiJob = smd.NewJob(smd.JobParams{
Name: "whoami",
Type: smd.SERVICE,
Target: smd.WORKER,
Expand All @@ -318,14 +315,6 @@ var prometheusConfig string
var promtailConfig string
```

## func DeployTraefikJob

```go
func DeployTraefikJob(confirm bool) error
```

DeployTraefikJob deploys the Traefik job to Nomad.

## func getStorageArgs

```go
Expand Down
Loading

0 comments on commit a51a4cc

Please sign in to comment.