open-nomad/plugins/shared/cmd/launcher
Tim Gross 24be1b2b6f
fix plugin launcher SetConfig msgpack params (#6776)
* fix plugin launcher SetConfig msgpack params

The plugin launcher tool was passing the wrong byte array into
`SetConfig`, resulting in msgpack decoding errors. This was fixed in
a949050 (#6725) but accidentally reverted in 6aff18d (#6590).

Co-Authored-By: Chris Baker <1675087+cgbaker@users.noreply.github.com>
2019-11-26 10:49:22 -05:00
..
command fix plugin launcher SetConfig msgpack params (#6776) 2019-11-26 10:49:22 -05:00
main.go Example device plugin and helpers 2018-08-28 13:59:57 -07:00
README.md launcher readme 2018-08-28 15:00:48 -07:00

This command allows plugin developers to interact with a plugin directly. The command has subcommands for each plugin type. See the subcommand help text for detailed usage information.

Device Example

The device subcommand provides a way to interact and visualize the data being returned by a device plugin. As an example we will run the example device plugin. To use this command with your own device plugin substitute the example plugin with your own.

# Current working directory should be the root folder: github.com/hashicorp/nomad

# Build the plugin launcher
$ go build github.com/hashicorp/nomad/plugins/shared/cmd/launcher/

# Build the example fs-device plugin
$ go build -o fs-device github.com/hashicorp/nomad/plugins/device/cmd/example/cmd

# Launch the plugin
$ ./launcher device ./fs-device
> Availabile commands are: exit(), fingerprint(), stop_fingerprint(), stats(), stop_stats(), reserve(id1, id2, ...)
>  2018-08-28T14:54:45.658-0700 [INFO ] nomad-plugin-launcher.fs-device: config set: @module=example-fs-device config="example.Config{Dir:".", ListPeriod:"5s", StatsPeriod:"5s", UnhealthyPerm:"-rwxrwxrwx"}" timestamp=2018-08-28T14:54:45.658-0700

^C
2018-08-28T14:54:54.727-0700 [ERROR] nomad-plugin-launcher: error interacting with plugin: error=interrupted

# Lets launch changing the configuration
$ cat <<\EOF >fs-device.config
> config {
>   dir = "./plugins"
>   stats_period = "2s"
> }
> EOF

$ ./launcher device ./fs-device ./fs-device.config
2018-08-28T14:59:45.886-0700 [INFO ] nomad-plugin-launcher.fs-device: config set: @module=example-fs-device config="example.Config{Dir:"./plugins", ListPeriod:"5s", StatsPeriod:"2s", UnhealthyPerm:"-rwxrwxrwx"}" timestamp=2018-08-28T14:59:45.886-0700
> Availabile commands are: exit(), fingerprint(), stop_fingerprint(), stats(), stop_stats(), reserve(id1, id2, ...)
>  fingerprint()
>  > fingerprint: &device.FingerprintResponse{
    Devices: {
        &device.DeviceGroup{
            Vendor:  "nomad",
            Type:    "file",
            Name:    "mock",
            Devices: {
                &device.Device{
                    ID:         "serve.go",
                    Healthy:    true,
                    HealthDesc: "",
                    HwLocality: (*device.DeviceLocality)(nil),
                },
            },
            Attributes: {},
        },
    },
    Error: nil,
}
^C
2018-08-28T15:00:00.329-0700 [ERROR] nomad-plugin-launcher: error interacting with plugin: error=interrupted