From e10bf387f6d5a91e9e7b02b76ee8d2748d7d6f60 Mon Sep 17 00:00:00 2001 From: Felisia Martini Date: Tue, 15 Dec 2020 13:50:29 +0000 Subject: [PATCH] Updated v7 folder --- v7/domain/apiresponses/responses.go | 5 +++-- v7/domain/service_broker.go | 10 ++++++++++ v7/handlers/provision.go | 8 ++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/v7/domain/apiresponses/responses.go b/v7/domain/apiresponses/responses.go index 3b4655c5..2c8c6c81 100644 --- a/v7/domain/apiresponses/responses.go +++ b/v7/domain/apiresponses/responses.go @@ -29,8 +29,9 @@ type CatalogResponse struct { } type ProvisioningResponse struct { - DashboardURL string `json:"dashboard_url,omitempty"` - OperationData string `json:"operation,omitempty"` + DashboardURL string `json:"dashboard_url,omitempty"` + OperationData string `json:"operation,omitempty"` + Metadata interface{} `json:"metadata,omitempty"` } type GetInstanceResponse struct { diff --git a/v7/domain/service_broker.go b/v7/domain/service_broker.go index 9aff08e1..ad186ad3 100644 --- a/v7/domain/service_broker.go +++ b/v7/domain/service_broker.go @@ -94,6 +94,12 @@ type ProvisionedServiceSpec struct { AlreadyExists bool DashboardURL string OperationData string + Metadata InstanceMetadata +} + +type InstanceMetadata struct { + Labels map[string]string `json:"labels,omitempty"` + Attributes map[string]string `json:"attributes,omitempty"` } type DeprovisionDetails struct { @@ -205,6 +211,10 @@ func (d BindDetails) GetRawParameters() json.RawMessage { return d.RawParameters } +func (m InstanceMetadata) IsEmpty() bool { + return len(m.Attributes) == 0 && len(m.Labels) == 0 +} + func (d UpdateDetails) GetRawContext() json.RawMessage { return d.RawContext } diff --git a/v7/handlers/provision.go b/v7/handlers/provision.go index 1d9677d5..6e5c0c1b 100644 --- a/v7/handlers/provision.go +++ b/v7/handlers/provision.go @@ -111,18 +111,26 @@ func (h *APIHandler) Provision(w http.ResponseWriter, req *http.Request) { return } + var metadata interface{} + if !provisionResponse.Metadata.IsEmpty() { + metadata = provisionResponse.Metadata + } + if provisionResponse.AlreadyExists { h.respond(w, http.StatusOK, apiresponses.ProvisioningResponse{ DashboardURL: provisionResponse.DashboardURL, + Metadata: metadata, }) } else if provisionResponse.IsAsync { h.respond(w, http.StatusAccepted, apiresponses.ProvisioningResponse{ DashboardURL: provisionResponse.DashboardURL, OperationData: provisionResponse.OperationData, + Metadata: metadata, }) } else { h.respond(w, http.StatusCreated, apiresponses.ProvisioningResponse{ DashboardURL: provisionResponse.DashboardURL, + Metadata: metadata, }) } }