target: add constructor
We only support local target for now, but this avoids having to open code it. Signed-off-by: Tom Gundersen <teg@jklm.no>
This commit is contained in:
parent
f880581a14
commit
5df6874b94
5 changed files with 20 additions and 19 deletions
|
|
@ -10,7 +10,7 @@ import (
|
||||||
type Job struct {
|
type Job struct {
|
||||||
ComposeID uuid.UUID
|
ComposeID uuid.UUID
|
||||||
Pipeline pipeline.Pipeline
|
Pipeline pipeline.Pipeline
|
||||||
Targets []target.Target
|
Targets []*target.Target
|
||||||
}
|
}
|
||||||
|
|
||||||
type Status struct {
|
type Status struct {
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ func (api *API) addJobHandler(writer http.ResponseWriter, request *http.Request,
|
||||||
}
|
}
|
||||||
type replyBody struct {
|
type replyBody struct {
|
||||||
Pipeline pipeline.Pipeline `json:"pipeline"`
|
Pipeline pipeline.Pipeline `json:"pipeline"`
|
||||||
Targets []target.Target `json:"targets"`
|
Targets []*target.Target `json:"targets"`
|
||||||
}
|
}
|
||||||
|
|
||||||
contentType := request.Header["Content-Type"]
|
contentType := request.Header["Content-Type"]
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ func testRoute(t *testing.T, api *jobqueue.API, method, path, body string, expec
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBasic(t *testing.T) {
|
func TestBasic(t *testing.T) {
|
||||||
expected_job := `{"pipeline":{"assembler":{"name":"org.osbuild.tar","options":{"filename":"image.tar"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`
|
expected_job := `{"pipeline":{"assembler":{"name":"org.osbuild.tar","options":{"filename":"image.tar"}}},"targets":[{"name":"org.osbuild.local","options":{"location":"/var/lib/osbuild-composer/outputs/ffffffff-ffff-ffff-ffff-ffffffffffff"}}]}`
|
||||||
var cases = []struct {
|
var cases = []struct {
|
||||||
Method string
|
Method string
|
||||||
Path string
|
Path string
|
||||||
|
|
@ -104,12 +104,7 @@ func TestBasic(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Targets: []target.Target{{
|
Targets: []*target.Target{target.New(id)},
|
||||||
Name: "org.osbuild.local",
|
|
||||||
Options: target.LocalOptions{
|
|
||||||
Location: "/var/lib/osbuild-composer/ffffffff-ffff-ffff-ffff-ffffffffffff",
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
testRoute(t, api, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON)
|
testRoute(t, api, c.Method, c.Path, c.Body, c.ExpectedStatus, c.ExpectedJSON)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,21 @@
|
||||||
package target
|
package target
|
||||||
|
|
||||||
|
import "github.com/google/uuid"
|
||||||
|
|
||||||
type Target struct {
|
type Target struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Options LocalOptions `json:"options"`
|
Options Options `json:"options"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type LocalOptions struct {
|
type Options struct {
|
||||||
Location string `json:"location"`
|
Location string `json:"location"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func New(ComposeID uuid.UUID) *Target {
|
||||||
|
return &Target{
|
||||||
|
Name: "org.osbuild.local",
|
||||||
|
Options: Options{
|
||||||
|
Location: "/var/lib/osbuild-composer/outputs/" + ComposeID.String(),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ type blueprintPackage struct {
|
||||||
type compose struct {
|
type compose struct {
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
Pipeline pipeline.Pipeline `json:"pipeline"`
|
Pipeline pipeline.Pipeline `json:"pipeline"`
|
||||||
Targets []target.Target `json:"targets"`
|
Targets []*target.Target `json:"targets"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func newStore(initialState []byte, stateChannel chan<- []byte, pendingJobs chan<- job.Job, jobUpdates <-chan job.Status) *store {
|
func newStore(initialState []byte, stateChannel chan<- []byte, pendingJobs chan<- job.Job, jobUpdates <-chan job.Status) *store {
|
||||||
|
|
@ -190,12 +190,7 @@ func (s *store) deleteBlueprintFromWorkspace(name string) {
|
||||||
|
|
||||||
func (s *store) addCompose(composeID uuid.UUID, bp blueprint, composeType string) {
|
func (s *store) addCompose(composeID uuid.UUID, bp blueprint, composeType string) {
|
||||||
pipeline := bp.translateToPipeline(composeType)
|
pipeline := bp.translateToPipeline(composeType)
|
||||||
targets := []target.Target{{
|
targets := []*target.Target{target.New(composeID)}
|
||||||
Name: "org.osbuild.local",
|
|
||||||
Options: target.LocalOptions{
|
|
||||||
Location: "/var/lib/osbuild-composer/" + composeID.String(),
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
s.change(func() {
|
s.change(func() {
|
||||||
s.Composes[composeID] = compose{"pending", pipeline, targets}
|
s.Composes[composeID] = compose{"pending", pipeline, targets}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue