@@ -2,38 +2,73 @@ package main
22
33import (
44 "errors"
5+ "flag"
6+ "net/url"
57 "os"
68
7- log "github.com/Sirupsen/logrus"
89 "github.com/docker/infrakit/pkg/cli"
910 "github.com/docker/infrakit/pkg/discovery"
11+ "github.com/docker/infrakit/pkg/discovery/remote"
12+ logutil "github.com/docker/infrakit/pkg/log"
1013 "github.com/spf13/cobra"
1114)
1215
1316// A generic client for infrakit
14-
1517func main () {
1618
19+ log := logutil .New ("module" , "main" )
20+
1721 cmd := & cobra.Command {
1822 Use : os .Args [0 ],
1923 Short : "infrakit cli" ,
2024 }
21- logLevel := cmd .PersistentFlags ().Int ("log" , cli .DefaultLogLevel , "Logging level. 0 is least verbose. Max is 5" )
25+
26+ // Log setup
27+ logOptions := & logutil .ProdDefaults
28+ ulist := []* url.URL {}
29+ remotes := []string {}
30+
31+ cmd .PersistentFlags ().AddFlagSet (cli .Flags (logOptions ))
32+ cmd .PersistentFlags ().AddGoFlagSet (flag .CommandLine )
33+
34+ cmd .PersistentFlags ().StringSliceVarP (& remotes , "host" , "H" , remotes , "host list. Default is local sockets" )
35+
36+ // parse the list of hosts
2237 cmd .PersistentPreRunE = func (c * cobra.Command , args []string ) error {
23- cli .SetLogLevel (* logLevel )
38+ logutil .Configure (logOptions )
39+
40+ if len (remotes ) > 0 {
41+ for _ , h := range remotes {
42+ u , err := url .Parse (h )
43+ if err != nil {
44+ return err
45+ }
46+ ulist = append (ulist , u )
47+ }
48+ }
2449 return nil
2550 }
2651
27- // Don't print usage text for any error returned from a RunE function. Only print it when explicitly requested.
52+ // Don't print usage text for any error returned from a RunE function.
53+ // Only print it when explicitly requested.
2854 cmd .SilenceUsage = true
2955
30- // Don't automatically print errors returned from a RunE function. They are returned from cmd.Execute() below
31- // and we print it ourselves.
56+ // Don't automatically print errors returned from a RunE function.
57+ // They are returned from cmd.Execute() below and we print it ourselves.
3258 cmd .SilenceErrors = true
3359 f := func () discovery.Plugins {
34- d , err := discovery .NewPluginDiscovery ()
60+ if len (ulist ) == 0 {
61+ d , err := discovery .NewPluginDiscovery ()
62+ if err != nil {
63+ log .Crit ("Failed to initialize plugin discovery" , "err" , err )
64+ os .Exit (1 )
65+ }
66+ return d
67+ }
68+
69+ d , err := remote .NewPluginDiscovery (ulist )
3570 if err != nil {
36- log .Fatalf ("Failed to initialize plugin discovery: %s " , err )
71+ log .Crit ("Failed to initialize remote plugin discovery" , "err " , err )
3772 os .Exit (1 )
3873 }
3974 return d
@@ -46,19 +81,20 @@ func main() {
4681 cmd .AddCommand (metadataCommand (f ))
4782 cmd .AddCommand (eventCommand (f ))
4883 cmd .AddCommand (pluginCommand (f ))
84+ cmd .AddCommand (utilCommand (f ))
4985
5086 cmd .AddCommand (instancePluginCommand (f ), groupPluginCommand (f ), flavorPluginCommand (f ), resourcePluginCommand (f ))
5187
5288 err := cmd .Execute ()
5389 if err != nil {
54- log .Fatal ( err )
90+ log .Crit ( "error executing" , "err" , err )
5591 os .Exit (1 )
5692 }
5793}
5894
5995func assertNotNil (message string , f interface {}) {
6096 if f == nil {
61- log . Error (errors .New (message ))
97+ logutil . New ( "main" , "assert" ). Error ("assert failed" , "err" , errors .New (message ))
6298 os .Exit (1 )
6399 }
64100}
0 commit comments