From a70718576df400010be28e20e2c04823c0ffa9bd Mon Sep 17 00:00:00 2001 From: Karolis Rusenas Date: Sun, 28 Apr 2019 17:03:52 +0100 Subject: [PATCH] tracked images endpoint --- trigger/http/tracked_endpoint.go | 31 +++++++++++++++++++++++++++++++ types/tracked_images.go | 19 ++++++++++--------- util/image/parse.go | 6 +++--- 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 trigger/http/tracked_endpoint.go diff --git a/trigger/http/tracked_endpoint.go b/trigger/http/tracked_endpoint.go new file mode 100644 index 00000000..b2486c19 --- /dev/null +++ b/trigger/http/tracked_endpoint.go @@ -0,0 +1,31 @@ +package http + +import "net/http" + +type trackedImage struct { + Image string `json:"image"` + Trigger string `json:"trigger"` + PollSchedule string `json:"poll_schedule"` + Provider string `json:"provider"` + Namespace string `json:"namespace"` + Policy string `json:"policy"` +} + +func (s *TriggerServer) trackedHandler(resp http.ResponseWriter, req *http.Request) { + trackedImages, err := s.providers.TrackedImages() + + var imgs []trackedImage + + for _, img := range trackedImages { + imgs = append(imgs, trackedImage{ + Image: img.Image.Name(), + Trigger: img.Trigger.String(), + PollSchedule: img.PollSchedule, + Provider: img.Provider, + Namespace: img.Namespace, + Policy: img.Policy.Name(), + }) + } + + response(&imgs, 200, err, resp, req) +} diff --git a/types/tracked_images.go b/types/tracked_images.go index 5b84be68..adf08348 100644 --- a/types/tracked_images.go +++ b/types/tracked_images.go @@ -13,22 +13,23 @@ type Credentials struct { // TrackedImage - tracked image data+metadata type TrackedImage struct { - Image *image.Reference - Trigger TriggerType - PollSchedule string - Provider string - Namespace string - Secrets []string - Meta map[string]string // metadata supplied by providers + Image *image.Reference `json:"image"` + Trigger TriggerType `json:"trigger"` + PollSchedule string `json:"poll_schedule"` + Provider string `json:"provider"` + Namespace string `json:"namespace"` + Secrets []string `json:"secrets"` + Meta map[string]string `json:"meta"` // metadata supplied by providers // a list of pre-release tags, ie: 1.0.0-dev, 1.5.0-prod get translated into // dev, prod // combined semver tags - Tags []string - Policy Policy + Tags []string `json:"tags"` + Policy Policy `json:"policy"` } type Policy interface { ShouldUpdate(current, new string) (bool, error) + Name() string } func (i TrackedImage) String() string { diff --git a/util/image/parse.go b/util/image/parse.go index 2e927fde..4600f785 100644 --- a/util/image/parse.go +++ b/util/image/parse.go @@ -6,9 +6,9 @@ import ( // Reference is an opaque object that include identifier such as a name, tag, repository, registry, etc... type Reference struct { - named Named - tag string - scheme string // registry scheme, i.e. http, https + named Named `json:"named"` + tag string `json:"tag"` + scheme string `json:"scheme"` // registry scheme, i.e. http, https } func (r Reference) String() string {