teamcity_ruby 0.0.4 → 0.0.5

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 (20) hide show
  1. data/lib/teamcity_ruby/agent_pool.rb +39 -0
  2. data/lib/teamcity_ruby/version.rb +1 -1
  3. data/lib/teamcity_ruby.rb +1 -0
  4. data/spec/cassettes/TeamcityRuby_AgentPool/creates_an_agent_pool.yml +299 -0
  5. data/spec/cassettes/TeamcityRuby_BuildConfiguration/an_existing_build_configuration/has_a_build_step_added_to_it.yml +107 -107
  6. data/spec/cassettes/TeamcityRuby_BuildConfiguration/an_existing_build_configuration/has_a_build_trigger_added_to_it.yml +95 -95
  7. data/spec/cassettes/TeamcityRuby_BuildConfiguration/an_existing_build_configuration/has_a_vcs_root_attached_to_it_with_specific_checkout_rules.yml +109 -109
  8. data/spec/cassettes/TeamcityRuby_BuildConfiguration/an_existing_build_configuration/has_settings_definitions.yml +107 -107
  9. data/spec/cassettes/TeamcityRuby_BuildConfiguration/fetches_a_specific_build_configuration_by_id.yml +83 -83
  10. data/spec/cassettes/TeamcityRuby_BuildConfiguration/lists_all_build_configurations.yml +103 -169
  11. data/spec/cassettes/TeamcityRuby_Project/creates_a_project_copying_its_settings_from_a_source_project.yml +96 -96
  12. data/spec/cassettes/TeamcityRuby_Project/creates_a_project_with_a_parent_project.yml +49 -49
  13. data/spec/cassettes/TeamcityRuby_Project/destroys_a_specific_project.yml +69 -69
  14. data/spec/cassettes/TeamcityRuby_Project/fetches_a_specific_project_by_id_locator.yml +69 -69
  15. data/spec/cassettes/TeamcityRuby_Project/fetches_a_specific_project_by_name_locator.yml +59 -59
  16. data/spec/cassettes/TeamcityRuby_Project/lists_all_projects_including_root_built_in_on_TeamCity_.yml +71 -71
  17. data/spec/cassettes/TeamcityRuby_VcsRoot/lists_all_vcs_roots.yml +51 -51
  18. data/spec/spec_helper.rb +6 -0
  19. data/spec/teamcity_ruby/agent_pool_spec.rb +25 -0
  20. metadata +8 -3
@@ -0,0 +1,39 @@
1
+ module TeamcityRuby
2
+ class AgentPool
3
+ extend TeamcityRuby::Resource
4
+
5
+ attr_accessor :teamcity_id
6
+
7
+ url_path "/agentPools"
8
+ resource_name "agentPool"
9
+
10
+ def self.create(name, options = {})
11
+ payload = { "name" => name }.to_json
12
+ response = client.post("/agentPools", :body => payload)
13
+ new(response)
14
+ end
15
+
16
+ def initialize(options = {})
17
+ @teamcity_id = options["id"]
18
+ @name = options["name"]
19
+ end
20
+
21
+ def destroy!
22
+ client.delete("/agentPools/id:#{teamcity_id}")
23
+ end
24
+
25
+ def add_project(options = {})
26
+ raise "Agent pool needs a teamcity_id" unless self.teamcity_id
27
+ project_id = options.fetch(:project_id) { raise ":project_id is required" }
28
+ payload = { "id" => project_id }
29
+ response = client.post("/agentPools/id:#{self.teamcity_id}/projects", :body => payload.to_json)
30
+ end
31
+
32
+ def projects
33
+ raise "Agent pool needs a teamcity_id" unless self.teamcity_id
34
+ client.get("/agentPools/id:#{self.teamcity_id}/projects")["project"].map do |p|
35
+ Project.new(p)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module TeamcityRuby
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/teamcity_ruby.rb CHANGED
@@ -28,3 +28,4 @@ require File.join(directory, 'teamcity_ruby', 'element_builder')
28
28
  require File.join(directory, 'teamcity_ruby', 'project')
29
29
  require File.join(directory, 'teamcity_ruby', 'vcs_root')
30
30
  require File.join(directory, 'teamcity_ruby', 'build_configuration')
31
+ require File.join(directory, 'teamcity_ruby', 'agent_pool')
@@ -0,0 +1,299 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/agentPools
6
+ body:
7
+ string: ""
8
+ headers:
9
+ Content-Type:
10
+ - application/json
11
+ Accept:
12
+ - application/json
13
+ response:
14
+ status:
15
+ code: 200
16
+ message: OK
17
+ headers:
18
+ Server:
19
+ - Apache-Coyote/1.1
20
+ Transfer-Encoding:
21
+ - chunked
22
+ Cache-Control:
23
+ - no-cache
24
+ - no-store
25
+ Pragma:
26
+ - no-cache
27
+ Content-Type:
28
+ - application/json
29
+ Expires:
30
+ - Thu, 01 Jan 1970 00:00:00 GMT
31
+ Date:
32
+ - Fri, 23 May 2014 07:28:31 GMT
33
+ Set-Cookie:
34
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
35
+ - TCSESSIONID=7EDCAEB88F5E5CCC8FA95E3B3A81F019; Path=/; HttpOnly
36
+ body:
37
+ string: "{\"count\":2,\"agentPool\":[{\"id\":59,\"name\":\"Linux\",\"href\":\"/httpAuth/app/rest/agentPools/id:59\"},{\"id\":0,\"name\":\"Default\",\"href\":\"/httpAuth/app/rest/agentPools/id:0\"}]}"
38
+ http_version:
39
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
40
+ - request:
41
+ method: delete
42
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/agentPools/id:59
43
+ body:
44
+ string: ""
45
+ headers:
46
+ Content-Type:
47
+ - application/json
48
+ Accept:
49
+ - application/json
50
+ response:
51
+ status:
52
+ code: 204
53
+ message: No Content
54
+ headers:
55
+ Server:
56
+ - Apache-Coyote/1.1
57
+ Cache-Control:
58
+ - no-cache
59
+ - no-store
60
+ Pragma:
61
+ - no-cache
62
+ Expires:
63
+ - Thu, 01 Jan 1970 00:00:00 GMT
64
+ Date:
65
+ - Fri, 23 May 2014 07:28:31 GMT
66
+ Set-Cookie:
67
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
68
+ - TCSESSIONID=433462B82682429156224F4B667A4049; Path=/; HttpOnly
69
+ body:
70
+ string: ""
71
+ http_version:
72
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
73
+ - request:
74
+ method: delete
75
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/agentPools/id:0
76
+ body:
77
+ string: ""
78
+ headers:
79
+ Content-Type:
80
+ - application/json
81
+ Accept:
82
+ - application/json
83
+ response:
84
+ status:
85
+ code: 500
86
+ message: Internal Server Error
87
+ headers:
88
+ Server:
89
+ - Apache-Coyote/1.1
90
+ Transfer-Encoding:
91
+ - chunked
92
+ Cache-Control:
93
+ - no-cache
94
+ - no-store
95
+ Pragma:
96
+ - no-cache
97
+ Content-Type:
98
+ - text/plain
99
+ Connection:
100
+ - close
101
+ Expires:
102
+ - Thu, 01 Jan 1970 00:00:00 GMT
103
+ Date:
104
+ - Fri, 23 May 2014 07:28:31 GMT
105
+ Set-Cookie:
106
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
107
+ - TCSESSIONID=75BC9F858DB316C838B3AB0231CDC7CE; Path=/; HttpOnly
108
+ body:
109
+ string: |-
110
+ Error has occurred during request processing (Internal Server Error).
111
+ Error: java.lang.IllegalStateException: Cannot delete agent pool with id '0'., caused by: jetbrains.buildServer.serverSide.agentPools.AgentPoolCannotBeDeletedException: Default agent pool cannot be deleted
112
+ Error occurred while processing this request.
113
+ http_version:
114
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
115
+ - request:
116
+ method: get
117
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/projects
118
+ body:
119
+ string: ""
120
+ headers:
121
+ Content-Type:
122
+ - application/json
123
+ Accept:
124
+ - application/json
125
+ response:
126
+ status:
127
+ code: 200
128
+ message: OK
129
+ headers:
130
+ Server:
131
+ - Apache-Coyote/1.1
132
+ Transfer-Encoding:
133
+ - chunked
134
+ Cache-Control:
135
+ - no-cache
136
+ - no-store
137
+ Pragma:
138
+ - no-cache
139
+ Content-Type:
140
+ - application/json
141
+ Expires:
142
+ - Thu, 01 Jan 1970 00:00:00 GMT
143
+ Date:
144
+ - Fri, 23 May 2014 07:28:31 GMT
145
+ Set-Cookie:
146
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
147
+ - TCSESSIONID=9655A1860983E225ECCD34082B9C9EB5; Path=/; HttpOnly
148
+ body:
149
+ string: "{\"project\":[{\"id\":\"_Root\",\"name\":\"<Root project>\",\"href\":\"/httpAuth/app/rest/projects/id:_Root\",\"archived\":false,\"webUrl\":\"http://localhost:8111/project.html?projectId=_Root\"},{\"id\":\"SampleProject\",\"name\":\"Sample Project\",\"href\":\"/httpAuth/app/rest/projects/id:SampleProject\",\"archived\":false,\"webUrl\":\"http://localhost:8111/project.html?projectId=SampleProject\",\"parentProjectId\":\"_Root\"}]}"
150
+ http_version:
151
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
152
+ - request:
153
+ method: delete
154
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/projects/id:_Root
155
+ body:
156
+ string: ""
157
+ headers:
158
+ Content-Type:
159
+ - application/json
160
+ Accept:
161
+ - application/json
162
+ response:
163
+ status:
164
+ code: 403
165
+ message: Forbidden
166
+ headers:
167
+ Server:
168
+ - Apache-Coyote/1.1
169
+ Transfer-Encoding:
170
+ - chunked
171
+ Cache-Control:
172
+ - no-cache
173
+ - no-store
174
+ Pragma:
175
+ - no-cache
176
+ Content-Type:
177
+ - text/plain
178
+ Expires:
179
+ - Thu, 01 Jan 1970 00:00:00 GMT
180
+ Date:
181
+ - Fri, 23 May 2014 07:28:31 GMT
182
+ Set-Cookie:
183
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
184
+ - TCSESSIONID=F903F5A1556A724D4F662C9496C3BBB3; Path=/; HttpOnly
185
+ body:
186
+ string: |-
187
+ Error has occurred during request processing (Forbidden).
188
+ Error: jetbrains.buildServer.serverSide.auth.AccessDeniedException: Root project cannot be removed
189
+ Access denied. Check the user has enough permissions to perform the operation.
190
+ http_version:
191
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
192
+ - request:
193
+ method: delete
194
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/projects/id:SampleProject
195
+ body:
196
+ string: ""
197
+ headers:
198
+ Content-Type:
199
+ - application/json
200
+ Accept:
201
+ - application/json
202
+ response:
203
+ status:
204
+ code: 204
205
+ message: No Content
206
+ headers:
207
+ Server:
208
+ - Apache-Coyote/1.1
209
+ Cache-Control:
210
+ - no-cache
211
+ - no-store
212
+ Pragma:
213
+ - no-cache
214
+ Expires:
215
+ - Thu, 01 Jan 1970 00:00:00 GMT
216
+ Date:
217
+ - Fri, 23 May 2014 07:28:31 GMT
218
+ Set-Cookie:
219
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
220
+ - TCSESSIONID=DA17A7E9FDEAC7EB55B83EF2F180A3E8; Path=/; HttpOnly
221
+ body:
222
+ string: ""
223
+ http_version:
224
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
225
+ - request:
226
+ method: post
227
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/agentPools
228
+ body:
229
+ string: "{\"name\":\"Linux\"}"
230
+ headers:
231
+ Content-Type:
232
+ - application/json
233
+ Accept:
234
+ - application/json
235
+ response:
236
+ status:
237
+ code: 200
238
+ message: OK
239
+ headers:
240
+ Server:
241
+ - Apache-Coyote/1.1
242
+ Transfer-Encoding:
243
+ - chunked
244
+ Cache-Control:
245
+ - no-cache
246
+ - no-store
247
+ Pragma:
248
+ - no-cache
249
+ Content-Type:
250
+ - application/json
251
+ Expires:
252
+ - Thu, 01 Jan 1970 00:00:00 GMT
253
+ Date:
254
+ - Fri, 23 May 2014 07:28:31 GMT
255
+ Set-Cookie:
256
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
257
+ - TCSESSIONID=3757C202E2DF7DD6C9B144646C311E2B; Path=/; HttpOnly
258
+ body:
259
+ string: "{\"href\":\"/httpAuth/app/rest/agentPools/id:60\",\"id\":60,\"name\":\"Linux\",\"projects\":{\"project\":[]},\"agents\":{\"count\":0,\"agent\":[]}}"
260
+ http_version:
261
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
262
+ - request:
263
+ method: get
264
+ uri: http://teamcity:teamcity@localhost:8111/httpAuth/app/rest/agentPools/id:60
265
+ body:
266
+ string: ""
267
+ headers:
268
+ Content-Type:
269
+ - application/json
270
+ Accept:
271
+ - application/json
272
+ response:
273
+ status:
274
+ code: 200
275
+ message: OK
276
+ headers:
277
+ Server:
278
+ - Apache-Coyote/1.1
279
+ Transfer-Encoding:
280
+ - chunked
281
+ Cache-Control:
282
+ - no-cache
283
+ - no-store
284
+ Pragma:
285
+ - no-cache
286
+ Content-Type:
287
+ - application/json
288
+ Expires:
289
+ - Thu, 01 Jan 1970 00:00:00 GMT
290
+ Date:
291
+ - Fri, 23 May 2014 07:28:31 GMT
292
+ Set-Cookie:
293
+ - RememberMe=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly
294
+ - TCSESSIONID=96404C821CC716899CD608E900E66C33; Path=/; HttpOnly
295
+ body:
296
+ string: "{\"href\":\"/httpAuth/app/rest/agentPools/id:60\",\"id\":60,\"name\":\"Linux\",\"projects\":{\"project\":[]},\"agents\":{\"count\":0,\"agent\":[]}}"
297
+ http_version:
298
+ recorded_at: Fri, 23 May 2014 07:28:31 GMT
299
+ recorded_with: VCR 2.4.0