diff --git a/Makefile b/Makefile index 0dc1df911..d4b86457e 100644 --- a/Makefile +++ b/Makefile @@ -115,6 +115,7 @@ endif $(call build_binary,infrakit,github.com/docker/infrakit/cmd/cli) $(call build_binary,infrakit-manager,github.com/docker/infrakit/cmd/manager) $(call build_binary,infrakit-group-default,github.com/docker/infrakit/cmd/group) + $(call build_binary,infrakit-resource,github.com/docker/infrakit/cmd/resource) $(call build_binary,infrakit-flavor-combo,github.com/docker/infrakit/examples/flavor/combo) $(call build_binary,infrakit-flavor-swarm,github.com/docker/infrakit/examples/flavor/swarm) $(call build_binary,infrakit-flavor-vanilla,github.com/docker/infrakit/examples/flavor/vanilla) diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 1716e0046..3a8aac0d5 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -47,7 +47,7 @@ func main() { cmd.AddCommand(eventCommand(f)) cmd.AddCommand(pluginCommand(f)) - cmd.AddCommand(instancePluginCommand(f), groupPluginCommand(f), flavorPluginCommand(f)) + cmd.AddCommand(instancePluginCommand(f), groupPluginCommand(f), flavorPluginCommand(f), resourcePluginCommand(f)) err := cmd.Execute() if err != nil { diff --git a/cmd/cli/resource.go b/cmd/cli/resource.go new file mode 100644 index 000000000..dee97282e --- /dev/null +++ b/cmd/cli/resource.go @@ -0,0 +1,168 @@ +package main + +import ( + "fmt" + "os" + + log "github.com/Sirupsen/logrus" + "github.com/docker/infrakit/pkg/discovery" + "github.com/docker/infrakit/pkg/plugin" + resource_plugin "github.com/docker/infrakit/pkg/rpc/resource" + "github.com/docker/infrakit/pkg/spi/resource" + "github.com/docker/infrakit/pkg/template" + "github.com/docker/infrakit/pkg/types" + "github.com/spf13/cobra" +) + +func resourcePluginCommand(plugins func() discovery.Plugins) *cobra.Command { + + var resourcePlugin resource.Plugin + + cmd := &cobra.Command{ + Use: "resource", + Short: "Access resource plugin", + } + name := cmd.PersistentFlags().String("name", "resource", "Name of plugin") + cmd.PersistentPreRunE = func(c *cobra.Command, args []string) error { + if err := upTree(c, func(x *cobra.Command, argv []string) error { + if x.PersistentPreRunE != nil { + return x.PersistentPreRunE(x, argv) + } + return nil + }); err != nil { + return err + } + + endpoint, err := plugins().Find(plugin.Name(*name)) + if err != nil { + return err + } + + p, err := resource_plugin.NewClient(endpoint.Address) + if err != nil { + return err + } + resourcePlugin = p + return nil + } + + commit := cobra.Command{ + Use: "commit