Skip to content

Commit

Permalink
Add retrieve deployments from database in json
Browse files Browse the repository at this point in the history
Signed-off-by: Xabier Larrakoetxea <slok69@gmail.com>
  • Loading branch information
slok committed Jul 20, 2015
1 parent 26fa127 commit 494f226
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 3 deletions.
43 changes: 40 additions & 3 deletions data/deployment.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package data

import (
"bytes"
"encoding/json"
"fmt"
"strconv"
Expand All @@ -18,9 +19,10 @@ const (
StatusFailure = "failure"

// ------------- Key formats ----------------
DeployBucketDbKey = "deployments"
DeployCounterKeyFmt = "%s:counter"
DeployObjectDbKeyFmt = "%s:data:%d"
DeployBucketDbKey = "deployments"
DeployCounterKeyFmt = "%s:counter"
DeployObjectDbKeyFmt = "%s:data:%d"
DeployObjectListDbKeyFmt = "%s:data:"
// This key will contain the deployment json body
// examples:
// - {NAMESPACE}:data:{INCREMENTAL DEPLOY ID}
Expand Down Expand Up @@ -148,6 +150,41 @@ func (d *Deployment) Save() error {
return nil
}

func ListDeploymentsAsJson(namespace string) ([][]byte, error) {
d := [][]byte{}

err := db.Conn.View(func(tx *bolt.Tx) error {
c := tx.Bucket([]byte(DeployBucketDbKey)).Cursor()

prefix := []byte(fmt.Sprintf(DeployObjectListDbKeyFmt, namespace))

for k, v := c.Seek(prefix); bytes.HasPrefix(k, prefix); k, v = c.Next() {
d = append(d, v)
}
return nil
})

log.WithFields(log.Fields{
"namespace": namespace,
"length": len(d),
"type": "json",
}).Debug("Deployments retrieved from database")
return d, err
}

//func ListDeployments() ([]Deployment, error) {
// d := []Deployment{}
//
// err := db.Conn.View(func(tx *bolt.Tx) error {
// bucket, err := tx.Bucket([]byte(DeployBucketDbKey))
// if err != nil {
// return err
// }
//
// })
// return d, err
//}

// Status represents the current status of a deployment
type Status struct {
Url string `json:"url"`
Expand Down
29 changes: 29 additions & 0 deletions data/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,3 +172,32 @@ func (s *DatabaseModelDeploymentSuite) TestDeploymentSave(c *C) {
return nil
})
}

func (s *DatabaseModelDeploymentSuite) TestDeploymentListAsJson(c *C) {
for _, i := range s.deployments {
i.Save()
}
ds, _ := ListDeploymentsAsJson(s.deployments[0].Namespace)

c.Assert(len(ds), Equals, len(s.deployments))

dj1 := Deployment{}
dj2 := Deployment{}
json.Unmarshal(ds[0], &dj1)
json.Unmarshal(ds[1], &dj2)

c.Assert(dj1.Id, Equals, int64(1))
c.Assert(dj2.Id, Equals, int64(2))

c.Assert(dj1.Sha, Equals, "d583d658d6da0b2f95ab3bcd27cd7d4bd93c3fc0")
c.Assert(dj2.Sha, Equals, "980670afcebfd86727505b3061d8667195234816")

c.Assert(dj1.Ref, Equals, "master")
c.Assert(dj2.Ref, Equals, "fix-#4213")

c.Assert(dj1.Environment, Equals, "production")
c.Assert(dj2.Environment, Equals, "preproduction")

c.Assert(dj1.Task, Equals, "deploy")
c.Assert(dj2.Task, Equals, "deploy")
}

0 comments on commit 494f226

Please sign in to comment.