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
- - '4982'
28
+ - '5650'
29
29
  Date:
30
- - Fri, 16 May 2014 21:36:47 GMT
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: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.14.1-113-g8b33d83-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: Fri, 16 May 2014 21:36:47 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:54:40 GMT
36
36
  - request:
37
37
  method: get
38
- uri: http://localhost:8080/api/commands/update-tag-rule
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.14.1-113-g8b33d83-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
- - '2307'
63
+ - '4691'
64
64
  Date:
65
- - Fri, 16 May 2014 21:36:47 GMT
65
+ - Mon, 09 Mar 2015 19:54:40 GMT
66
66
  body:
67
67
  encoding: US-ASCII
68
- string: '{"name":"update-tag-rule","help":{"full":"# SYNOPSIS\nUpdate the matching
69
- rule for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the
70
- given tag to the new rule. The tag will be\nreevaluated against all nodes
71
- and each node''s tag attribute will be updated to\nreflect whether the tag
72
- now matches or not, i.e., the tag will be added\nto/removed from each node''s
73
- tag as appropriate.\n\nIf the tag is used by any policies, the update will
74
- only be performed if the\noptional parameter `force` is set to `true`. Otherwise,
75
- it will fail.\n\n\n# Access Control\n\nThis command''s access control pattern:
76
- `commands:update-tag-rule:%{name}`\n\nWords surrounded by `%{...}` are substitutions
77
- from the input data: typically\nthe name of the object being modified, or
78
- some other critical detail, these\nallow roles to be granted partial access
79
- to modify the system.\n\nFor more detail on how the permission strings are
80
- structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
81
- pattern is expanded\nand then a permission check applied to it, before the
82
- command is authorized.\n\nThese checks only apply if security is enabled in
83
- the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
84
- http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * name\n -
85
- The tag to change the rule of\n - This attribute is required\n - It must
86
- be of type string.\n - It must match the name of an existing tag.\n\n *
87
- rule\n - The new rule to apply to the tag\n - This attribute is required\n -
88
- It must be of type array.\n\n * force\n - By default this command will fail
89
- if the tag is in use by an existing\n policy. This flag allows you to override
90
- that, and force the change to\n apply despite the tag being in use.\n \n This
91
- will 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 to
93
- the policy.\n - It must be of type boolean.\n\n\n\n# EXAMPLES\n An example
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\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
126
+ true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
97
127
  http_version:
98
- recorded_at: Fri, 16 May 2014 21:36:47 GMT
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: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
- - '4982'
28
+ - '5650'
29
29
  Date:
30
- - Fri, 16 May 2014 21:36:42 GMT
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: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.14.1-113-g8b33d83-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: Fri, 16 May 2014 21:36:42 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:54:34 GMT
36
36
  - request:
37
37
  method: get
38
- uri: http://localhost:8080/api/commands/update-tag-rule
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.14.1-113-g8b33d83-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
- - '2307'
63
+ - '4691'
64
64
  Date:
65
- - Fri, 16 May 2014 21:36:42 GMT
65
+ - Mon, 09 Mar 2015 19:54:34 GMT
66
66
  body:
67
67
  encoding: US-ASCII
68
- string: '{"name":"update-tag-rule","help":{"full":"# SYNOPSIS\nUpdate the matching
69
- rule for an existing tag\n\n# DESCRIPTION\nThis will change the rule of the
70
- given tag to the new rule. The tag will be\nreevaluated against all nodes
71
- and each node''s tag attribute will be updated to\nreflect whether the tag
72
- now matches or not, i.e., the tag will be added\nto/removed from each node''s
73
- tag as appropriate.\n\nIf the tag is used by any policies, the update will
74
- only be performed if the\noptional parameter `force` is set to `true`. Otherwise,
75
- it will fail.\n\n\n# Access Control\n\nThis command''s access control pattern:
76
- `commands:update-tag-rule:%{name}`\n\nWords surrounded by `%{...}` are substitutions
77
- from the input data: typically\nthe name of the object being modified, or
78
- some other critical detail, these\nallow roles to be granted partial access
79
- to modify the system.\n\nFor more detail on how the permission strings are
80
- structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
81
- pattern is expanded\nand then a permission check applied to it, before the
82
- command is authorized.\n\nThese checks only apply if security is enabled in
83
- the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
84
- http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * name\n -
85
- The tag to change the rule of\n - This attribute is required\n - It must
86
- be of type string.\n - It must match the name of an existing tag.\n\n *
87
- rule\n - The new rule to apply to the tag\n - This attribute is required\n -
88
- It must be of type array.\n\n * force\n - By default this command will fail
89
- if the tag is in use by an existing\n policy. This flag allows you to override
90
- that, and force the change to\n apply despite the tag being in use.\n \n This
91
- will 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 to
93
- the policy.\n - It must be of type boolean.\n\n\n\n# EXAMPLES\n An example
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\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
126
+ true\n }\n"},"schema":{"name":{"type":"string"},"rule":{"type":"array"},"force":{"type":"boolean"}}}'
97
127
  http_version:
98
- recorded_at: Fri, 16 May 2014 21:36:42 GMT
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