simple check option

This commit is contained in:
anianz
2020-11-11 12:22:16 +01:00
parent b266699086
commit cbbfd94fbb
4 changed files with 67 additions and 17 deletions

View File

@@ -4,7 +4,8 @@ WORKDIR /tmp/nomad-resource
COPY . .
RUN go build -o dist/out out/main.go && \
go build -o dist/in in/main.go
go build -o dist/in in/main.go && \
go build -o dist/check check/main.go
FROM alpine:edge

38
check/main.go Normal file
View File

@@ -0,0 +1,38 @@
package main
import (
"encoding/json"
"os"
resource "github.com/cioplenu/concourse-nomad-resource"
"github.com/cioplenu/concourse-nomad-resource/common"
)
type Request struct {
Source resource.Source `json:"source"`
Version resource.Version `json:"version,omitempty"`
}
func main() {
var request Request
err := json.NewDecoder(os.Stdin).Decode(&request)
common.Check(err, "Error parsing request")
lastVersion := request.Version.Version
history := common.GetHistory(request.Source)
versions := make([]resource.Version, 0)
for _, jobVersion := range history {
if lastVersion != 0 && lastVersion > jobVersion.Version {
continue
}
versions = append(versions, resource.Version{jobVersion.Version})
if lastVersion == 0 {
break
}
}
json.NewEncoder(os.Stdout).Encode(versions)
}

View File

@@ -1,8 +1,13 @@
package common
import (
"bytes"
"encoding/json"
"fmt"
"os"
"os/exec"
resource "github.com/cioplenu/concourse-nomad-resource"
)
func Check(err error, msg string) {
@@ -11,3 +16,24 @@ func Check(err error, msg string) {
os.Exit(1)
}
}
func GetHistory(source resource.Source) []resource.JobVersion {
cmd := exec.Command(
"nomad",
"job",
"history",
"-json",
"-address="+source.URL,
"-token="+source.Token,
source.Name,
)
var histResp bytes.Buffer
cmd.Stdout = &histResp
err := cmd.Run()
Check(err, "Error checking versions")
var history []resource.JobVersion
json.Unmarshal(histResp.Bytes(), &history)
return history
}

View File

@@ -86,22 +86,7 @@ func main() {
fmt.Fprint(os.Stderr, out.String())
cmd = exec.Command(
"nomad",
"job",
"history",
"-json",
"-address="+config.Source.URL,
"-token="+config.Source.Token,
config.Source.Name,
)
var histResp bytes.Buffer
cmd.Stdout = &histResp
err = cmd.Run()
common.Check(err, "Error checking versions")
var history []resource.JobVersion
json.Unmarshal(histResp.Bytes(), &history)
history := common.GetHistory(config.Source)
response := Response{
Version: resource.Version{