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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +27 -0
  3. data/bin/razor +27 -2
  4. data/lib/razor/cli.rb +11 -2
  5. data/lib/razor/cli/command.rb +150 -0
  6. data/lib/razor/cli/document.rb +8 -4
  7. data/lib/razor/cli/format.rb +46 -22
  8. data/lib/razor/cli/navigate.rb +28 -156
  9. data/lib/razor/cli/parse.rb +49 -7
  10. data/lib/razor/cli/query.rb +69 -0
  11. data/lib/razor/cli/table_format.rb +41 -0
  12. data/lib/razor/cli/transforms.rb +25 -0
  13. data/lib/razor/cli/version.rb +1 -1
  14. data/lib/razor/cli/views.yaml +53 -2
  15. data/spec/cli/command_spec.rb +66 -0
  16. data/spec/cli/format_spec.rb +95 -5
  17. data/spec/cli/navigate_spec.rb +50 -6
  18. data/spec/cli/parse_spec.rb +42 -2
  19. data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_in_string.yml +233 -0
  20. data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_spaces.yml +281 -548
  21. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_--help_command_.yml +160 -37
  22. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_-h_command_.yml +160 -37
  23. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_--help_.yml +160 -37
  24. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_-h_.yml +160 -37
  25. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_help_.yml +160 -37
  26. data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_help_command_.yml +160 -37
  27. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_preserve_that_across_navigation.yml +10 -10
  28. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_supply_that_to_the_API_service.yml +5 -5
  29. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_bad_JSON.yml +71 -166
  30. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_malformed_argument.yml +109 -59
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_no_parameters/should_fail_with_bad_JSON.yml +98 -5
  39. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_limit.yml +69 -0
  40. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_start.yml +69 -0
  41. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_not_fail_when_query_returns_details_for_one_item.yml +313 -0
  42. data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_store_query_without_query_parameters.yml +557 -0
  43. 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
  44. 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
  45. data/spec/fixtures/vcr/Razor_CLI_Parse/_new/_help/should_print_a_list_of_known_endpoints.yml +5 -5
  46. data/spec/spec_helper.rb +8 -4
  47. metadata +26 -7
@@ -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:31 GMT
30
+ - Mon, 09 Mar 2015 19:54:23 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:31 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:54:23 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:31 GMT
65
+ - Mon, 09 Mar 2015 19:54:23 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:31 GMT
128
+ recorded_at: Mon, 09 Mar 2015 19:54:23 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:23 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:23 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:36 GMT
30
+ - Mon, 09 Mar 2015 19:54:29 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:36 GMT
35
+ recorded_at: Mon, 09 Mar 2015 19:54:29 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:36 GMT
65
+ - Mon, 09 Mar 2015 19:54:29 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:36 GMT
128
+ recorded_at: Mon, 09 Mar 2015 19:54:29 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:29 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:29 GMT
99
222
  recorded_with: VCR 2.5.0