Merge pull request #27 from weaveworks/wcloud-events

Add wcloud events, update flags and error nicely when there is no config
This commit is contained in:
Tom Wilkie
2016-07-18 14:13:49 +01:00
committed by GitHub
2 changed files with 50 additions and 6 deletions

View File

@@ -52,6 +52,8 @@ func main() {
config(c, os.Args[2:]) config(c, os.Args[2:])
case "logs": case "logs":
logs(c, os.Args[2:]) logs(c, os.Args[2:])
case "events":
events(c, os.Args[2:])
case "help": case "help":
usage() usage()
default: default:
@@ -80,14 +82,17 @@ func deploy(c Client, args []string) {
} }
func list(c Client, args []string) { func list(c Client, args []string) {
flags := flag.NewFlagSet("list", flag.ContinueOnError) var (
page := flags.Int("page", 0, "Zero based index of page to list.") flags = flag.NewFlagSet("", flag.ContinueOnError)
pagesize := flags.Int("page-size", 10, "Number of results per page") since = flags.Duration("since", 7*24*time.Hour, "How far back to fetch results")
)
if err := flags.Parse(args); err != nil { if err := flags.Parse(args); err != nil {
usage() usage()
return return
} }
deployments, err := c.GetDeployments(*page, *pagesize) through := time.Now()
from := through.Add(-*since)
deployments, err := c.GetDeployments(through.Unix(), from.Unix())
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
os.Exit(1) os.Exit(1)
@@ -109,6 +114,26 @@ func list(c Client, args []string) {
table.Render() table.Render()
} }
func events(c Client, args []string) {
var (
flags = flag.NewFlagSet("", flag.ContinueOnError)
since = flags.Duration("since", 7*24*time.Hour, "How far back to fetch results")
)
if err := flags.Parse(args); err != nil {
usage()
return
}
through := time.Now()
from := through.Add(-*since)
events, err := c.GetEvents(through.Unix(), from.Unix())
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
fmt.Println("events: ", string(events))
}
func loadConfig(filename string) (*Config, error) { func loadConfig(filename string) (*Config, error) {
extension := filepath.Ext(filename) extension := filepath.Ext(filename)
var config Config var config Config

View File

@@ -53,8 +53,8 @@ func (c Client) Deploy(deployment Deployment) error {
} }
// GetDeployments returns a list of deployments // GetDeployments returns a list of deployments
func (c Client) GetDeployments(page, pagesize int) ([]Deployment, error) { func (c Client) GetDeployments(from, through int64) ([]Deployment, error) {
req, err := c.newRequest("GET", fmt.Sprintf("/api/deploy?page=%d&pagesize=%d", page, pagesize), nil) req, err := c.newRequest("GET", fmt.Sprintf("/api/deploy?from=%d&through=%d", from, through), nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -74,6 +74,22 @@ func (c Client) GetDeployments(page, pagesize int) ([]Deployment, error) {
return response.Deployments, nil return response.Deployments, nil
} }
// GetEvents returns the raw events.
func (c Client) GetEvents(from, through int64) ([]byte, error) {
req, err := c.newRequest("GET", fmt.Sprintf("/api/deploy/from=%d&through=%d", from, through), nil)
if err != nil {
return nil, err
}
res, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
if res.StatusCode != 200 {
return nil, fmt.Errorf("Error making request: %s", res.Status)
}
return ioutil.ReadAll(res.Body)
}
// GetConfig returns the current Config // GetConfig returns the current Config
func (c Client) GetConfig() (*Config, error) { func (c Client) GetConfig() (*Config, error) {
req, err := c.newRequest("GET", "/api/config/deploy", nil) req, err := c.newRequest("GET", "/api/config/deploy", nil)
@@ -84,6 +100,9 @@ func (c Client) GetConfig() (*Config, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if res.StatusCode == 404 {
return nil, fmt.Errorf("No configuration uploaded yet.")
}
if res.StatusCode != 200 { if res.StatusCode != 200 {
return nil, fmt.Errorf("Error making request: %s", res.Status) return nil, fmt.Errorf("Error making request: %s", res.Status)
} }