pe-razor-client 0.15.2.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS.md +27 -0
- data/bin/razor +27 -2
- data/lib/razor/cli.rb +11 -2
- data/lib/razor/cli/command.rb +150 -0
- data/lib/razor/cli/document.rb +8 -4
- data/lib/razor/cli/format.rb +46 -22
- data/lib/razor/cli/navigate.rb +28 -156
- data/lib/razor/cli/parse.rb +49 -7
- data/lib/razor/cli/query.rb +69 -0
- data/lib/razor/cli/table_format.rb +41 -0
- data/lib/razor/cli/transforms.rb +25 -0
- data/lib/razor/cli/version.rb +1 -1
- data/lib/razor/cli/views.yaml +53 -2
- data/spec/cli/command_spec.rb +66 -0
- data/spec/cli/format_spec.rb +95 -5
- data/spec/cli/navigate_spec.rb +50 -6
- data/spec/cli/parse_spec.rb +42 -2
- data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_in_string.yml +233 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/argument_formatting/should_allow_spaces.yml +281 -548
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_--help_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_-h_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_--help_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_-h_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_command_help_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/for_command_help/should_provide_command_help_for_razor_help_command_.yml +160 -37
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_preserve_that_across_navigation.yml +10 -10
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_authentication/should_supply_that_to_the_API_service.yml +5 -5
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_bad_JSON.yml +71 -166
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_invalid_parameter/should_fail_with_malformed_argument.yml +109 -59
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_an_array_into_an_existing_array.yml +527 -1360
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_the_arguments_as_an_array.yml +528 -1361
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_array/should_merge_the_arguments_into_an_existing_array.yml +528 -1361
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_construct_a_json_object.yml +80 -111
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_construct_a_json_object_with_unicode.yml +137 -123
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_fail_with_mixed_types_array_then_hash_.yml +71 -166
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_multiple_arguments_with_same_name/combining_as_an_object/should_fail_with_mixed_types_hash_then_array_.yml +71 -102
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_no_parameters/should_fail_with_bad_JSON.yml +98 -5
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_limit.yml +69 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_append_start.yml +69 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_not_fail_when_query_returns_details_for_one_item.yml +313 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_store_query_without_query_parameters.yml +557 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_throw_an_error_if_the_query_parameter_is_not_in_the_API.yml +36 -0
- data/spec/fixtures/vcr/Razor_CLI_Navigate/with_query_parameters/should_throw_an_error_if_the_query_parameter_is_not_in_the_API_from_a_single_item.yml +280 -0
- data/spec/fixtures/vcr/Razor_CLI_Parse/_new/_help/should_print_a_list_of_known_endpoints.yml +5 -5
- data/spec/spec_helper.rb +8 -4
- metadata +26 -7
@@ -0,0 +1,557 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:8150/api
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- application/json
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip, deflate
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- Apache-Coyote/1.1
|
23
|
+
X-Content-Type-Options:
|
24
|
+
- nosniff
|
25
|
+
Content-Type:
|
26
|
+
- application/json;charset=utf-8
|
27
|
+
Content-Length:
|
28
|
+
- '5650'
|
29
|
+
Date:
|
30
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
31
|
+
body:
|
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: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
|
+
http_version:
|
35
|
+
recorded_at: Mon, 09 Mar 2015 19:55:23 GMT
|
36
|
+
- request:
|
37
|
+
method: get
|
38
|
+
uri: http://localhost:8150/api/commands/register-node
|
39
|
+
body:
|
40
|
+
encoding: US-ASCII
|
41
|
+
string: ''
|
42
|
+
headers:
|
43
|
+
Accept:
|
44
|
+
- application/json
|
45
|
+
Accept-Encoding:
|
46
|
+
- gzip, deflate
|
47
|
+
User-Agent:
|
48
|
+
- Ruby
|
49
|
+
response:
|
50
|
+
status:
|
51
|
+
code: 200
|
52
|
+
message: OK
|
53
|
+
headers:
|
54
|
+
Server:
|
55
|
+
- Apache-Coyote/1.1
|
56
|
+
Etag:
|
57
|
+
- '"server-version-v0.16.1-18-gd3acc7a-dirty"'
|
58
|
+
X-Content-Type-Options:
|
59
|
+
- nosniff
|
60
|
+
Content-Type:
|
61
|
+
- application/json;charset=utf-8
|
62
|
+
Content-Length:
|
63
|
+
- '6207'
|
64
|
+
Date:
|
65
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
66
|
+
body:
|
67
|
+
encoding: US-ASCII
|
68
|
+
string: '{"name":"register-node","help":{"summary":"Register a node with Razor
|
69
|
+
before it is discovered","description":"In order to make brownfield deployments
|
70
|
+
of Razor easier we allow users to\nregister nodes explicitly. This command
|
71
|
+
allows you to perform the same\nregistration that would happen when a new
|
72
|
+
node checked in, ahead of time.\n\nIn order for this to be effective the hw_info
|
73
|
+
must contain enough information\nthat the node can successfully be matched
|
74
|
+
during the iPXE boot phase.\n\nIf the node matches an existing node, in keeping
|
75
|
+
with the overall policy of\ncommands declaring desired state, the node installed
|
76
|
+
field will be updated to\nmatch the value in this command.\n\nThe final state
|
77
|
+
is that a node with the supplied hardware information, and the\ndesired installed
|
78
|
+
state, will be present in the database, regardless of it\nexisting before
|
79
|
+
hand or not.","schema":"# Access Control\n\nThis command''s access control
|
80
|
+
pattern: `commands:register-node`\n\nFor more detail on how the permission
|
81
|
+
strings are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
|
82
|
+
pattern is expanded\nand then a permission check applied to it, before the
|
83
|
+
command is authorized.\n\nThese checks only apply if security is enabled in
|
84
|
+
the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
|
85
|
+
http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
|
86
|
+
Should the node be considered ''installed'' already? Installed nodes are\n not
|
87
|
+
eligible for policy matching, and will simply boot locally.\n - This attribute
|
88
|
+
is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
|
89
|
+
information for the node. This is used to match the node on first\n boot
|
90
|
+
with the record in the database. The order of MAC address assignment in\n this
|
91
|
+
data is not significant, as a node with reordered MAC addresses will be\n treated
|
92
|
+
as the same node.\n - This attribute is required.\n - It must be of type
|
93
|
+
object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
|
94
|
+
serial\n - The DMI serial number of the node\n - It must be of type
|
95
|
+
string.\n \n * asset\n - The DMI asset tag of the node\n -
|
96
|
+
It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
|
97
|
+
It must be of type string.\n","examples":{"api":"Register a machine before
|
98
|
+
you boot it, and note that it already has an OS\ninstalled, so should not
|
99
|
+
be subject to policy-based reinstallation:\n\n {\n \"hw_info\": {\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
|
100
|
+
\"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
|
101
|
+
Settable\"\n },\n \"installed\": true\n }","cli":"Register a
|
102
|
+
machine before you boot it, and note that it already has an OS\ninstalled,
|
103
|
+
so should not be subject to policy-based reinstallation:\n\n razor register-node
|
104
|
+
--hw-info net0=78:31:c1:be:c8:00 \\\n --hw-info net1=72:00:01:f2:13:f0
|
105
|
+
\\\n --hw-info net2=72:00:01:f2:13:f1 \\\n --hw-info serial=xxxxxxxxxxx
|
106
|
+
\\\n --hw-info asset=Asset-1234567890 \\\n --hw-info uuid=\"Not
|
107
|
+
Settable\" \\\n --installed"},"full":"# SYNOPSIS\nRegister a node with
|
108
|
+
Razor before it is discovered\n\n# DESCRIPTION\nIn order to make brownfield
|
109
|
+
deployments of Razor easier we allow users to\nregister nodes explicitly. This
|
110
|
+
command allows you to perform the same\nregistration that would happen when
|
111
|
+
a new node checked in, ahead of time.\n\nIn order for this to be effective
|
112
|
+
the hw_info must contain enough information\nthat the node can successfully
|
113
|
+
be matched during the iPXE boot phase.\n\nIf the node matches an existing
|
114
|
+
node, in keeping with the overall policy of\ncommands declaring desired state,
|
115
|
+
the node installed field will be updated to\nmatch the value in this command.\n\nThe
|
116
|
+
final state is that a node with the supplied hardware information, and the\ndesired
|
117
|
+
installed state, will be present in the database, regardless of it\nexisting
|
118
|
+
before hand or not.\n# Access Control\n\nThis command''s access control pattern:
|
119
|
+
`commands:register-node`\n\nFor more detail on how the permission strings
|
120
|
+
are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
|
121
|
+
pattern is expanded\nand then a permission check applied to it, before the
|
122
|
+
command is authorized.\n\nThese checks only apply if security is enabled in
|
123
|
+
the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
|
124
|
+
http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
|
125
|
+
Should the node be considered ''installed'' already? Installed nodes are\n not
|
126
|
+
eligible for policy matching, and will simply boot locally.\n - This attribute
|
127
|
+
is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
|
128
|
+
information for the node. This is used to match the node on first\n boot
|
129
|
+
with the record in the database. The order of MAC address assignment in\n this
|
130
|
+
data is not significant, as a node with reordered MAC addresses will be\n treated
|
131
|
+
as the same node.\n - This attribute is required.\n - It must be of type
|
132
|
+
object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
|
133
|
+
serial\n - The DMI serial number of the node\n - It must be of type
|
134
|
+
string.\n \n * asset\n - The DMI asset tag of the node\n -
|
135
|
+
It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
|
136
|
+
It must be of type string.\n\n# EXAMPLES\n\n Register a machine before you
|
137
|
+
boot it, and note that it already has an OS\n installed, so should not be
|
138
|
+
subject to policy-based reinstallation:\n \n {\n \"hw_info\":
|
139
|
+
{\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
|
140
|
+
\"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
|
141
|
+
Settable\"\n },\n \"installed\": true\n }\n"},"schema":{"installed":{"type":"boolean"},"hw_info":{"type":"object","aliases":["hw-info"]}}}'
|
142
|
+
http_version:
|
143
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
144
|
+
- request:
|
145
|
+
method: post
|
146
|
+
uri: http://localhost:8150/api/commands/register-node
|
147
|
+
body:
|
148
|
+
encoding: UTF-8
|
149
|
+
string: '{"installed":true,"hw_info":{"net0":"78:31:c1:be:c8:00"}}'
|
150
|
+
headers:
|
151
|
+
Accept:
|
152
|
+
- application/json
|
153
|
+
Accept-Encoding:
|
154
|
+
- gzip, deflate
|
155
|
+
Content-Type:
|
156
|
+
- application/json
|
157
|
+
Content-Length:
|
158
|
+
- '57'
|
159
|
+
User-Agent:
|
160
|
+
- Ruby
|
161
|
+
response:
|
162
|
+
status:
|
163
|
+
code: 202
|
164
|
+
message: Accepted
|
165
|
+
headers:
|
166
|
+
Server:
|
167
|
+
- Apache-Coyote/1.1
|
168
|
+
X-Content-Type-Options:
|
169
|
+
- nosniff
|
170
|
+
Content-Type:
|
171
|
+
- application/json;charset=utf-8
|
172
|
+
Content-Length:
|
173
|
+
- '203'
|
174
|
+
Date:
|
175
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
176
|
+
body:
|
177
|
+
encoding: US-ASCII
|
178
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","command":"http://localhost:8150/api/collections/commands/1"}'
|
179
|
+
http_version:
|
180
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
181
|
+
- request:
|
182
|
+
method: get
|
183
|
+
uri: http://localhost:8150/api/collections/nodes/node1
|
184
|
+
body:
|
185
|
+
encoding: US-ASCII
|
186
|
+
string: ''
|
187
|
+
headers:
|
188
|
+
Accept:
|
189
|
+
- application/json
|
190
|
+
Accept-Encoding:
|
191
|
+
- gzip, deflate
|
192
|
+
User-Agent:
|
193
|
+
- Ruby
|
194
|
+
response:
|
195
|
+
status:
|
196
|
+
code: 200
|
197
|
+
message: OK
|
198
|
+
headers:
|
199
|
+
Server:
|
200
|
+
- Apache-Coyote/1.1
|
201
|
+
X-Content-Type-Options:
|
202
|
+
- nosniff
|
203
|
+
Content-Type:
|
204
|
+
- application/json;charset=utf-8
|
205
|
+
Content-Length:
|
206
|
+
- '409'
|
207
|
+
Date:
|
208
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
209
|
+
body:
|
210
|
+
encoding: US-ASCII
|
211
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","hw_info":{"mac":["78:31:c1:be:c8:00"]},"log":{"id":"http://localhost:8150/api/collections/nodes/node1/log","name":"log","params":{"limit":{"type":"number"},"start":{"type":"number"}}},"tags":[],"state":{"installed":"true","installed_at":"2015-03-09T14:55:24-05:00"}}'
|
212
|
+
http_version:
|
213
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
214
|
+
- request:
|
215
|
+
method: get
|
216
|
+
uri: http://localhost:8150/api
|
217
|
+
body:
|
218
|
+
encoding: US-ASCII
|
219
|
+
string: ''
|
220
|
+
headers:
|
221
|
+
Accept:
|
222
|
+
- application/json
|
223
|
+
Accept-Encoding:
|
224
|
+
- gzip, deflate
|
225
|
+
User-Agent:
|
226
|
+
- Ruby
|
227
|
+
response:
|
228
|
+
status:
|
229
|
+
code: 200
|
230
|
+
message: OK
|
231
|
+
headers:
|
232
|
+
Server:
|
233
|
+
- Apache-Coyote/1.1
|
234
|
+
X-Content-Type-Options:
|
235
|
+
- nosniff
|
236
|
+
Content-Type:
|
237
|
+
- application/json;charset=utf-8
|
238
|
+
Content-Length:
|
239
|
+
- '5650'
|
240
|
+
Date:
|
241
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
242
|
+
body:
|
243
|
+
encoding: US-ASCII
|
244
|
+
string: '{"commands":[{"name":"add-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/add-policy-tag","id":"http://localhost:8150/api/commands/add-policy-tag"},{"name":"create-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/create-broker","id":"http://localhost:8150/api/commands/create-broker"},{"name":"create-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/create-hook","id":"http://localhost:8150/api/commands/create-hook"},{"name":"create-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/create-policy","id":"http://localhost:8150/api/commands/create-policy"},{"name":"create-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/create-repo","id":"http://localhost:8150/api/commands/create-repo"},{"name":"create-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/create-tag","id":"http://localhost:8150/api/commands/create-tag"},{"name":"create-task","rel":"http://api.puppetlabs.com/razor/v1/commands/create-task","id":"http://localhost:8150/api/commands/create-task"},{"name":"delete-broker","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-broker","id":"http://localhost:8150/api/commands/delete-broker"},{"name":"delete-hook","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-hook","id":"http://localhost:8150/api/commands/delete-hook"},{"name":"delete-node","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-node","id":"http://localhost:8150/api/commands/delete-node"},{"name":"delete-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-policy","id":"http://localhost:8150/api/commands/delete-policy"},{"name":"delete-repo","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-repo","id":"http://localhost:8150/api/commands/delete-repo"},{"name":"delete-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/delete-tag","id":"http://localhost:8150/api/commands/delete-tag"},{"name":"disable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/disable-policy","id":"http://localhost:8150/api/commands/disable-policy"},{"name":"enable-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/enable-policy","id":"http://localhost:8150/api/commands/enable-policy"},{"name":"modify-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-node-metadata","id":"http://localhost:8150/api/commands/modify-node-metadata"},{"name":"modify-policy-max-count","rel":"http://api.puppetlabs.com/razor/v1/commands/modify-policy-max-count","id":"http://localhost:8150/api/commands/modify-policy-max-count"},{"name":"move-policy","rel":"http://api.puppetlabs.com/razor/v1/commands/move-policy","id":"http://localhost:8150/api/commands/move-policy"},{"name":"reboot-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reboot-node","id":"http://localhost:8150/api/commands/reboot-node"},{"name":"register-node","rel":"http://api.puppetlabs.com/razor/v1/commands/register-node","id":"http://localhost:8150/api/commands/register-node"},{"name":"reinstall-node","rel":"http://api.puppetlabs.com/razor/v1/commands/reinstall-node","id":"http://localhost:8150/api/commands/reinstall-node"},{"name":"remove-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-node-metadata","id":"http://localhost:8150/api/commands/remove-node-metadata"},{"name":"remove-policy-tag","rel":"http://api.puppetlabs.com/razor/v1/commands/remove-policy-tag","id":"http://localhost:8150/api/commands/remove-policy-tag"},{"name":"set-node-desired-power-state","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-desired-power-state","id":"http://localhost:8150/api/commands/set-node-desired-power-state"},{"name":"set-node-hw-info","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-hw-info","id":"http://localhost:8150/api/commands/set-node-hw-info"},{"name":"set-node-ipmi-credentials","rel":"http://api.puppetlabs.com/razor/v1/commands/set-node-ipmi-credentials","id":"http://localhost:8150/api/commands/set-node-ipmi-credentials"},{"name":"update-node-metadata","rel":"http://api.puppetlabs.com/razor/v1/commands/update-node-metadata","id":"http://localhost:8150/api/commands/update-node-metadata"},{"name":"update-tag-rule","rel":"http://api.puppetlabs.com/razor/v1/commands/update-tag-rule","id":"http://localhost:8150/api/commands/update-tag-rule"}],"collections":[{"name":"brokers","rel":"http://api.puppetlabs.com/razor/v1/collections/brokers","id":"http://localhost:8150/api/collections/brokers"},{"name":"repos","rel":"http://api.puppetlabs.com/razor/v1/collections/repos","id":"http://localhost:8150/api/collections/repos"},{"name":"tags","rel":"http://api.puppetlabs.com/razor/v1/collections/tags","id":"http://localhost:8150/api/collections/tags"},{"name":"policies","rel":"http://api.puppetlabs.com/razor/v1/collections/policies","id":"http://localhost:8150/api/collections/policies"},{"name":"nodes","rel":"http://api.puppetlabs.com/razor/v1/collections/nodes","id":"http://localhost:8150/api/collections/nodes","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"tasks","rel":"http://api.puppetlabs.com/razor/v1/collections/tasks","id":"http://localhost:8150/api/collections/tasks"},{"name":"commands","rel":"http://api.puppetlabs.com/razor/v1/collections/commands","id":"http://localhost:8150/api/collections/commands"},{"name":"events","rel":"http://api.puppetlabs.com/razor/v1/collections/events","id":"http://localhost:8150/api/collections/events","params":{"start":{"type":"number"},"limit":{"type":"number"}}},{"name":"hooks","rel":"http://api.puppetlabs.com/razor/v1/collections/hooks","id":"http://localhost:8150/api/collections/hooks"}],"version":{"server":"v0.16.1-18-gd3acc7a-dirty"}}'
|
245
|
+
http_version:
|
246
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
247
|
+
- request:
|
248
|
+
method: get
|
249
|
+
uri: http://localhost:8150/api/commands/register-node
|
250
|
+
body:
|
251
|
+
encoding: US-ASCII
|
252
|
+
string: ''
|
253
|
+
headers:
|
254
|
+
Accept:
|
255
|
+
- application/json
|
256
|
+
Accept-Encoding:
|
257
|
+
- gzip, deflate
|
258
|
+
User-Agent:
|
259
|
+
- Ruby
|
260
|
+
response:
|
261
|
+
status:
|
262
|
+
code: 200
|
263
|
+
message: OK
|
264
|
+
headers:
|
265
|
+
Server:
|
266
|
+
- Apache-Coyote/1.1
|
267
|
+
Etag:
|
268
|
+
- '"server-version-v0.16.1-18-gd3acc7a-dirty"'
|
269
|
+
X-Content-Type-Options:
|
270
|
+
- nosniff
|
271
|
+
Content-Type:
|
272
|
+
- application/json;charset=utf-8
|
273
|
+
Content-Length:
|
274
|
+
- '6207'
|
275
|
+
Date:
|
276
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
277
|
+
body:
|
278
|
+
encoding: US-ASCII
|
279
|
+
string: '{"name":"register-node","help":{"summary":"Register a node with Razor
|
280
|
+
before it is discovered","description":"In order to make brownfield deployments
|
281
|
+
of Razor easier we allow users to\nregister nodes explicitly. This command
|
282
|
+
allows you to perform the same\nregistration that would happen when a new
|
283
|
+
node checked in, ahead of time.\n\nIn order for this to be effective the hw_info
|
284
|
+
must contain enough information\nthat the node can successfully be matched
|
285
|
+
during the iPXE boot phase.\n\nIf the node matches an existing node, in keeping
|
286
|
+
with the overall policy of\ncommands declaring desired state, the node installed
|
287
|
+
field will be updated to\nmatch the value in this command.\n\nThe final state
|
288
|
+
is that a node with the supplied hardware information, and the\ndesired installed
|
289
|
+
state, will be present in the database, regardless of it\nexisting before
|
290
|
+
hand or not.","schema":"# Access Control\n\nThis command''s access control
|
291
|
+
pattern: `commands:register-node`\n\nFor more detail on how the permission
|
292
|
+
strings are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
|
293
|
+
pattern is expanded\nand then a permission check applied to it, before the
|
294
|
+
command is authorized.\n\nThese checks only apply if security is enabled in
|
295
|
+
the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
|
296
|
+
http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
|
297
|
+
Should the node be considered ''installed'' already? Installed nodes are\n not
|
298
|
+
eligible for policy matching, and will simply boot locally.\n - This attribute
|
299
|
+
is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
|
300
|
+
information for the node. This is used to match the node on first\n boot
|
301
|
+
with the record in the database. The order of MAC address assignment in\n this
|
302
|
+
data is not significant, as a node with reordered MAC addresses will be\n treated
|
303
|
+
as the same node.\n - This attribute is required.\n - It must be of type
|
304
|
+
object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
|
305
|
+
serial\n - The DMI serial number of the node\n - It must be of type
|
306
|
+
string.\n \n * asset\n - The DMI asset tag of the node\n -
|
307
|
+
It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
|
308
|
+
It must be of type string.\n","examples":{"api":"Register a machine before
|
309
|
+
you boot it, and note that it already has an OS\ninstalled, so should not
|
310
|
+
be subject to policy-based reinstallation:\n\n {\n \"hw_info\": {\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
|
311
|
+
\"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
|
312
|
+
Settable\"\n },\n \"installed\": true\n }","cli":"Register a
|
313
|
+
machine before you boot it, and note that it already has an OS\ninstalled,
|
314
|
+
so should not be subject to policy-based reinstallation:\n\n razor register-node
|
315
|
+
--hw-info net0=78:31:c1:be:c8:00 \\\n --hw-info net1=72:00:01:f2:13:f0
|
316
|
+
\\\n --hw-info net2=72:00:01:f2:13:f1 \\\n --hw-info serial=xxxxxxxxxxx
|
317
|
+
\\\n --hw-info asset=Asset-1234567890 \\\n --hw-info uuid=\"Not
|
318
|
+
Settable\" \\\n --installed"},"full":"# SYNOPSIS\nRegister a node with
|
319
|
+
Razor before it is discovered\n\n# DESCRIPTION\nIn order to make brownfield
|
320
|
+
deployments of Razor easier we allow users to\nregister nodes explicitly. This
|
321
|
+
command allows you to perform the same\nregistration that would happen when
|
322
|
+
a new node checked in, ahead of time.\n\nIn order for this to be effective
|
323
|
+
the hw_info must contain enough information\nthat the node can successfully
|
324
|
+
be matched during the iPXE boot phase.\n\nIf the node matches an existing
|
325
|
+
node, in keeping with the overall policy of\ncommands declaring desired state,
|
326
|
+
the node installed field will be updated to\nmatch the value in this command.\n\nThe
|
327
|
+
final state is that a node with the supplied hardware information, and the\ndesired
|
328
|
+
installed state, will be present in the database, regardless of it\nexisting
|
329
|
+
before hand or not.\n# Access Control\n\nThis command''s access control pattern:
|
330
|
+
`commands:register-node`\n\nFor more detail on how the permission strings
|
331
|
+
are structured and work, you can\nsee the [Shiro Permissions documentation][shiro]. That
|
332
|
+
pattern is expanded\nand then a permission check applied to it, before the
|
333
|
+
command is authorized.\n\nThese checks only apply if security is enabled in
|
334
|
+
the Razor configuration\nfile; on this server security is currently disabled.\n\n[shiro]:
|
335
|
+
http://shiro.apache.org/permissions.html\n\n# Attributes\n\n * installed\n -
|
336
|
+
Should the node be considered ''installed'' already? Installed nodes are\n not
|
337
|
+
eligible for policy matching, and will simply boot locally.\n - This attribute
|
338
|
+
is required.\n - It must be of type boolean.\n\n * hw_info\n - The hardware
|
339
|
+
information for the node. This is used to match the node on first\n boot
|
340
|
+
with the record in the database. The order of MAC address assignment in\n this
|
341
|
+
data is not significant, as a node with reordered MAC addresses will be\n treated
|
342
|
+
as the same node.\n - This attribute is required.\n - It must be of type
|
343
|
+
object.\n - It must be between 1 and Infinity in length.\n # Attributes\n \n *
|
344
|
+
serial\n - The DMI serial number of the node\n - It must be of type
|
345
|
+
string.\n \n * asset\n - The DMI asset tag of the node\n -
|
346
|
+
It must be of type string.\n \n * uuid\n - The DMI UUID of the node\n -
|
347
|
+
It must be of type string.\n\n# EXAMPLES\n\n Register a machine before you
|
348
|
+
boot it, and note that it already has an OS\n installed, so should not be
|
349
|
+
subject to policy-based reinstallation:\n \n {\n \"hw_info\":
|
350
|
+
{\n \"net0\": \"78:31:c1:be:c8:00\",\n \"net1\": \"72:00:01:f2:13:f0\",\n \"net2\": \"72:00:01:f2:13:f1\",\n \"serial\":
|
351
|
+
\"xxxxxxxxxxx\",\n \"asset\": \"Asset-1234567890\",\n \"uuid\": \"Not
|
352
|
+
Settable\"\n },\n \"installed\": true\n }\n"},"schema":{"installed":{"type":"boolean"},"hw_info":{"type":"object","aliases":["hw-info"]}}}'
|
353
|
+
http_version:
|
354
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
355
|
+
- request:
|
356
|
+
method: post
|
357
|
+
uri: http://localhost:8150/api/commands/register-node
|
358
|
+
body:
|
359
|
+
encoding: UTF-8
|
360
|
+
string: '{"installed":true,"hw_info":{"net0":"78:31:c1:be:c8:01"}}'
|
361
|
+
headers:
|
362
|
+
Accept:
|
363
|
+
- application/json
|
364
|
+
Accept-Encoding:
|
365
|
+
- gzip, deflate
|
366
|
+
Content-Type:
|
367
|
+
- application/json
|
368
|
+
Content-Length:
|
369
|
+
- '57'
|
370
|
+
User-Agent:
|
371
|
+
- Ruby
|
372
|
+
response:
|
373
|
+
status:
|
374
|
+
code: 202
|
375
|
+
message: Accepted
|
376
|
+
headers:
|
377
|
+
Server:
|
378
|
+
- Apache-Coyote/1.1
|
379
|
+
X-Content-Type-Options:
|
380
|
+
- nosniff
|
381
|
+
Content-Type:
|
382
|
+
- application/json;charset=utf-8
|
383
|
+
Content-Length:
|
384
|
+
- '203'
|
385
|
+
Date:
|
386
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
387
|
+
body:
|
388
|
+
encoding: US-ASCII
|
389
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node2","name":"node2","command":"http://localhost:8150/api/collections/commands/2"}'
|
390
|
+
http_version:
|
391
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
392
|
+
- request:
|
393
|
+
method: get
|
394
|
+
uri: http://localhost:8150/api/collections/nodes/node2
|
395
|
+
body:
|
396
|
+
encoding: US-ASCII
|
397
|
+
string: ''
|
398
|
+
headers:
|
399
|
+
Accept:
|
400
|
+
- application/json
|
401
|
+
Accept-Encoding:
|
402
|
+
- gzip, deflate
|
403
|
+
User-Agent:
|
404
|
+
- Ruby
|
405
|
+
response:
|
406
|
+
status:
|
407
|
+
code: 200
|
408
|
+
message: OK
|
409
|
+
headers:
|
410
|
+
Server:
|
411
|
+
- Apache-Coyote/1.1
|
412
|
+
X-Content-Type-Options:
|
413
|
+
- nosniff
|
414
|
+
Content-Type:
|
415
|
+
- application/json;charset=utf-8
|
416
|
+
Content-Length:
|
417
|
+
- '409'
|
418
|
+
Date:
|
419
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
420
|
+
body:
|
421
|
+
encoding: US-ASCII
|
422
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node2","name":"node2","hw_info":{"mac":["78:31:c1:be:c8:01"]},"log":{"id":"http://localhost:8150/api/collections/nodes/node2/log","name":"log","params":{"limit":{"type":"number"},"start":{"type":"number"}}},"tags":[],"state":{"installed":"true","installed_at":"2015-03-09T14:55:24-05:00"}}'
|
423
|
+
http_version:
|
424
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
425
|
+
- request:
|
426
|
+
method: get
|
427
|
+
uri: http://fred:dead@localhost:8150/api
|
428
|
+
body:
|
429
|
+
encoding: US-ASCII
|
430
|
+
string: ''
|
431
|
+
headers:
|
432
|
+
Accept:
|
433
|
+
- application/json
|
434
|
+
Accept-Encoding:
|
435
|
+
- gzip, deflate
|
436
|
+
User-Agent:
|
437
|
+
- Ruby
|
438
|
+
response:
|
439
|
+
status:
|
440
|
+
code: 200
|
441
|
+
message: OK
|
442
|
+
headers:
|
443
|
+
Server:
|
444
|
+
- Apache-Coyote/1.1
|
445
|
+
X-Content-Type-Options:
|
446
|
+
- nosniff
|
447
|
+
Content-Type:
|
448
|
+
- application/json;charset=utf-8
|
449
|
+
Content-Length:
|
450
|
+
- '5650'
|
451
|
+
Date:
|
452
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
453
|
+
body:
|
454
|
+
encoding: US-ASCII
|
455
|
+
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"}}'
|
456
|
+
http_version:
|
457
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
458
|
+
- request:
|
459
|
+
method: get
|
460
|
+
uri: http://fred:dead@localhost:8150/api/collections/nodes
|
461
|
+
body:
|
462
|
+
encoding: US-ASCII
|
463
|
+
string: ''
|
464
|
+
headers:
|
465
|
+
Accept:
|
466
|
+
- application/json
|
467
|
+
Accept-Encoding:
|
468
|
+
- gzip, deflate
|
469
|
+
User-Agent:
|
470
|
+
- Ruby
|
471
|
+
response:
|
472
|
+
status:
|
473
|
+
code: 200
|
474
|
+
message: OK
|
475
|
+
headers:
|
476
|
+
Server:
|
477
|
+
- Apache-Coyote/1.1
|
478
|
+
X-Content-Type-Options:
|
479
|
+
- nosniff
|
480
|
+
Content-Type:
|
481
|
+
- application/json;charset=utf-8
|
482
|
+
Content-Length:
|
483
|
+
- '369'
|
484
|
+
Date:
|
485
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
486
|
+
body:
|
487
|
+
encoding: US-ASCII
|
488
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes","items":[{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1"},{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node2","name":"node2"}],"total":2}'
|
489
|
+
http_version:
|
490
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
491
|
+
- request:
|
492
|
+
method: get
|
493
|
+
uri: http://fred:dead@localhost:8150/api/collections/nodes/node1
|
494
|
+
body:
|
495
|
+
encoding: US-ASCII
|
496
|
+
string: ''
|
497
|
+
headers:
|
498
|
+
Accept:
|
499
|
+
- application/json
|
500
|
+
Accept-Encoding:
|
501
|
+
- gzip, deflate
|
502
|
+
User-Agent:
|
503
|
+
- Ruby
|
504
|
+
response:
|
505
|
+
status:
|
506
|
+
code: 200
|
507
|
+
message: OK
|
508
|
+
headers:
|
509
|
+
Server:
|
510
|
+
- Apache-Coyote/1.1
|
511
|
+
X-Content-Type-Options:
|
512
|
+
- nosniff
|
513
|
+
Content-Type:
|
514
|
+
- application/json;charset=utf-8
|
515
|
+
Content-Length:
|
516
|
+
- '409'
|
517
|
+
Date:
|
518
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
519
|
+
body:
|
520
|
+
encoding: US-ASCII
|
521
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/member","id":"http://localhost:8150/api/collections/nodes/node1","name":"node1","hw_info":{"mac":["78:31:c1:be:c8:00"]},"log":{"id":"http://localhost:8150/api/collections/nodes/node1/log","name":"log","params":{"limit":{"type":"number"},"start":{"type":"number"}}},"tags":[],"state":{"installed":"true","installed_at":"2015-03-09T14:55:24-05:00"}}'
|
522
|
+
http_version:
|
523
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
524
|
+
- request:
|
525
|
+
method: get
|
526
|
+
uri: http://fred:dead@localhost:8150/api/collections/nodes/node1/log?limit=1
|
527
|
+
body:
|
528
|
+
encoding: US-ASCII
|
529
|
+
string: ''
|
530
|
+
headers:
|
531
|
+
Accept:
|
532
|
+
- application/json
|
533
|
+
Accept-Encoding:
|
534
|
+
- gzip, deflate
|
535
|
+
User-Agent:
|
536
|
+
- Ruby
|
537
|
+
response:
|
538
|
+
status:
|
539
|
+
code: 200
|
540
|
+
message: OK
|
541
|
+
headers:
|
542
|
+
Server:
|
543
|
+
- Apache-Coyote/1.1
|
544
|
+
X-Content-Type-Options:
|
545
|
+
- nosniff
|
546
|
+
Content-Type:
|
547
|
+
- application/json;charset=utf-8
|
548
|
+
Content-Length:
|
549
|
+
- '78'
|
550
|
+
Date:
|
551
|
+
- Mon, 09 Mar 2015 19:55:23 GMT
|
552
|
+
body:
|
553
|
+
encoding: US-ASCII
|
554
|
+
string: '{"spec":"http://api.puppetlabs.com/razor/v1/collections/nodes/log","items":[]}'
|
555
|
+
http_version:
|
556
|
+
recorded_at: Mon, 09 Mar 2015 19:55:24 GMT
|
557
|
+
recorded_with: VCR 2.5.0
|