diff --git a/plugins/commands/status/command.rb b/plugins/commands/status/command.rb index f51554943..64145f19e 100644 --- a/plugins/commands/status/command.rb +++ b/plugins/commands/status/command.rb @@ -30,7 +30,7 @@ module VagrantPlugins "#{current_state.short_description} (#{machine.provider_name})" opts = { scope: machine.name.to_s } - @env.ui.machine("provider", machine.provider_name, opts) + @env.ui.machine("provider-name", machine.provider_name, opts) @env.ui.machine("state", current_state.id, opts) @env.ui.machine("state-human-short", current_state.short_description, opts) @env.ui.machine("state-human-long", current_state.long_description, opts) diff --git a/website/docs/source/layouts/layout.erb b/website/docs/source/layouts/layout.erb index 180268387..ecb68dd04 100644 --- a/website/docs/source/layouts/layout.erb +++ b/website/docs/source/layouts/layout.erb @@ -119,6 +119,7 @@ >status >suspend >up + >Machine Readable Output <% end %> diff --git a/website/docs/source/stylesheets/_base.less b/website/docs/source/stylesheets/_base.less index 5ad3eacff..67bc8fea2 100644 --- a/website/docs/source/stylesheets/_base.less +++ b/website/docs/source/stylesheets/_base.less @@ -86,7 +86,7 @@ h6 { line-height: @font-size; } -p { +p, td { letter-spacing: 1px; line-height: 32px; diff --git a/website/docs/source/stylesheets/_components.less b/website/docs/source/stylesheets/_components.less index 5e84f3053..06d0564d6 100644 --- a/website/docs/source/stylesheets/_components.less +++ b/website/docs/source/stylesheets/_components.less @@ -1,74 +1,80 @@ /* compontents */ +table.mr-types { + th.mr-type { + width: 200px; + } +} + //search .search-bar { - border-bottom: 1px solid fade(@black, 10%); - position: relative; - z-index: 99999; //keep search above content - margin-bottom: -1px; + border-bottom: 1px solid fade(@black, 10%); + position: relative; + z-index: 99999; //keep search above content + margin-bottom: -1px; - .search-icon { - height: 60px; - width: 40px; - background: url(/images/search_icon.png) no-repeat 0 center; - } - - .search { - //.debug; - background: @white; - height: 60px; - - input, - button, - form { - .kill-effects; - border: none; - height: 60px; - font-size: 20px; - .museo-sans-light-italic; + .search-icon { + height: 60px; + width: 40px; + background: url(/images/search_icon.png) no-repeat 0 center; } - input { - margin:0; - padding: 0 0 0 0; - font-size: 20px; + .search { + //.debug; + background: @white; + height: 60px; - &:focus { + input, + button, + form { + .kill-effects; + border: none; + height: 60px; + font-size: 20px; + .museo-sans-light-italic; + } - } //focus - } + input { + margin:0; + padding: 0 0 0 0; + font-size: 20px; - button { - padding: 0 20px; - text-transform: uppercase; - } + &:focus { + + } //focus + } + + button { + padding: 0 20px; + text-transform: uppercase; + } - } //search + } //search } //search bar //pagination .pagination { - height: 80px; - background: @gray-background; - padding: 0; - margin:0 auto; - text-transform: uppercase; - color: @blue-text; - z-index: 999; - position:relative; + height: 80px; + background: @gray-background; + padding: 0; + margin:0 auto; + text-transform: uppercase; + color: @blue-text; + z-index: 999; + position:relative; - a.previous, - a.next { - padding: 25px 0; - } + a.previous, + a.next { + padding: 25px 0; + } - a.previous { - margin-left: 20px; - } + a.previous { + margin-left: 20px; + } - a.next { - margin-right: 20px; - } + a.next { + margin-right: 20px; + } } diff --git a/website/docs/source/v2/cli/machine-readable.html.md b/website/docs/source/v2/cli/machine-readable.html.md new file mode 100644 index 000000000..5ae81ac6b --- /dev/null +++ b/website/docs/source/v2/cli/machine-readable.html.md @@ -0,0 +1,110 @@ +--- +page_title: "Machine Readable Output - Command-Line Interface" +sidebar_current: "cli-machinereadable" +--- + +# Machine Readable Output + +Every Vagrant commands accepts a `--machine-readable` flag which enables +machine readable output mode. In this mode, the output to the terminal +is replaced with machine-friendly output. + +This mode makes it easy to programmatically execute Vagrant and read data +out of it. This output format is protected by our +[backwards compatibility](/v2/installation/backwards-compatibility.html) +policy. Until Vagrant 2.0 is released, however, the machine readable output +may change as we determine more use cases for it. But the backwards +compatibility promise should make it safe to write client libraries to +parse the output format. + +
+

+Advanced topic! This is an advanced topic for use only if +you want to programmatically execute Vagrant. If you're just getting started +with Vagrant, you may safely skip this section. +

+
+ +## Format + +The machine readable format is a line-oriented, comma-delimeted text format. +This makes it extremely easy to parse using standard Unix tools such as awk or +grep in addition to full programming languages like Ruby or Python. + +The format is: + +``` +timestamp,target,type,data... +``` + +Each component is explained below: + +* **timestamp** is a Unix timestamp in UTC of when the message was printed. + +* **target** is the target of the following output. This is empty if the + message is related to Vagrant globally. Otherwise, this is generally a machine + name so you can relate output to a specific machine when multi-VM is in use. + +* **type** is the type of machine-readable message being outputted. There are + a set of standard types which are covered later. + +* **data** is zero or more comma-seperated values associated with the prior + type. The exact amount and meaning of this data is type-dependent, so you + must read the documentation associated with the type to understand fully. + +Within the format, if data contains a comma, it is replaced with +`%!(VAGRANT_COMMA)`. This was preferred over an escape character such as \' +because it is more friendly to tools like awk. + +Newlines within the format are replaced with their respective standard escape +sequence. Newlines become a literal `\n` within the output. Carriage returns +become a literal `\r`. + +## Types + +This section documents all the available types that may be outputted +with the machine-readable output. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeDescription
provider-name + The provider name of the target machine. + targetted +
state + The state ID of the target machine. + targetted +
state-human-long + Human-readable description of the state of the machine. This is the + long version, and may be a paragraph or longer. + targetted +
state-human-short + Human-readable description of the state of the machine. This is the + short version, limited to at most a sentence. + targetted +