data/:label API stores extra data for a deployment
This commit is contained in:
parent
e123fd88a1
commit
f31d730e50
|
@ -2,6 +2,7 @@
|
|||
|
||||
api=${api:-"http://localhost:3000"}
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
for bosh in $(ls upload/fixtures/bosh*.json); do
|
||||
|
@ -15,8 +16,8 @@ for boshdeployment in $(ls upload/fixtures/deployment-*.json); do
|
|||
done
|
||||
for data in $(ls upload/fixtures/data*.json); do
|
||||
reallyuuid=$(cat $data | jq -r ".reallyuuid")
|
||||
deployment_name=$(cat $data | jq -r ".deployment_name")
|
||||
deployment_name=$(cat $data | jq -r ".deploymentname")
|
||||
label=$(cat $data | jq -r ".label")
|
||||
curl ${api}/upload/${reallyuuid}/deployments/${deployment_name}/data/${label} \
|
||||
-v -X POST -u admin:admin -d "$(cat $boshdeployment)"
|
||||
-v -X POST -u admin:admin -d "$(cat $data)"
|
||||
done
|
||||
|
|
|
@ -36,6 +36,22 @@ type Deployment struct {
|
|||
Version string
|
||||
}
|
||||
CloudConfig string
|
||||
ExtraData ExtraData
|
||||
}
|
||||
|
||||
// ExtraData is uploaded data about a running Deployment
|
||||
type ExtraData map[string]*DeploymentData
|
||||
|
||||
// DeploymentData describes extra data about a running Deployment
|
||||
type DeploymentData struct {
|
||||
ReallyUUID string
|
||||
DeploymentName string
|
||||
Label string
|
||||
Data []struct {
|
||||
Indicator string
|
||||
Value string
|
||||
Label string
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateBOSH constructs a BOSH from the uploaded BOSH data
|
||||
|
@ -62,10 +78,22 @@ func (bosh *BOSH) UpdateDeployment(uploadedDeployment *upload.BOSHDeployment) {
|
|||
Releases: uploadedDeployment.Releases,
|
||||
Stemcells: uploadedDeployment.Stemcells,
|
||||
CloudConfig: uploadedDeployment.CloudConfig,
|
||||
ExtraData: ExtraData{},
|
||||
}
|
||||
bosh.Deployments[deployment.Name] = deployment
|
||||
}
|
||||
|
||||
// UpdateDeploymentData adds/updates addition data about a BOSH deployment in action
|
||||
func (deployment *Deployment) UpdateDeploymentData(uploadedData *upload.DeploymentData) {
|
||||
data := &DeploymentData{
|
||||
ReallyUUID: uploadedData.ReallyUUID,
|
||||
DeploymentName: uploadedData.DeploymentName,
|
||||
Label: uploadedData.Label,
|
||||
Data: uploadedData.Data,
|
||||
}
|
||||
deployment.ExtraData[data.Label] = data
|
||||
}
|
||||
|
||||
// NewDeploymentsPerBOSH constructs a new mapping of Deployments to each BOSH
|
||||
func NewDeploymentsPerBOSH() DeploymentsPerBOSH {
|
||||
return DeploymentsPerBOSH{}
|
||||
|
|
17
main.go
17
main.go
|
@ -59,14 +59,21 @@ func updateDeployment(params martini.Params, uploadedDeployment upload.BOSHDeplo
|
|||
return 200, ""
|
||||
}
|
||||
|
||||
func updateDeploymentExtraData(params martini.Params, extraData upload.ExtraData) (int, string) {
|
||||
func updateDeploymentExtraData(params martini.Params, data upload.DeploymentData) (int, string) {
|
||||
reallyUUID := params["reallyuuid"]
|
||||
deploymentName := params["name"]
|
||||
extraLabel := params["label"]
|
||||
|
||||
// bosh := db[reallyUUID]
|
||||
bosh := db[reallyUUID]
|
||||
if bosh == nil {
|
||||
return 404, fmt.Sprintf("unknown UUID `%s'", reallyUUID)
|
||||
}
|
||||
deployment := bosh.Deployments[deploymentName]
|
||||
if deployment == nil {
|
||||
return 404, fmt.Sprintf("unknown deployment name `%s'", deploymentName)
|
||||
}
|
||||
|
||||
fmt.Println(reallyUUID, deploymentName, extraLabel)
|
||||
fmt.Printf("%#v\n", data)
|
||||
deployment.UpdateDeploymentData(&data)
|
||||
return 200, ""
|
||||
}
|
||||
|
||||
|
@ -102,7 +109,7 @@ func runWebserver(c *cli.Context) {
|
|||
m.Get("/db", getDatabase)
|
||||
m.Post("/upload", binding.Json(upload.BOSH{}), updateBOSH)
|
||||
m.Post("/upload/:reallyuuid/deployments/:name", binding.Json(upload.BOSHDeployment{}), updateDeployment)
|
||||
m.Post("/upload/:reallyuuid/deployments/:name/data/:label", binding.Json(upload.ExtraData{}), updateDeploymentExtraData)
|
||||
m.Post("/upload/:reallyuuid/deployments/:name/data/:label", binding.Json(upload.DeploymentData{}), updateDeploymentExtraData)
|
||||
m.Run()
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"reallyuuid": "10.10.10.11-uuid-aws-bosh-production",
|
||||
"deployment_name": "cf-aws-prod",
|
||||
"deploymentname": "cf-aws-prod",
|
||||
"label": "backups-rds",
|
||||
"data": [
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"reallyuuid": "10.10.10.11-uuid-aws-bosh-production",
|
||||
"deployment_name": "cf-aws-prod",
|
||||
"deploymentname": "cf-aws-prod",
|
||||
"label": "backups-nfs",
|
||||
"data": [
|
||||
{
|
||||
|
|
|
@ -25,6 +25,14 @@ type BOSHDeployment struct {
|
|||
CloudConfig string `form:"cloudconfig"`
|
||||
}
|
||||
|
||||
// ExtraData captures some extra data about a deployment from a plugin
|
||||
type ExtraData struct {
|
||||
// DeploymentData captures some extra data about a deployment from a plugin
|
||||
type DeploymentData struct {
|
||||
ReallyUUID string `json:"reallyuuid"`
|
||||
DeploymentName string `json:"deploymentname"`
|
||||
Label string `json:"label"`
|
||||
Data []struct {
|
||||
Indicator string
|
||||
Value string
|
||||
Label string
|
||||
} `json:"data"`
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue