razor-client 0.16.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/NEWS.md +15 -0
  2. data/bin/razor +3 -2
  3. data/lib/razor/cli.rb +6 -0
  4. data/lib/razor/cli/command.rb +24 -13
  5. data/lib/razor/cli/navigate.rb +1 -0
  6. data/lib/razor/cli/parse.rb +29 -3
  7. data/lib/razor/cli/query.rb +2 -1
  8. data/lib/razor/cli/table_format.rb +38 -2
  9. data/lib/razor/cli/transforms.rb +8 -1
  10. data/lib/razor/cli/version.rb +1 -1
  11. data/lib/razor/cli/views.yaml +17 -4
  12. data/spec/cli/command_spec.rb +66 -0
  13. data/spec/cli/navigate_spec.rb +7 -7
  14. data/spec/cli/parse_spec.rb +23 -4
  15. data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_in_string.yml +82 -171
  16. data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_spaces.yml +281 -548
  17. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_--help_command_.yml +160 -37
  18. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_-h_command_.yml +160 -37
  19. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_--help_.yml +160 -37
  20. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_-h_.yml +160 -37
  21. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_help_.yml +160 -37
  22. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_help_command_.yml +160 -37
  23. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_preserve_that_across_navigation.yml +10 -10
  24. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_supply_that_to_the_API_service.yml +5 -5
  25. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_bad_JSON.yml +71 -166
  26. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_malformed_argument.yml +109 -59
  27. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_an_array_into_an_existing_array.yml +527 -1360
  28. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_the_arguments_as_an_array.yml +528 -1361
  29. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_the_arguments_into_an_existing_array.yml +528 -1361
  30. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_construct_a_json_object.yml +66 -229
  31. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_construct_a_json_object_with_unicode.yml +104 -165
  32. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_fail_with_mixed_types_array_then_hash_.yml +57 -155
  33. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_fail_with_mixed_types_hash_then_array_.yml +57 -220
  34. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_no_parameters/should_fail_with_bad_JSON.yml +98 -5
  35. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_limit.yml +8 -8
  36. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_start.yml +8 -8
  37. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_not_fail_when_query_returns_details_for_one_item.yml +41 -149
  38. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_store_query_without_query_parameters.yml +70 -286
  39. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_throw_an_error_if_the_query_parameter_is_not_in_the_API.yml +5 -5
  40. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_throw_an_error_if_the_query_parameter_is_not_in_the_API_from_a_single_item.yml +36 -144
  41. data/spec/fixtures/vcr/Razor_CLI_Parse/_new/_help/should_print_a_list_of_known_endpoints.yml +5 -5
  42. data/spec/spec_helper.rb +8 -4
  43. metadata +92 -85
  44. checksums.yaml +0 -7
  45. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_--api_command_--help_.yml +0 -110
  46. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_--api_command_help_.yml +0 -110
  47. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_--api_help_command_.yml +0 -110
  48. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_--help_--api_command_.yml +0 -110
  49. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_-a_-h_command_.yml +0 -110
  50. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_API_command_help_for_razor_-a_command_-h_.yml +0 -110
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://localhost:8080/api
5
+ uri: http://localhost:8150/api
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -25,17 +25,17 @@ http_interactions:
25
25
  Content-Type:
26
26
  - application/json;charset=utf-8
27
27
  Content-Length:
28
- - '4981'
28
+ - '5650'
29
29
  Date:
30
- - Thu, 14 Aug 2014 20:49:46 GMT
30
+ - Mon, 09 Mar 2015 19:53:39 GMT
31
31
  body:
32
32
  encoding: US-ASCII
33
- string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8080/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8080/api/commands/create-broker"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8080/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8080/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8080/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8080/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8080/api/commands/delete-broker"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8080/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8080/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8080/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8080/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8080/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8080/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8080/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8080/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8080/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8080/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8080/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8080/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8080/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8080/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8080/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8080/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8080/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8080/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8080/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8080/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8080/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8080/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8080/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8080/api/collections/nodes"},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8080/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8080/api/collections/commands"}],"version":{"server":"v0.15.0-26-gfffaba4-dirty"}}'
33
+ string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8150/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8150/api/commands/create-broker"},{"name":"create-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/create-hook","id":"http://localhost:8150/api/commands/create-hook"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8150/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8150/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8150/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8150/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8150/api/commands/delete-broker"},{"name":"delete-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-hook","id":"http://localhost:8150/api/commands/delete-hook"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8150/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8150/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8150/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8150/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8150/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8150/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8150/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8150/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8150/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8150/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8150/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8150/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8150/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8150/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8150/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8150/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8150/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8150/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8150/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8150/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8150/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8150/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8150/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8150/api/collections/nodes","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8150/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8150/api/collections/commands"},{"name":"events","rel":"http://api.puppetlabs.com/razor/v1/collections/events","id":"http://localhost:8150/api/collections/events","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"hooks","rel":"http://api.puppetlabs.com/razor/v1/collections/hooks","id":"http://localhost:8150/api/collections/hooks"}],"version":{"server":"v0.16.1-18-gd3acc7a-dirty"}}'
34
34
  http_version:
35
- recorded_at: Thu, 14 Aug 2014 20:49:46 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:53:39 GMT
36
36
  - request:
37
37
  method: get
38
- uri: http://localhost:8080/api/commands/create-broker
38
+ uri: http://localhost:8150/api/commands/create-broker
39
39
  body:
40
40
  encoding: US-ASCII
41
41
  string: ''
@@ -54,251 +54,88 @@ http_interactions:
54
54
  Server:
55
55
  - Apache-Coyote/1.1
56
56
  Etag:
57
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
57
+ - '"server-version-v0.16.1-18-gd3acc7a-dirty"'
58
58
  X-Content-Type-Options:
59
59
  - nosniff
60
60
  Content-Type:
61
61
  - application/json;charset=utf-8
62
62
  Content-Length:
63
- - '2568'
63
+ - '5184'
64
64
  Date:
65
- - Thu, 14 Aug 2014 20:49:46 GMT
65
+ - Mon, 09 Mar 2015 19:53:39 GMT
66
66
  body:
67
67
  encoding: US-ASCII
68
- string: '{"name":"create-broker","help":{"full":"# SYNOPSIS\nCreate a new broker
69
- configuration for hand-off of installed nodes\n\n# DESCRIPTION\nCreate a new
70
- broker configuration. Brokers are responsible for handing a node\noff to
71
- a config management system, such as Puppet or Chef. In cases where you\nhave
72
- no configuration management system, you can use the `noop` broker.\n\n# Access
73
- Control\n\nThis command''s access control pattern: `commands:create-broker:%{name}`\n\nWords
74
- surrounded by `%{...}` are substitutions from the input data: typically\nthe
75
- name of the object being modified, or some other critical detail, these\nallow
76
- roles to be granted partial access to modify the system.\n\nFor more detail
77
- on how the permission strings are structured and work, you can\nsee the [Shiro
78
- Permissions documentation][shiro]. That pattern is expanded\nand then a permission
79
- check applied to it, before the command is authorized.\n\nThese checks only
80
- apply if security is enabled in the Razor configuration\nfile; on this server
81
- security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
68
+ string: '{"name":"create-broker","help":{"summary":"Create a new broker configuration
69
+ for hand-off of installed nodes","description":"Create a new broker configuration. Brokers
70
+ are responsible for handing a node\noff to a config management system, such
71
+ as Puppet or Chef. In cases where you\nhave no configuration management system,
72
+ you can use the `noop` broker.","schema":"# Access Control\n\nThis command''s
73
+ access control pattern: `commands:create-broker:%{name}`\n\nWords surrounded
74
+ by `%{...}` are substitutions from the input data: typically\nthe name of
75
+ the object being modified, or some other critical detail, these\nallow roles
76
+ to be granted partial access to modify the system.\n\nFor more detail on how
77
+ the permission strings are structured and work, you can\nsee the [Shiro Permissions
78
+ documentation][shiro]. That pattern is expanded\nand then a permission check
79
+ applied to it, before the command is authorized.\n\nThese checks only apply
80
+ if security is enabled in the Razor configuration\nfile; on this server security
81
+ is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
82
82
  Attributes\n\n * name\n - The name of the broker, as it will be referenced
83
83
  within Razor.\n This is the name that you supply to, eg, `create-policy`
84
84
  to specify\n which broker the node will be handed off via after installation.\n -
85
85
  This attribute is required.\n - It must be of type string.\n - It must
86
- be between 1 and 250 in length.\n\n * broker-type\n - The broker type from
86
+ be between 1 and 250 in length.\n\n * broker_type\n - The broker type from
87
87
  which this broker is created. The available\n broker types on your server
88
88
  are:\n - chef\n - noop\n - puppet-pe\n - puppet\n - This
89
89
  attribute is required.\n - It must be of type string.\n - It must match
90
90
  the name of an existing broker type.\n\n * configuration\n - The configuration
91
- for the broker. The acceptable values here are\n determined by the `broker-type`
91
+ for the broker. The acceptable values here are\n determined by the `broker_type`
92
92
  selected. In general this has\n settings like which server to contact,
93
93
  and other configuration\n related to handing on the newly installed system
94
94
  to the final\n configuration management system.\n \n This attribute
95
- can be abbreviated as `c` for convenience.\n - It must be of type object.\n\n#
96
- EXAMPLES\n\n Creating a simple Puppet broker:\n \n {\n \"name\": \"puppet\",\n \"configuration\":
97
- {\n \"server\": \"puppet.example.org\",\n \"environment\":
98
- \"production\"\n },\n \"broker-type\": \"puppet\"\n }\n"},"schema":{"name":{"type":"string"},"broker-type":{"type":"string"},"configuration":{"type":"object"}}}'
99
- http_version:
100
- recorded_at: Thu, 14 Aug 2014 20:49:46 GMT
101
- - request:
102
- method: get
103
- uri: http://localhost:8080/api/commands/create-broker
104
- body:
105
- encoding: US-ASCII
106
- string: ''
107
- headers:
108
- Accept:
109
- - application/json
110
- Accept-Encoding:
111
- - gzip, deflate
112
- User-Agent:
113
- - Ruby
114
- response:
115
- status:
116
- code: 200
117
- message: OK
118
- headers:
119
- Server:
120
- - Apache-Coyote/1.1
121
- Etag:
122
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
123
- X-Content-Type-Options:
124
- - nosniff
125
- Content-Type:
126
- - application/json;charset=utf-8
127
- Content-Length:
128
- - '2568'
129
- Date:
130
- - Thu, 14 Aug 2014 20:49:46 GMT
131
- body:
132
- encoding: US-ASCII
133
- string: '{"name":"create-broker","help":{"full":"# SYNOPSIS\nCreate a new broker
134
- configuration for hand-off of installed nodes\n\n# DESCRIPTION\nCreate a new
135
- broker configuration. Brokers are responsible for handing a node\noff to
136
- a config management system, such as Puppet or Chef. In cases where you\nhave
137
- no configuration management system, you can use the `noop` broker.\n\n# Access
138
- Control\n\nThis command''s access control pattern: `commands:create-broker:%{name}`\n\nWords
139
- surrounded by `%{...}` are substitutions from the input data: typically\nthe
140
- name of the object being modified, or some other critical detail, these\nallow
141
- roles to be granted partial access to modify the system.\n\nFor more detail
142
- on how the permission strings are structured and work, you can\nsee the [Shiro
143
- Permissions documentation][shiro]. That pattern is expanded\nand then a permission
144
- check applied to it, before the command is authorized.\n\nThese checks only
145
- apply if security is enabled in the Razor configuration\nfile; on this server
146
- security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
147
- Attributes\n\n * name\n - The name of the broker, as it will be referenced
148
- within Razor.\n This is the name that you supply to, eg, `create-policy`
149
- to specify\n which broker the node will be handed off via after installation.\n -
150
- This attribute is required.\n - It must be of type string.\n - It must
151
- be between 1 and 250 in length.\n\n * broker-type\n - The broker type from
152
- which this broker is created. The available\n broker types on your server
153
- are:\n - chef\n - noop\n - puppet-pe\n - puppet\n - This
154
- attribute is required.\n - It must be of type string.\n - It must match
155
- the name of an existing broker type.\n\n * configuration\n - The configuration
156
- for the broker. The acceptable values here are\n determined by the `broker-type`
157
- selected. In general this has\n settings like which server to contact,
158
- and other configuration\n related to handing on the newly installed system
159
- to the final\n configuration management system.\n \n This attribute
160
- can be abbreviated as `c` for convenience.\n - It must be of type object.\n\n#
161
- EXAMPLES\n\n Creating a simple Puppet broker:\n \n {\n \"name\": \"puppet\",\n \"configuration\":
162
- {\n \"server\": \"puppet.example.org\",\n \"environment\":
163
- \"production\"\n },\n \"broker-type\": \"puppet\"\n }\n"},"schema":{"name":{"type":"string"},"broker-type":{"type":"string"},"configuration":{"type":"object"}}}'
164
- http_version:
165
- recorded_at: Thu, 14 Aug 2014 20:49:46 GMT
166
- - request:
167
- method: get
168
- uri: http://localhost:8080/api/commands/create-broker
169
- body:
170
- encoding: US-ASCII
171
- string: ''
172
- headers:
173
- Accept:
174
- - application/json
175
- Accept-Encoding:
176
- - gzip, deflate
177
- User-Agent:
178
- - Ruby
179
- response:
180
- status:
181
- code: 200
182
- message: OK
183
- headers:
184
- Server:
185
- - Apache-Coyote/1.1
186
- Etag:
187
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
188
- X-Content-Type-Options:
189
- - nosniff
190
- Content-Type:
191
- - application/json;charset=utf-8
192
- Content-Length:
193
- - '2568'
194
- Date:
195
- - Thu, 14 Aug 2014 20:49:46 GMT
196
- body:
197
- encoding: US-ASCII
198
- string: '{"name":"create-broker","help":{"full":"# SYNOPSIS\nCreate a new broker
199
- configuration for hand-off of installed nodes\n\n# DESCRIPTION\nCreate a new
200
- broker configuration. Brokers are responsible for handing a node\noff to
201
- a config management system, such as Puppet or Chef. In cases where you\nhave
202
- no configuration management system, you can use the `noop` broker.\n\n# Access
203
- Control\n\nThis command''s access control pattern: `commands:create-broker:%{name}`\n\nWords
204
- surrounded by `%{...}` are substitutions from the input data: typically\nthe
205
- name of the object being modified, or some other critical detail, these\nallow
206
- roles to be granted partial access to modify the system.\n\nFor more detail
207
- on how the permission strings are structured and work, you can\nsee the [Shiro
208
- Permissions documentation][shiro]. That pattern is expanded\nand then a permission
209
- check applied to it, before the command is authorized.\n\nThese checks only
210
- apply if security is enabled in the Razor configuration\nfile; on this server
211
- security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
212
- Attributes\n\n * name\n - The name of the broker, as it will be referenced
213
- within Razor.\n This is the name that you supply to, eg, `create-policy`
214
- to specify\n which broker the node will be handed off via after installation.\n -
215
- This attribute is required.\n - It must be of type string.\n - It must
216
- be between 1 and 250 in length.\n\n * broker-type\n - The broker type from
217
- which this broker is created. The available\n broker types on your server
218
- are:\n - chef\n - noop\n - puppet-pe\n - puppet\n - This
219
- attribute is required.\n - It must be of type string.\n - It must match
220
- the name of an existing broker type.\n\n * configuration\n - The configuration
221
- for the broker. The acceptable values here are\n determined by the `broker-type`
222
- selected. In general this has\n settings like which server to contact,
223
- and other configuration\n related to handing on the newly installed system
224
- to the final\n configuration management system.\n \n This attribute
225
- can be abbreviated as `c` for convenience.\n - It must be of type object.\n\n#
226
- EXAMPLES\n\n Creating a simple Puppet broker:\n \n {\n \"name\": \"puppet\",\n \"configuration\":
227
- {\n \"server\": \"puppet.example.org\",\n \"environment\":
228
- \"production\"\n },\n \"broker-type\": \"puppet\"\n }\n"},"schema":{"name":{"type":"string"},"broker-type":{"type":"string"},"configuration":{"type":"object"}}}'
229
- http_version:
230
- recorded_at: Thu, 14 Aug 2014 20:49:46 GMT
231
- - request:
232
- method: get
233
- uri: http://localhost:8080/api/commands/create-broker
234
- body:
235
- encoding: US-ASCII
236
- string: ''
237
- headers:
238
- Accept:
239
- - application/json
240
- Accept-Encoding:
241
- - gzip, deflate
242
- User-Agent:
243
- - Ruby
244
- response:
245
- status:
246
- code: 200
247
- message: OK
248
- headers:
249
- Server:
250
- - Apache-Coyote/1.1
251
- Etag:
252
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
253
- X-Content-Type-Options:
254
- - nosniff
255
- Content-Type:
256
- - application/json;charset=utf-8
257
- Content-Length:
258
- - '2568'
259
- Date:
260
- - Thu, 14 Aug 2014 20:49:46 GMT
261
- body:
262
- encoding: US-ASCII
263
- string: '{"name":"create-broker","help":{"full":"# SYNOPSIS\nCreate a new broker
264
- configuration for hand-off of installed nodes\n\n# DESCRIPTION\nCreate a new
265
- broker configuration. Brokers are responsible for handing a node\noff to
266
- a config management system, such as Puppet or Chef. In cases where you\nhave
267
- no configuration management system, you can use the `noop` broker.\n\n# Access
268
- Control\n\nThis command''s access control pattern: `commands:create-broker:%{name}`\n\nWords
269
- surrounded by `%{...}` are substitutions from the input data: typically\nthe
270
- name of the object being modified, or some other critical detail, these\nallow
271
- roles to be granted partial access to modify the system.\n\nFor more detail
272
- on how the permission strings are structured and work, you can\nsee the [Shiro
273
- Permissions documentation][shiro]. That pattern is expanded\nand then a permission
274
- check applied to it, before the command is authorized.\n\nThese checks only
275
- apply if security is enabled in the Razor configuration\nfile; on this server
276
- security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
277
- Attributes\n\n * name\n - The name of the broker, as it will be referenced
278
- within Razor.\n This is the name that you supply to, eg, `create-policy`
279
- to specify\n which broker the node will be handed off via after installation.\n -
280
- This attribute is required.\n - It must be of type string.\n - It must
281
- be between 1 and 250 in length.\n\n * broker-type\n - The broker type from
282
- which this broker is created. The available\n broker types on your server
283
- are:\n - chef\n - noop\n - puppet-pe\n - puppet\n - This
284
- attribute is required.\n - It must be of type string.\n - It must match
285
- the name of an existing broker type.\n\n * configuration\n - The configuration
286
- for the broker. The acceptable values here are\n determined by the `broker-type`
95
+ can be abbreviated as `c` for convenience.\n - It must be of type object.\n","examples":{"api":"Creating
96
+ a simple Puppet broker:\n\n{\n \"name\": \"puppet\",\n \"configuration\":
97
+ {\n \"server\": \"puppet.example.org\",\n \"environment\": \"production\"\n },\n \"broker_type\":
98
+ \"puppet\"\n}","cli":"Creating a simple Puppet broker:\n\nrazor create-broker
99
+ --name puppet -c server=puppet.example.org \\\n -c environment=production
100
+ --broker-type puppet"},"full":"# SYNOPSIS\nCreate a new broker configuration
101
+ for hand-off of installed nodes\n\n# DESCRIPTION\nCreate a new broker configuration. Brokers
102
+ are responsible for handing a node\noff to a config management system, such
103
+ as Puppet or Chef. In cases where you\nhave no configuration management system,
104
+ you can use the `noop` broker.\n# Access Control\n\nThis command''s access
105
+ control pattern: `commands:create-broker:%{name}`\n\nWords surrounded by `%{...}`
106
+ are substitutions from the input data: typically\nthe name of the object being
107
+ modified, or some other critical detail, these\nallow roles to be granted
108
+ partial access to modify the system.\n\nFor more detail on how the permission
109
+ strings are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
110
+ pattern is expanded\nand then a permission check applied to it, before the
111
+ command is authorized.\n\nThese checks only apply if security is enabled in
112
+ the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
113
+ http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * name\n -
114
+ The name of the broker, as it will be referenced within Razor.\n This
115
+ is the name that you supply to, eg, `create-policy` to specify\n which
116
+ broker the node will be handed off via after installation.\n - This attribute
117
+ is required.\n - It must be of type string.\n - It must be between 1 and
118
+ 250 in length.\n\n * broker_type\n - The broker type from which this broker
119
+ is created. The available\n broker types on your server are:\n -
120
+ chef\n - noop\n - puppet-pe\n - puppet\n - This attribute is
121
+ required.\n - It must be of type string.\n - It must match the name of
122
+ an existing broker type.\n\n * configuration\n - The configuration for the
123
+ broker. The acceptable values here are\n determined by the `broker_type`
287
124
  selected. In general this has\n settings like which server to contact,
288
125
  and other configuration\n related to handing on the newly installed system
289
126
  to the final\n configuration management system.\n \n This attribute
290
127
  can be abbreviated as `c` for convenience.\n - It must be of type object.\n\n#
291
128
  EXAMPLES\n\n Creating a simple Puppet broker:\n \n {\n \"name\": \"puppet\",\n \"configuration\":
292
129
  {\n \"server\": \"puppet.example.org\",\n \"environment\":
293
- \"production\"\n },\n \"broker-type\": \"puppet\"\n }\n"},"schema":{"name":{"type":"string"},"broker-type":{"type":"string"},"configuration":{"type":"object"}}}'
130
+ \"production\"\n },\n \"broker_type\": \"puppet\"\n }\n"},"schema":{"name":{"type":"string"},"broker_type":{"type":"string","aliases":["broker-type"]},"configuration":{"type":"object","aliases":["c"]}}}'
294
131
  http_version:
295
- recorded_at: Thu, 14 Aug 2014 20:49:46 GMT
132
+ recorded_at: Mon, 09 Mar 2015 19:53:39 GMT
296
133
  - request:
297
134
  method: post
298
- uri: http://localhost:8080/api/commands/create-broker
135
+ uri: http://localhost:8150/api/commands/create-broker
299
136
  body:
300
137
  encoding: UTF-8
301
- string: '{"name":"broker1","broker-type":"puppet","configuration":{"server":"puppet.example.org","environment":"production"}}'
138
+ string: '{"name":"broker1","broker_type":"puppet","configuration":{"server":"puppet.example.org","environment":"production"}}'
302
139
  headers:
303
140
  Accept:
304
141
  - application/json
@@ -324,15 +161,15 @@ http_interactions:
324
161
  Content-Length:
325
162
  - '211'
326
163
  Date:
327
- - Thu, 14 Aug 2014 20:49:46 GMT
164
+ - Mon, 09 Mar 2015 19:53:39 GMT
328
165
  body:
329
166
  encoding: US-ASCII
330
- string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/brokers/member","id":"http://localhost:8080/api/collections/brokers/broker1","name":"broker1","command":"http://localhost:8080/api/collections/commands/1"}'
167
+ string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/brokers/member","id":"http://localhost:8150/api/collections/brokers/broker1","name":"broker1","command":"http://localhost:8150/api/collections/commands/1"}'
331
168
  http_version:
332
- recorded_at: Thu, 14 Aug 2014 20:49:47 GMT
169
+ recorded_at: Mon, 09 Mar 2015 19:53:39 GMT
333
170
  - request:
334
171
  method: get
335
- uri: http://localhost:8080/api/collections/brokers/broker1
172
+ uri: http://localhost:8150/api/collections/brokers/broker1
336
173
  body:
337
174
  encoding: US-ASCII
338
175
  string: ''
@@ -357,10 +194,10 @@ http_interactions:
357
194
  Content-Length:
358
195
  - '359'
359
196
  Date:
360
- - Thu, 14 Aug 2014 20:49:46 GMT
197
+ - Mon, 09 Mar 2015 19:53:39 GMT
361
198
  body:
362
199
  encoding: US-ASCII
363
- string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/brokers/member","id":"http://localhost:8080/api/collections/brokers/broker1","name":"broker1","configuration":{"server":"puppet.example.org","environment":"production"},"broker-type":"puppet","policies":{"id":"http://localhost:8080/api/collections/brokers/broker1/policies","count":0,"name":"policies"}}'
200
+ string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/brokers/member","id":"http://localhost:8150/api/collections/brokers/broker1","name":"broker1","configuration":{"server":"puppet.example.org","environment":"production"},"broker_type":"puppet","policies":{"id":"http://localhost:8150/api/collections/brokers/broker1/policies","count":0,"name":"policies"}}'
364
201
  http_version:
365
- recorded_at: Thu, 14 Aug 2014 20:49:47 GMT
366
- recorded_with: VCR 2.9.2
202
+ recorded_at: Mon, 09 Mar 2015 19:53:39 GMT
203
+ recorded_with: VCR 2.5.0
@@ -2,7 +2,7 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: get
5
- uri: http://localhost:8080/api
5
+ uri: http://localhost:8150/api
6
6
  body:
7
7
  encoding: US-ASCII
8
8
  string: ''
@@ -25,17 +25,17 @@ http_interactions:
25
25
  Content-Type:
26
26
  - application/json;charset=utf-8
27
27
  Content-Length:
28
- - '4981'
28
+ - '5650'
29
29
  Date:
30
- - Thu, 14 Aug 2014 20:49:53 GMT
30
+ - Mon, 09 Mar 2015 19:53:44 GMT
31
31
  body:
32
32
  encoding: US-ASCII
33
- string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8080/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8080/api/commands/create-broker"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8080/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8080/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8080/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8080/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8080/api/commands/delete-broker"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8080/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8080/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8080/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8080/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8080/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8080/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8080/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8080/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8080/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8080/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8080/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8080/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8080/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8080/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8080/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8080/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8080/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8080/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8080/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8080/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8080/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8080/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8080/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8080/api/collections/nodes"},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8080/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8080/api/collections/commands"}],"version":{"server":"v0.15.0-26-gfffaba4-dirty"}}'
33
+ string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8150/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8150/api/commands/create-broker"},{"name":"create-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/create-hook","id":"http://localhost:8150/api/commands/create-hook"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8150/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8150/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8150/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8150/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8150/api/commands/delete-broker"},{"name":"delete-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-hook","id":"http://localhost:8150/api/commands/delete-hook"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8150/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8150/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8150/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8150/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8150/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8150/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8150/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8150/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8150/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8150/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8150/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8150/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8150/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8150/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8150/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8150/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8150/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8150/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8150/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8150/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8150/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8150/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8150/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8150/api/collections/nodes","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8150/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8150/api/collections/commands"},{"name":"events","rel":"http://api.puppetlabs.com/razor/v1/collections/events","id":"http://localhost:8150/api/collections/events","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"hooks","rel":"http://api.puppetlabs.com/razor/v1/collections/hooks","id":"http://localhost:8150/api/collections/hooks"}],"version":{"server":"v0.16.1-18-gd3acc7a-dirty"}}'
34
34
  http_version:
35
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
36
36
  - request:
37
37
  method: get
38
- uri: http://localhost:8080/api/commands/register-node
38
+ uri: http://localhost:8150/api/commands/register-node
39
39
  body:
40
40
  encoding: US-ASCII
41
41
  string: ''
@@ -54,29 +54,29 @@ http_interactions:
54
54
  Server:
55
55
  - Apache-Coyote/1.1
56
56
  Etag:
57
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
57
+ - '"server-version-v0.16.1-18-gd3acc7a-dirty"'
58
58
  X-Content-Type-Options:
59
59
  - nosniff
60
60
  Content-Type:
61
61
  - application/json;charset=utf-8
62
62
  Content-Length:
63
- - '2936'
63
+ - '6207'
64
64
  Date:
65
- - Thu, 14 Aug 2014 20:49:53 GMT
65
+ - Mon, 09 Mar 2015 19:53:44 GMT
66
66
  body:
67
67
  encoding: US-ASCII
68
- string: '{"name":"register-node","help":{"full":"# SYNOPSIS\nRegister a node
69
- with Razor before it is discovered\n\n# DESCRIPTION\nIn order to make brownfield
70
- deployments of Razor easier we allow users to\nregister nodes explicitly. This
71
- command allows you to perform the same\nregistration that would happen when
72
- a new node checked in, ahead of time.\n\nIn order for this to be effective
73
- the hw_info must contain enough information\nthat the node can successfully
74
- be matched during the iPXE boot phase.\n\nIf the node matches an existing
75
- node, in keeping with the overall policy of\ncommands declaring desired state,
76
- the node installed field will be updated to\nmatch the value in this command.\n\nThe
77
- final state is that a node with the supplied hardware information, and the\ndesired
78
- installed state, will be present in the database, regardless of it\nexisting
79
- before hand or not.\n\n# Access Control\n\nThis command''s access control
68
+ string: '{"name":"register-node","help":{"summary":"Register a node with Razor
69
+ before it is discovered","description":"In order to make brownfield deployments
70
+ of Razor easier we allow users to\nregister nodes explicitly. This command
71
+ allows you to perform the same\nregistration that would happen when a new
72
+ node checked in, ahead of time.\n\nIn order for this to be effective the hw_info
73
+ must contain enough information\nthat the node can successfully be matched
74
+ during the iPXE boot phase.\n\nIf the node matches an existing node, in keeping
75
+ with the overall policy of\ncommands declaring desired state, the node installed
76
+ field will be updated to\nmatch the value in this command.\n\nThe final state
77
+ is that a node with the supplied hardware information, and the\ndesired installed
78
+ state, will be present in the database, regardless of it\nexisting before
79
+ hand or not.","schema":"# Access Control\n\nThis command''s access control
80
80
  pattern: `commands:register-node`\n\nFor more detail on how the permission
81
81
  strings are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
82
82
  pattern is expanded\nand then a permission check applied to it, before the
@@ -85,57 +85,27 @@ http_interactions:
85
85
  http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
86
86
  Should the node be considered ''installed'' already? Installed nodes are\n not
87
87
  eligible for policy matching, and will simply boot locally.\n - This attribute
88
- is required.\n - It must be of type boolean.\n\n * hw-info\n - The hardware
88
+ is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
89
89
  information for the node. This is used to match the node on first\n boot
90
90
  with the record in the database. The order of MAC address assignment in\n this
91
91
  data is not significant, as a node with reordered MAC addresses will be\n treated
92
92
  as the same node.\n - This attribute is required.\n - It must be of type
93
- object.\n - It must be between 1 and Infinity in length.\n \n # Attributes\n \n *
93
+ object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
94
94
  serial\n - The DMI serial number of the node\n - It must be of type
95
95
  string.\n \n * asset\n - The DMI asset tag of the node\n -
96
96
  It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
97
- It must be of type string.\n\n# EXAMPLES\n\n Register a machine before you
98
- boot it, and note that it already has an OS\n installed, so should not be
99
- subject to policy-based reinstallation:\n \n {\n \"hw_info\":
100
- {\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
101
- \"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
102
- Settable\"\n },\n \"installed\": true\n }\n"},"schema":{"installed":{"type":"boolean"},"hw-info":{"type":"object"}}}'
103
- http_version:
104
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
105
- - request:
106
- method: get
107
- uri: http://localhost:8080/api/commands/register-node
108
- body:
109
- encoding: US-ASCII
110
- string: ''
111
- headers:
112
- Accept:
113
- - application/json
114
- Accept-Encoding:
115
- - gzip, deflate
116
- User-Agent:
117
- - Ruby
118
- response:
119
- status:
120
- code: 200
121
- message: OK
122
- headers:
123
- Server:
124
- - Apache-Coyote/1.1
125
- Etag:
126
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
127
- X-Content-Type-Options:
128
- - nosniff
129
- Content-Type:
130
- - application/json;charset=utf-8
131
- Content-Length:
132
- - '2936'
133
- Date:
134
- - Thu, 14 Aug 2014 20:49:53 GMT
135
- body:
136
- encoding: US-ASCII
137
- string: '{"name":"register-node","help":{"full":"# SYNOPSIS\nRegister a node
138
- with Razor before it is discovered\n\n# DESCRIPTION\nIn order to make brownfield
97
+ It must be of type string.\n","examples":{"api":"Register a machine before
98
+ you boot it, and note that it already has an OS\ninstalled, so should not
99
+ be subject to policy-based reinstallation:\n\n {\n \"hw_info\": {\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
100
+ \"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
101
+ Settable\"\n },\n \"installed\": true\n }","cli":"Register a
102
+ machine before you boot it, and note that it already has an OS\ninstalled,
103
+ so should not be subject to policy-based reinstallation:\n\n razor register-node
104
+ --hw-info net0=78:31:c1:be:c8:00 \\\n --hw-info net1=72:00:01:f2:13:f0
105
+ \\\n --hw-info net2=72:00:01:f2:13:f1 \\\n --hw-info serial=xxxxxxxxxxx
106
+ \\\n --hw-info asset=Asset-1234567890 \\\n --hw-info uuid=\"Not
107
+ Settable\" \\\n --installed"},"full":"# SYNOPSIS\nRegister a node with
108
+ Razor before it is discovered\n\n# DESCRIPTION\nIn order to make brownfield
139
109
  deployments of Razor easier we allow users to\nregister nodes explicitly. This
140
110
  command allows you to perform the same\nregistration that would happen when
141
111
  a new node checked in, ahead of time.\n\nIn order for this to be effective
@@ -145,21 +115,21 @@ http_interactions:
145
115
  the node installed field will be updated to\nmatch the value in this command.\n\nThe
146
116
  final state is that a node with the supplied hardware information, and the\ndesired
147
117
  installed state, will be present in the database, regardless of it\nexisting
148
- before hand or not.\n\n# Access Control\n\nThis command''s access control
149
- pattern: `commands:register-node`\n\nFor more detail on how the permission
150
- strings are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
118
+ before hand or not.\n# Access Control\n\nThis command''s access control pattern:
119
+ `commands:register-node`\n\nFor more detail on how the permission strings
120
+ are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
151
121
  pattern is expanded\nand then a permission check applied to it, before the
152
122
  command is authorized.\n\nThese checks only apply if security is enabled in
153
123
  the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
154
124
  http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
155
125
  Should the node be considered ''installed'' already? Installed nodes are\n not
156
126
  eligible for policy matching, and will simply boot locally.\n - This attribute
157
- is required.\n - It must be of type boolean.\n\n * hw-info\n - The hardware
127
+ is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
158
128
  information for the node. This is used to match the node on first\n boot
159
129
  with the record in the database. The order of MAC address assignment in\n this
160
130
  data is not significant, as a node with reordered MAC addresses will be\n treated
161
131
  as the same node.\n - This attribute is required.\n - It must be of type
162
- object.\n - It must be between 1 and Infinity in length.\n \n # Attributes\n \n *
132
+ object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
163
133
  serial\n - The DMI serial number of the node\n - It must be of type
164
134
  string.\n \n * asset\n - The DMI asset tag of the node\n -
165
135
  It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
@@ -168,15 +138,15 @@ http_interactions:
168
138
  subject to policy-based reinstallation:\n \n {\n \"hw_info\":
169
139
  {\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
170
140
  \"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
171
- Settable\"\n },\n \"installed\": true\n }\n"},"schema":{"installed":{"type":"boolean"},"hw-info":{"type":"object"}}}'
141
+ Settable\"\n },\n \"installed\": true\n }\n"},"schema":{"installed":{"type":"boolean"},"hw_info":{"type":"object","aliases":["hw-info"]}}}'
172
142
  http_version:
173
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
143
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
174
144
  - request:
175
145
  method: post
176
- uri: http://localhost:8080/api/commands/register-node
146
+ uri: http://localhost:8150/api/commands/register-node
177
147
  body:
178
148
  encoding: UTF-8
179
- string: '{"installed":true,"hw-info":{"net0":"abcdef"}}'
149
+ string: '{"installed":true,"hw_info":{"net0":"abcdef"}}'
180
150
  headers:
181
151
  Accept:
182
152
  - application/json
@@ -202,15 +172,15 @@ http_interactions:
202
172
  Content-Length:
203
173
  - '203'
204
174
  Date:
205
- - Thu, 14 Aug 2014 20:49:53 GMT
175
+ - Mon, 09 Mar 2015 19:53:44 GMT
206
176
  body:
207
177
  encoding: US-ASCII
208
- string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8080/api/collections/nodes/node1","name":"node1","command":"http://localhost:8080/api/collections/commands/1"}'
178
+ string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","command":"http://localhost:8150/api/collections/commands/1"}'
209
179
  http_version:
210
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
180
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
211
181
  - request:
212
182
  method: get
213
- uri: http://localhost:8080/api/collections/nodes/node1
183
+ uri: http://localhost:8150/api/collections/nodes/node1
214
184
  body:
215
185
  encoding: US-ASCII
216
186
  string: ''
@@ -233,17 +203,17 @@ http_interactions:
233
203
  Content-Type:
234
204
  - application/json;charset=utf-8
235
205
  Content-Length:
236
- - '376'
206
+ - '398'
237
207
  Date:
238
- - Thu, 14 Aug 2014 20:49:53 GMT
208
+ - Mon, 09 Mar 2015 19:53:44 GMT
239
209
  body:
240
210
  encoding: US-ASCII
241
- string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8080/api/collections/nodes/node1","name":"node1","hw_info":{"mac":["abcdef"]},"log":{"id":"http://localhost:8080/api/collections/nodes/node1/log","name":"log"},"tags":[],"state":{"installed":"true","installed_at":"2014-08-14T15:49:53-05:00"},"ipmi":{"hostname":null,"username":null}}'
211
+ string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","hw_info":{"mac":["abcdef"]},"log":{"id":"http://localhost:8150/api/collections/nodes/node1/log","name":"log","params":{"limit":{"type":"number"},"start":{"type":"number"}}},"tags":[],"state":{"installed":"true","installed_at":"2015-03-09T14:53:44-05:00"}}'
242
212
  http_version:
243
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
213
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
244
214
  - request:
245
215
  method: get
246
- uri: http://localhost:8080/api
216
+ uri: http://localhost:8150/api
247
217
  body:
248
218
  encoding: US-ASCII
249
219
  string: ''
@@ -266,17 +236,17 @@ http_interactions:
266
236
  Content-Type:
267
237
  - application/json;charset=utf-8
268
238
  Content-Length:
269
- - '4981'
239
+ - '5650'
270
240
  Date:
271
- - Thu, 14 Aug 2014 20:49:53 GMT
241
+ - Mon, 09 Mar 2015 19:53:44 GMT
272
242
  body:
273
243
  encoding: US-ASCII
274
- string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8080/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8080/api/commands/create-broker"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8080/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8080/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8080/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8080/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8080/api/commands/delete-broker"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8080/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8080/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8080/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8080/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8080/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8080/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8080/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8080/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8080/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8080/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8080/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8080/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8080/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8080/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8080/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8080/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8080/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8080/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8080/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8080/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8080/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8080/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8080/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8080/api/collections/nodes"},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8080/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8080/api/collections/commands"}],"version":{"server":"v0.15.0-26-gfffaba4-dirty"}}'
244
+ string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8150/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8150/api/commands/create-broker"},{"name":"create-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/create-hook","id":"http://localhost:8150/api/commands/create-hook"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8150/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8150/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8150/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8150/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8150/api/commands/delete-broker"},{"name":"delete-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-hook","id":"http://localhost:8150/api/commands/delete-hook"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8150/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8150/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8150/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8150/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8150/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8150/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8150/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8150/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8150/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8150/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8150/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8150/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8150/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8150/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8150/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8150/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8150/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8150/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8150/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8150/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8150/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8150/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8150/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8150/api/collections/nodes","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8150/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8150/api/collections/commands"},{"name":"events","rel":"http://api.puppetlabs.com/razor/v1/collections/events","id":"http://localhost:8150/api/collections/events","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"hooks","rel":"http://api.puppetlabs.com/razor/v1/collections/hooks","id":"http://localhost:8150/api/collections/hooks"}],"version":{"server":"v0.16.1-18-gd3acc7a-dirty"}}'
275
245
  http_version:
276
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
246
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
277
247
  - request:
278
248
  method: get
279
- uri: http://localhost:8080/api/commands/modify-node-metadata
249
+ uri: http://localhost:8150/api/commands/modify-node-metadata
280
250
  body:
281
251
  encoding: US-ASCII
282
252
  string: ''
@@ -295,24 +265,24 @@ http_interactions:
295
265
  Server:
296
266
  - Apache-Coyote/1.1
297
267
  Etag:
298
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
268
+ - '"server-version-v0.16.1-18-gd3acc7a-dirty"'
299
269
  X-Content-Type-Options:
300
270
  - nosniff
301
271
  Content-Type:
302
272
  - application/json;charset=utf-8
303
273
  Content-Length:
304
- - '2610'
274
+ - '5386'
305
275
  Date:
306
- - Thu, 14 Aug 2014 20:49:53 GMT
276
+ - Mon, 09 Mar 2015 19:53:44 GMT
307
277
  body:
308
278
  encoding: US-ASCII
309
- string: '{"name":"modify-node-metadata","help":{"full":"# SYNOPSIS\nPerform
310
- various editing operations on node metadata\n\n# DESCRIPTION\nNode metadata
311
- can be added, changed, or removed with this command; it contains\na limited
312
- editing language to make changes to the existing metadata in an\natomic fashion.\n\nIt
313
- can also clear all metadata from a node, although that operation is\nexclusive
314
- to all other editing operations, and cannot be performed atomically\nwith
315
- them.\n\n# Access Control\n\nThis command''s access control pattern: `commands:modify-node-metadata:%{node}`\n\nWords
279
+ string: '{"name":"modify-node-metadata","help":{"summary":"Perform various editing
280
+ operations on node metadata","description":"Node metadata can be added, changed,
281
+ or removed with this command; it contains\na limited editing language to make
282
+ changes to the existing metadata in an\natomic fashion.\n\nIt can also clear
283
+ all metadata from a node, although that operation is\nexclusive to all other
284
+ editing operations, and cannot be performed atomically\nwith them.","schema":"#
285
+ Access Control\n\nThis command''s access control pattern: `commands:modify-node-metadata:%{node}`\n\nWords
316
286
  surrounded by `%{...}` are substitutions from the input data: typically\nthe
317
287
  name of the object being modified, or some other critical detail, these\nallow
318
288
  roles to be granted partial access to modify the system.\n\nFor more detail
@@ -328,56 +298,25 @@ http_interactions:
328
298
  It must be of type array.\n\n * clear\n - Remove all metadata from the node. Cannot
329
299
  be used together with\n either ''update'' or ''remove''.\n - It must
330
300
  be of type boolean.\n - If present, update, remove must not be present.\n\n
331
- * no-replace\n - If true, the `update` operation will cause this command
301
+ * no_replace\n - If true, the `update` operation will cause this command
332
302
  to fail if the\n metadata key is already present on the node. No effect
333
- on `remove` or\n clear.\n - It must be of type boolean.\n\n# EXAMPLES\n\n Editing
334
- node metadata, by adding and removing some keys, but refusing to\n modify
335
- an existing value already present on a node:\n \n {\n \"node\":
336
- \"node1\",\n \"update\": {\n \"key1\": \"value1\",\n \"key2\":
337
- \"value2\"\n }\n \"remove\": [\"key3\", \"key4\"],\n \"no-replace\":
338
- true\n }\n \n Removing all node metadata:\n \n {\"node\": \"node1\",
339
- \"clear\": true}\n"},"schema":{"node":{"type":"string"},"update":{"type":"object"},"remove":{"type":"array"},"clear":{"type":"boolean"},"no-replace":{"type":"boolean"}}}'
340
- http_version:
341
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
342
- - request:
343
- method: get
344
- uri: http://localhost:8080/api/commands/modify-node-metadata
345
- body:
346
- encoding: US-ASCII
347
- string: ''
348
- headers:
349
- Accept:
350
- - application/json
351
- Accept-Encoding:
352
- - gzip, deflate
353
- User-Agent:
354
- - Ruby
355
- response:
356
- status:
357
- code: 200
358
- message: OK
359
- headers:
360
- Server:
361
- - Apache-Coyote/1.1
362
- Etag:
363
- - '"server-version-v0.15.0-26-gfffaba4-dirty"'
364
- X-Content-Type-Options:
365
- - nosniff
366
- Content-Type:
367
- - application/json;charset=utf-8
368
- Content-Length:
369
- - '2610'
370
- Date:
371
- - Thu, 14 Aug 2014 20:49:53 GMT
372
- body:
373
- encoding: US-ASCII
374
- string: '{"name":"modify-node-metadata","help":{"full":"# SYNOPSIS\nPerform
375
- various editing operations on node metadata\n\n# DESCRIPTION\nNode metadata
376
- can be added, changed, or removed with this command; it contains\na limited
377
- editing language to make changes to the existing metadata in an\natomic fashion.\n\nIt
303
+ on `remove` or\n clear.\n - It must be of type boolean.\n","examples":{"api":"Editing
304
+ node metadata, by adding and removing some keys, but refusing to\nmodify an
305
+ existing value already present on a node:\n\n {\n \"node\": \"node1\",\n \"update\":
306
+ {\n \"key1\": \"value1\",\n \"key2\": \"value2\"\n }\n \"remove\":
307
+ [\"key3\", \"key4\"],\n \"no_replace\": true\n }\n\nRemoving all
308
+ node metadata:\n\n {\"node\": \"node1\", \"clear\": true}","cli":"Editing
309
+ node metadata, by adding and removing some keys, but refusing to\nmodify an
310
+ existing value already present on a node:\n\n razor modify-node-metadata
311
+ --node node1 --update key1=value1 \\\n --update key2=value2 --remove
312
+ key3 --remove key4 --no-replace\n\nRemoving all node metadata:\n\n razor
313
+ modify-node-metadata --node node1 --clear"},"full":"# SYNOPSIS\nPerform various
314
+ editing operations on node metadata\n\n# DESCRIPTION\nNode metadata can be
315
+ added, changed, or removed with this command; it contains\na limited editing
316
+ language to make changes to the existing metadata in an\natomic fashion.\n\nIt
378
317
  can also clear all metadata from a node, although that operation is\nexclusive
379
318
  to all other editing operations, and cannot be performed atomically\nwith
380
- them.\n\n# Access Control\n\nThis command''s access control pattern: `commands:modify-node-metadata:%{node}`\n\nWords
319
+ them.\n# Access Control\n\nThis command''s access control pattern: `commands:modify-node-metadata:%{node}`\n\nWords
381
320
  surrounded by `%{...}` are substitutions from the input data: typically\nthe
382
321
  name of the object being modified, or some other critical detail, these\nallow
383
322
  roles to be granted partial access to modify the system.\n\nFor more detail
@@ -393,20 +332,20 @@ http_interactions:
393
332
  It must be of type array.\n\n * clear\n - Remove all metadata from the node. Cannot
394
333
  be used together with\n either ''update'' or ''remove''.\n - It must
395
334
  be of type boolean.\n - If present, update, remove must not be present.\n\n
396
- * no-replace\n - If true, the `update` operation will cause this command
335
+ * no_replace\n - If true, the `update` operation will cause this command
397
336
  to fail if the\n metadata key is already present on the node. No effect
398
337
  on `remove` or\n clear.\n - It must be of type boolean.\n\n# EXAMPLES\n\n Editing
399
338
  node metadata, by adding and removing some keys, but refusing to\n modify
400
339
  an existing value already present on a node:\n \n {\n \"node\":
401
340
  \"node1\",\n \"update\": {\n \"key1\": \"value1\",\n \"key2\":
402
- \"value2\"\n }\n \"remove\": [\"key3\", \"key4\"],\n \"no-replace\":
341
+ \"value2\"\n }\n \"remove\": [\"key3\", \"key4\"],\n \"no_replace\":
403
342
  true\n }\n \n Removing all node metadata:\n \n {\"node\": \"node1\",
404
- \"clear\": true}\n"},"schema":{"node":{"type":"string"},"update":{"type":"object"},"remove":{"type":"array"},"clear":{"type":"boolean"},"no-replace":{"type":"boolean"}}}'
343
+ \"clear\": true}\n"},"schema":{"node":{"type":"string"},"update":{"type":"object"},"remove":{"type":"array"},"clear":{"type":"boolean"},"no_replace":{"type":"boolean","aliases":["no-replace"]}}}'
405
344
  http_version:
406
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
345
+ recorded_at: Mon, 09 Mar 2015 19:53:44 GMT
407
346
  - request:
408
347
  method: post
409
- uri: http://localhost:8080/api/commands/modify-node-metadata
348
+ uri: http://localhost:8150/api/commands/modify-node-metadata
410
349
  body:
411
350
  encoding: UTF-8
412
351
  string: '{"node":"node1","update":{"keyᓱ123":"valueᓱ1"}}'
@@ -435,15 +374,15 @@ http_interactions:
435
374
  Content-Length:
436
375
  - '203'
437
376
  Date:
438
- - Thu, 14 Aug 2014 20:49:53 GMT
377
+ - Mon, 09 Mar 2015 19:53:44 GMT
439
378
  body:
440
379
  encoding: US-ASCII
441
- string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8080/api/collections/nodes/node1","name":"node1","command":"http://localhost:8080/api/collections/commands/2"}'
380
+ string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","command":"http://localhost:8150/api/collections/commands/2"}'
442
381
  http_version:
443
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
382
+ recorded_at: Mon, 09 Mar 2015 19:53:45 GMT
444
383
  - request:
445
384
  method: get
446
- uri: http://localhost:8080/api/collections/nodes/node1
385
+ uri: http://localhost:8150/api/collections/nodes/node1
447
386
  body:
448
387
  encoding: US-ASCII
449
388
  string: ''
@@ -466,22 +405,22 @@ http_interactions:
466
405
  Content-Type:
467
406
  - application/json;charset=utf-8
468
407
  Content-Length:
469
- - '413'
408
+ - '435'
470
409
  Date:
471
- - Thu, 14 Aug 2014 20:49:53 GMT
410
+ - Mon, 09 Mar 2015 19:53:44 GMT
472
411
  body:
473
412
  encoding: ASCII-8BIT
474
413
  string: !binary |-
475
414
  eyJzcGVjIjoiaHR0cDovL2FwaS5wdXBwZXRsYWJzLmNvbS9yYXpvci92MS9j
476
415
  b2xsZWN0aW9ucy9ub2Rlcy9tZW1iZXIiLCJpZCI6Imh0dHA6Ly9sb2NhbGhv
477
- c3Q6ODA4MC9hcGkvY29sbGVjdGlvbnMvbm9kZXMvbm9kZTEiLCJuYW1lIjoi
416
+ c3Q6ODE1MC9hcGkvY29sbGVjdGlvbnMvbm9kZXMvbm9kZTEiLCJuYW1lIjoi
478
417
  bm9kZTEiLCJod19pbmZvIjp7Im1hYyI6WyJhYmNkZWYiXX0sImxvZyI6eyJp
479
- ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvY29sbGVjdGlvbnMvbm9k
480
- ZXMvbm9kZTEvbG9nIiwibmFtZSI6ImxvZyJ9LCJ0YWdzIjpbXSwibWV0YWRh
481
- dGEiOnsia2V54ZOxMTIzIjoidmFsdWXhk7ExIn0sInN0YXRlIjp7Imluc3Rh
482
- bGxlZCI6InRydWUiLCJpbnN0YWxsZWRfYXQiOiIyMDE0LTA4LTE0VDE1OjQ5
483
- OjUzLTA1OjAwIn0sImlwbWkiOnsiaG9zdG5hbWUiOm51bGwsInVzZXJuYW1l
484
- IjpudWxsfX0=
418
+ ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODE1MC9hcGkvY29sbGVjdGlvbnMvbm9k
419
+ ZXMvbm9kZTEvbG9nIiwibmFtZSI6ImxvZyIsInBhcmFtcyI6eyJsaW1pdCI6
420
+ eyJ0eXBlIjoibnVtYmVyIn0sInN0YXJ0Ijp7InR5cGUiOiJudW1iZXIifX19
421
+ LCJ0YWdzIjpbXSwibWV0YWRhdGEiOnsia2V54ZOxMTIzIjoidmFsdWXhk7Ex
422
+ In0sInN0YXRlIjp7Imluc3RhbGxlZCI6InRydWUiLCJpbnN0YWxsZWRfYXQi
423
+ OiIyMDE1LTAzLTA5VDE0OjUzOjQ0LTA1OjAwIn19
485
424
  http_version:
486
- recorded_at: Thu, 14 Aug 2014 20:49:53 GMT
487
- recorded_with: VCR 2.9.2
425
+ recorded_at: Mon, 09 Mar 2015 19:53:45 GMT
426
+ recorded_with: VCR 2.5.0