pe-razor-client 0.15.2.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +27 -0
- data/bin/razor +27 -2
- data/lib/razor/cli.rb +11 -2
- data/lib/razor/cli/command.rb +150 -0
- data/lib/razor/cli/document.rb +8 -4
- data/lib/razor/cli/format.rb +46 -22
- data/lib/razor/cli/navigate.rb +28 -156
- data/lib/razor/cli/parse.rb +49 -7
- data/lib/razor/cli/query.rb +69 -0
- data/lib/razor/cli/table_format.rb +41 -0
- data/lib/razor/cli/transforms.rb +25 -0
- data/lib/razor/cli/version.rb +1 -1
- data/lib/razor/cli/views.yaml +53 -2
- data/spec/cli/command_spec.rb +66 -0
- data/spec/cli/format_spec.rb +95 -5
- data/spec/cli/navigate_spec.rb +50 -6
- data/spec/cli/parse_spec.rb +42 -2
- data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_in_string.yml +233 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_spaces.yml +281 -548
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_--help_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_-h_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_--help_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_-h_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_help_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_help_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_preserve_that_across_navigation.yml +10 -10
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_supply_that_to_the_API_service.yml +5 -5
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_bad_JSON.yml +71 -166
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_malformed_argument.yml +109 -59
- 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
- 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
- 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
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_construct_a_json_object.yml +80 -111
- 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 +137 -123
- 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 +71 -166
- 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 +71 -102
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_no_parameters/should_fail_with_bad_JSON.yml +98 -5
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_limit.yml +69 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_start.yml +69 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_not_fail_when_query_returns_details_for_one_item.yml +313 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_store_query_without_query_parameters.yml +557 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_throw_an_error_if_the_query_parameter_is_not_in_the_API.yml +36 -0
- 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 +280 -0
- data/spec/fixtures/vcr/Razor_CLI_Parse/_new/_help/should_print_a_list_of_known_endpoints.yml +5 -5
- data/spec/spec_helper.rb +8 -4
- metadata +26 -7
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: http://localhost:
|
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
|
-
- '
|
28
|
+
- '5650'
|
29
29
|
Date:
|
30
|
-
-
|
30
|
+
- Mon, 09 Mar 2015 19:54:40 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:
|
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:
|
35
|
+
recorded_at: Mon, 09 Mar 2015 19:54:40 GMT
|
36
36
|
- request:
|
37
37
|
method: get
|
38
|
-
uri: http://localhost:
|
38
|
+
uri: http://localhost:8150/api/commands/update-tag-rule
|
39
39
|
body:
|
40
40
|
encoding: US-ASCII
|
41
41
|
string: ''
|
@@ -54,46 +54,169 @@ http_interactions:
|
|
54
54
|
Server:
|
55
55
|
- Apache-Coyote/1.1
|
56
56
|
Etag:
|
57
|
-
- '"server-version-v0.
|
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
|
-
- '
|
63
|
+
- '4691'
|
64
64
|
Date:
|
65
|
-
-
|
65
|
+
- Mon, 09 Mar 2015 19:54:40 GMT
|
66
66
|
body:
|
67
67
|
encoding: US-ASCII
|
68
|
-
string: '{"name":"update-tag-rule","help":{"
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
results such as a node that does *not* match policy\n
|
93
|
-
the policy.\n - It must be of type boolean.\n
|
68
|
+
string: '{"name":"update-tag-rule","help":{"summary":"Update the matching rule
|
69
|
+
for an existing tag","description":"This will change the rule of the given
|
70
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
71
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
72
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
73
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
74
|
+
parameter `force` is set to `true`. Otherwise, it will fail.","schema":"#
|
75
|
+
Access Control\n\nThis command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
76
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
77
|
+
name of the object being modified, or some other critical detail, these\nallow
|
78
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
79
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
80
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
81
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
82
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
83
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
84
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
85
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
86
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
87
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
88
|
+
* force\n - By default this command will fail if the tag is in use by an
|
89
|
+
existing\n policy. This flag allows you to override that, and force the
|
90
|
+
change to\n apply despite the tag being in use.\n \n This will
|
91
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
92
|
+
results such as a node that does *not* match policy\n tags being bound
|
93
|
+
to the policy.\n - It must be of type boolean.\n","examples":{"api":"An
|
94
|
+
example of updating a tag rule, and forcing reevaluation:\n\n{\n \"name\":
|
95
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
96
|
+
true\n}","cli":"An example of updating a tag rule, and forcing reevaluation:\n\nrazor
|
97
|
+
update-tag-rule --name small --force \\\n --rule ''[\"<=\", [\"fact\",
|
98
|
+
\"processorcount\"], \"2\"]''"},"full":"# SYNOPSIS\nUpdate the matching rule
|
99
|
+
for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the given
|
100
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
101
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
102
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
103
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
104
|
+
parameter `force` is set to `true`. Otherwise, it will fail.\n# Access Control\n\nThis
|
105
|
+
command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
106
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
107
|
+
name of the object being modified, or some other critical detail, these\nallow
|
108
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
109
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
110
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
111
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
112
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
113
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
114
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
115
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
116
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
117
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
118
|
+
* force\n - By default this command will fail if the tag is in use by an
|
119
|
+
existing\n policy. This flag allows you to override that, and force the
|
120
|
+
change to\n apply despite the tag being in use.\n \n This will
|
121
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
122
|
+
results such as a node that does *not* match policy\n tags being bound
|
123
|
+
to the policy.\n - It must be of type boolean.\n\n# EXAMPLES\n\n An example
|
94
124
|
of updating a tag rule, and forcing reevaluation:\n \n {\n \"name\":
|
95
125
|
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
96
|
-
true\n }\n
|
126
|
+
true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
|
97
127
|
http_version:
|
98
|
-
recorded_at:
|
128
|
+
recorded_at: Mon, 09 Mar 2015 19:54:40 GMT
|
129
|
+
- request:
|
130
|
+
method: get
|
131
|
+
uri: http://localhost:8150/api/commands/update-tag-rule
|
132
|
+
body:
|
133
|
+
encoding: US-ASCII
|
134
|
+
string: ''
|
135
|
+
headers:
|
136
|
+
Accept:
|
137
|
+
- application/json
|
138
|
+
Accept-Encoding:
|
139
|
+
- gzip, deflate
|
140
|
+
User-Agent:
|
141
|
+
- Ruby
|
142
|
+
response:
|
143
|
+
status:
|
144
|
+
code: 200
|
145
|
+
message: OK
|
146
|
+
headers:
|
147
|
+
Server:
|
148
|
+
- Apache-Coyote/1.1
|
149
|
+
Etag:
|
150
|
+
- '"server-version-v0.16.1-18-gd3acc7a-dirty"'
|
151
|
+
X-Content-Type-Options:
|
152
|
+
- nosniff
|
153
|
+
Content-Type:
|
154
|
+
- application/json;charset=utf-8
|
155
|
+
Content-Length:
|
156
|
+
- '4691'
|
157
|
+
Date:
|
158
|
+
- Mon, 09 Mar 2015 19:54:40 GMT
|
159
|
+
body:
|
160
|
+
encoding: US-ASCII
|
161
|
+
string: '{"name":"update-tag-rule","help":{"summary":"Update the matching rule
|
162
|
+
for an existing tag","description":"This will change the rule of the given
|
163
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
164
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
165
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
166
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
167
|
+
parameter `force` is set to `true`. Otherwise, it will fail.","schema":"#
|
168
|
+
Access Control\n\nThis command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
169
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
170
|
+
name of the object being modified, or some other critical detail, these\nallow
|
171
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
172
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
173
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
174
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
175
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
176
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
177
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
178
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
179
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
180
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
181
|
+
* force\n - By default this command will fail if the tag is in use by an
|
182
|
+
existing\n policy. This flag allows you to override that, and force the
|
183
|
+
change to\n apply despite the tag being in use.\n \n This will
|
184
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
185
|
+
results such as a node that does *not* match policy\n tags being bound
|
186
|
+
to the policy.\n - It must be of type boolean.\n","examples":{"api":"An
|
187
|
+
example of updating a tag rule, and forcing reevaluation:\n\n{\n \"name\":
|
188
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
189
|
+
true\n}","cli":"An example of updating a tag rule, and forcing reevaluation:\n\nrazor
|
190
|
+
update-tag-rule --name small --force \\\n --rule ''[\"<=\", [\"fact\",
|
191
|
+
\"processorcount\"], \"2\"]''"},"full":"# SYNOPSIS\nUpdate the matching rule
|
192
|
+
for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the given
|
193
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
194
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
195
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
196
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
197
|
+
parameter `force` is set to `true`. Otherwise, it will fail.\n# Access Control\n\nThis
|
198
|
+
command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
199
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
200
|
+
name of the object being modified, or some other critical detail, these\nallow
|
201
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
202
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
203
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
204
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
205
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
206
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
207
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
208
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
209
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
210
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
211
|
+
* force\n - By default this command will fail if the tag is in use by an
|
212
|
+
existing\n policy. This flag allows you to override that, and force the
|
213
|
+
change to\n apply despite the tag being in use.\n \n This will
|
214
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
215
|
+
results such as a node that does *not* match policy\n tags being bound
|
216
|
+
to the policy.\n - It must be of type boolean.\n\n# EXAMPLES\n\n An example
|
217
|
+
of updating a tag rule, and forcing reevaluation:\n \n {\n \"name\":
|
218
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
219
|
+
true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
|
220
|
+
http_version:
|
221
|
+
recorded_at: Mon, 09 Mar 2015 19:54:40 GMT
|
99
222
|
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:
|
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
|
-
- '
|
28
|
+
- '5650'
|
29
29
|
Date:
|
30
|
-
-
|
30
|
+
- Mon, 09 Mar 2015 19:54:34 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:
|
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:
|
35
|
+
recorded_at: Mon, 09 Mar 2015 19:54:34 GMT
|
36
36
|
- request:
|
37
37
|
method: get
|
38
|
-
uri: http://localhost:
|
38
|
+
uri: http://localhost:8150/api/commands/update-tag-rule
|
39
39
|
body:
|
40
40
|
encoding: US-ASCII
|
41
41
|
string: ''
|
@@ -54,46 +54,169 @@ http_interactions:
|
|
54
54
|
Server:
|
55
55
|
- Apache-Coyote/1.1
|
56
56
|
Etag:
|
57
|
-
- '"server-version-v0.
|
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
|
-
- '
|
63
|
+
- '4691'
|
64
64
|
Date:
|
65
|
-
-
|
65
|
+
- Mon, 09 Mar 2015 19:54:34 GMT
|
66
66
|
body:
|
67
67
|
encoding: US-ASCII
|
68
|
-
string: '{"name":"update-tag-rule","help":{"
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
results such as a node that does *not* match policy\n
|
93
|
-
the policy.\n - It must be of type boolean.\n
|
68
|
+
string: '{"name":"update-tag-rule","help":{"summary":"Update the matching rule
|
69
|
+
for an existing tag","description":"This will change the rule of the given
|
70
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
71
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
72
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
73
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
74
|
+
parameter `force` is set to `true`. Otherwise, it will fail.","schema":"#
|
75
|
+
Access Control\n\nThis command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
76
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
77
|
+
name of the object being modified, or some other critical detail, these\nallow
|
78
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
79
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
80
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
81
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
82
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
83
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
84
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
85
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
86
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
87
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
88
|
+
* force\n - By default this command will fail if the tag is in use by an
|
89
|
+
existing\n policy. This flag allows you to override that, and force the
|
90
|
+
change to\n apply despite the tag being in use.\n \n This will
|
91
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
92
|
+
results such as a node that does *not* match policy\n tags being bound
|
93
|
+
to the policy.\n - It must be of type boolean.\n","examples":{"api":"An
|
94
|
+
example of updating a tag rule, and forcing reevaluation:\n\n{\n \"name\":
|
95
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
96
|
+
true\n}","cli":"An example of updating a tag rule, and forcing reevaluation:\n\nrazor
|
97
|
+
update-tag-rule --name small --force \\\n --rule ''[\"<=\", [\"fact\",
|
98
|
+
\"processorcount\"], \"2\"]''"},"full":"# SYNOPSIS\nUpdate the matching rule
|
99
|
+
for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the given
|
100
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
101
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
102
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
103
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
104
|
+
parameter `force` is set to `true`. Otherwise, it will fail.\n# Access Control\n\nThis
|
105
|
+
command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
106
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
107
|
+
name of the object being modified, or some other critical detail, these\nallow
|
108
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
109
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
110
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
111
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
112
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
113
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
114
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
115
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
116
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
117
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
118
|
+
* force\n - By default this command will fail if the tag is in use by an
|
119
|
+
existing\n policy. This flag allows you to override that, and force the
|
120
|
+
change to\n apply despite the tag being in use.\n \n This will
|
121
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
122
|
+
results such as a node that does *not* match policy\n tags being bound
|
123
|
+
to the policy.\n - It must be of type boolean.\n\n# EXAMPLES\n\n An example
|
94
124
|
of updating a tag rule, and forcing reevaluation:\n \n {\n \"name\":
|
95
125
|
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
96
|
-
true\n }\n
|
126
|
+
true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
|
97
127
|
http_version:
|
98
|
-
recorded_at:
|
128
|
+
recorded_at: Mon, 09 Mar 2015 19:54:34 GMT
|
129
|
+
- request:
|
130
|
+
method: get
|
131
|
+
uri: http://localhost:8150/api/commands/update-tag-rule
|
132
|
+
body:
|
133
|
+
encoding: US-ASCII
|
134
|
+
string: ''
|
135
|
+
headers:
|
136
|
+
Accept:
|
137
|
+
- application/json
|
138
|
+
Accept-Encoding:
|
139
|
+
- gzip, deflate
|
140
|
+
User-Agent:
|
141
|
+
- Ruby
|
142
|
+
response:
|
143
|
+
status:
|
144
|
+
code: 200
|
145
|
+
message: OK
|
146
|
+
headers:
|
147
|
+
Server:
|
148
|
+
- Apache-Coyote/1.1
|
149
|
+
Etag:
|
150
|
+
- '"server-version-v0.16.1-18-gd3acc7a-dirty"'
|
151
|
+
X-Content-Type-Options:
|
152
|
+
- nosniff
|
153
|
+
Content-Type:
|
154
|
+
- application/json;charset=utf-8
|
155
|
+
Content-Length:
|
156
|
+
- '4691'
|
157
|
+
Date:
|
158
|
+
- Mon, 09 Mar 2015 19:54:34 GMT
|
159
|
+
body:
|
160
|
+
encoding: US-ASCII
|
161
|
+
string: '{"name":"update-tag-rule","help":{"summary":"Update the matching rule
|
162
|
+
for an existing tag","description":"This will change the rule of the given
|
163
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
164
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
165
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
166
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
167
|
+
parameter `force` is set to `true`. Otherwise, it will fail.","schema":"#
|
168
|
+
Access Control\n\nThis command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
169
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
170
|
+
name of the object being modified, or some other critical detail, these\nallow
|
171
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
172
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
173
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
174
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
175
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
176
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
177
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
178
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
179
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
180
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
181
|
+
* force\n - By default this command will fail if the tag is in use by an
|
182
|
+
existing\n policy. This flag allows you to override that, and force the
|
183
|
+
change to\n apply despite the tag being in use.\n \n This will
|
184
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
185
|
+
results such as a node that does *not* match policy\n tags being bound
|
186
|
+
to the policy.\n - It must be of type boolean.\n","examples":{"api":"An
|
187
|
+
example of updating a tag rule, and forcing reevaluation:\n\n{\n \"name\":
|
188
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
189
|
+
true\n}","cli":"An example of updating a tag rule, and forcing reevaluation:\n\nrazor
|
190
|
+
update-tag-rule --name small --force \\\n --rule ''[\"<=\", [\"fact\",
|
191
|
+
\"processorcount\"], \"2\"]''"},"full":"# SYNOPSIS\nUpdate the matching rule
|
192
|
+
for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the given
|
193
|
+
tag to the new rule. The tag will be\nreevaluated against all nodes and each
|
194
|
+
node''s tag attribute will be updated to\nreflect whether the tag now matches
|
195
|
+
or not, i.e., the tag will be added\nto/removed from each node''s tag as appropriate.\n\nIf
|
196
|
+
the tag is used by any policies, the update will only be performed if the\noptional
|
197
|
+
parameter `force` is set to `true`. Otherwise, it will fail.\n# Access Control\n\nThis
|
198
|
+
command''s access control pattern: `commands:update-tag-rule:%{name}`\n\nWords
|
199
|
+
surrounded by `%{...}` are substitutions from the input data: typically\nthe
|
200
|
+
name of the object being modified, or some other critical detail, these\nallow
|
201
|
+
roles to be granted partial access to modify the system.\n\nFor more detail
|
202
|
+
on how the permission strings are structured and work, you can\nsee the [Shiro
|
203
|
+
Permissions documentation][shiro]. That pattern is expanded\nand then a permission
|
204
|
+
check applied to it, before the command is authorized.\n\nThese checks only
|
205
|
+
apply if security is enabled in the Razor configuration\nfile; on this server
|
206
|
+
security is currently disabled.\n\n[shiro]: http://shiro.apache.org/permissions.html\n\n#
|
207
|
+
Attributes\n\n * name\n - The tag for which to change the rule.\n - This
|
208
|
+
attribute is required.\n - It must be of type string.\n - It must match
|
209
|
+
the name of an existing tag.\n\n * rule\n - The new rule to apply to the
|
210
|
+
tag.\n - This attribute is required.\n - It must be of type array.\n\n
|
211
|
+
* force\n - By default this command will fail if the tag is in use by an
|
212
|
+
existing\n policy. This flag allows you to override that, and force the
|
213
|
+
change to\n apply despite the tag being in use.\n \n This will
|
214
|
+
not change policy binding of nodes, which may lead to some\n counter-intuitive
|
215
|
+
results such as a node that does *not* match policy\n tags being bound
|
216
|
+
to the policy.\n - It must be of type boolean.\n\n# EXAMPLES\n\n An example
|
217
|
+
of updating a tag rule, and forcing reevaluation:\n \n {\n \"name\":
|
218
|
+
\"small\",\n \"rule\": [\"<=\", [\"fact\", \"processorcount\"], \"2\"],\n \"force\":
|
219
|
+
true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
|
220
|
+
http_version:
|
221
|
+
recorded_at: Mon, 09 Mar 2015 19:54:34 GMT
|
99
222
|
recorded_with: VCR 2.5.0
|