subordinate 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,7 +7,7 @@ module Subordinate
7
7
  module Load
8
8
  # Returns the current load statistics of the Jenkins server
9
9
  #
10
- # @see http://jenkins.missioncontrol.io:8080/queue/api/
10
+ # @see https://ci.jenkins-ci.org:8080/queue/api/
11
11
  #
12
12
  # @return [Hashie::Mash] load statistics response
13
13
  #
@@ -0,0 +1,85 @@
1
+ # View
2
+ module Subordinate
3
+ class Client
4
+ # View
5
+ #
6
+ # @see https://ci.jenkins-ci.org/view/All%20Unstable/api/
7
+ module View
8
+ # Returns the specified view
9
+ #
10
+ # @see http://ci.jenkins-ci.org/view/All%20Unstable/api/json?pretty=true
11
+ #
12
+ # @param view_name [String] the name of the view you want inforamtion on
13
+ #
14
+ # @return [Hashie::Mash] response from the specified view
15
+ #
16
+ # @example Get the current view
17
+ # Subordinate::Client.view("My-Awesome-View")
18
+ #
19
+ # @author Jason Truluck
20
+ def view(view_name, options = {})
21
+ get("view/#{view_name}/api/json", options)
22
+ end
23
+
24
+ # Returns all of the views with their corresponding jobs
25
+ #
26
+ # @see https://ci.jenkins-ci.org/api/json?tree=views[name,jobs[name]]
27
+ #
28
+ # @return [Hashie::Mash] response containing all views on the server and their respective jobs
29
+ #
30
+ # @example Get all the views
31
+ # Subordinate::Client.all_views
32
+ #
33
+ # @author Jason Truluck
34
+ def all_views(options = {})
35
+ options.merge!(
36
+ :tree => "views[name,url,jobs[name,url]]"
37
+ )
38
+ get("api/json", options)
39
+ end
40
+
41
+
42
+ # Add a job to the Jenkins view
43
+ #
44
+ # @see http://ci.jenkins-ci.org/view/All%20Unstable/api/
45
+ #
46
+ # @param view_name [String] the name of the view you want inforamtion on
47
+ # @param job [String] the name of the job you want to add
48
+ #
49
+ # @return [Integer] status the status of the request
50
+ #
51
+ # @example Add the selected Job to the Jenkins View
52
+ # Subordinate::Client.add_job_to_view("My-Awesome-View", "My-Awesome-Job")
53
+ #
54
+ # @author Jason Truluck
55
+ def add_job_to_view(view_name, job, options = {})
56
+ options.merge!(
57
+ :with_query_params => true,
58
+ :name => job
59
+ )
60
+ post("view/#{view_name}/addJobToView", options)
61
+ end
62
+
63
+ # Remove a job to the Jenkins view
64
+ #
65
+ # @see http://ci.jenkins-ci.org/view/All%20Unstable/api/
66
+ #
67
+ # @param view_name [String] the name of the view you want inforamtion on
68
+ # @param job [String] the name of the job you want to remove
69
+ #
70
+ # @return [Integer] status the status of the request
71
+ #
72
+ # @example Remove the selected job from the Jenkins View
73
+ # Subordinate::Client.remove_job_from_view("My-Awesome-View", "My-Awesome-Job")
74
+ #
75
+ # @author Jason Truluck
76
+ def remove_job_from_view(view_name, job, options = {})
77
+ options.merge!(
78
+ :with_query_params => true,
79
+ :name => job
80
+ )
81
+ post("view/#{view_name}/removeJobFromView", options)
82
+ end
83
+ end
84
+ end
85
+ end
@@ -8,6 +8,7 @@ require "subordinate/client/system"
8
8
  require "subordinate/client/build"
9
9
  require "subordinate/client/queue"
10
10
  require "subordinate/client/load"
11
+ require "subordinate/client/view"
11
12
 
12
13
  module Subordinate
13
14
  class Client
@@ -45,5 +46,6 @@ module Subordinate
45
46
  include Subordinate::Client::Build
46
47
  include Subordinate::Client::Queue
47
48
  include Subordinate::Client::Load
49
+ include Subordinate::Client::View
48
50
  end
49
51
  end
@@ -1,3 +1,5 @@
1
+ require 'multi_json'
2
+
1
3
  module Subordinate
2
4
  module Request
3
5
  def get(path, options = {})
@@ -23,8 +25,13 @@ module Subordinate
23
25
  when :get
24
26
  request.url(path, options)
25
27
  when :post
26
- request.path = path
27
- request.body = MultiJson.dump(options) unless options.empty?
28
+ with_query_params = options.delete(:with_query_params) || false
29
+ if with_query_params
30
+ request.url(path, options)
31
+ else
32
+ request.path = path
33
+ request.body = MultiJson.dump(options) unless options.empty?
34
+ end
28
35
  end
29
36
  end
30
37
  response
@@ -1,3 +1,3 @@
1
1
  module Subordinate
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,94 @@
1
+ require "spec_helper"
2
+
3
+ auth = YAML::load(File.open(File.expand_path("../../../fixtures/authentications.yml", __FILE__)))
4
+
5
+ # View Spec
6
+ describe Subordinate::Client do
7
+ before do
8
+ Subordinate.reset!
9
+ Subordinate.configure do |c|
10
+ c.subdomain = auth["subdomain"]
11
+ c.domain = auth["domain"]
12
+ c.port = auth["port"]
13
+ c.ssl = false
14
+ end
15
+ end
16
+
17
+ let(:subordinate) { Subordinate::Client.new(:username => auth["username"], :api_token => auth["token"]) }
18
+
19
+ describe "#view", :vcr do
20
+ let(:current_response) { subordinate.view(auth["view"]) }
21
+
22
+ it "returns the view response" do
23
+ current_response.should_not be_nil
24
+ end
25
+
26
+ context "methods" do
27
+ it "responds to .description" do
28
+ current_response.should respond_to(:description)
29
+ end
30
+
31
+ it "responds to .jobs" do
32
+ current_response.should respond_to(:jobs)
33
+ end
34
+
35
+ it "responds to .name" do
36
+ current_response.should respond_to(:name)
37
+ end
38
+
39
+ it "responds to .property" do
40
+ current_response.should respond_to(:property)
41
+ end
42
+
43
+ it "responds to .url" do
44
+ current_response.should respond_to(:url)
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "#all_views", :vcr do
50
+ let(:current_response) { subordinate.all_views }
51
+
52
+ it "returns the view response" do
53
+ current_response.should_not be_nil
54
+ end
55
+
56
+ context "methods" do
57
+ it "respond to .views" do
58
+ current_response.should respond_to(:views)
59
+ end
60
+
61
+ describe "within views" do
62
+ it "respond to .jobs" do
63
+ current_response.views.first.should respond_to(:jobs)
64
+ end
65
+
66
+ it "respond to .name" do
67
+ current_response.views.first.should respond_to(:name)
68
+ end
69
+
70
+ it "respond to .url" do
71
+ current_response.views.first.should respond_to(:url)
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "#add_job_to_view" do
78
+ it "responds with a success" do
79
+ stub_request(:post, "#{subordinate.api_endpoint}/view/#{auth['view']}/addJobToView").
80
+ to_return(:status => 200, :body => "", :headers => {})
81
+
82
+ subordinate.add_job_to_view(auth['view'], auth['job']).status.should == 200
83
+ end
84
+ end
85
+
86
+ describe "#remove_job_from_view" do
87
+ it "responds with a success" do
88
+ stub_request(:post, "#{subordinate.api_endpoint}/view/#{auth['view']}/removeJobFromView").
89
+ to_return(:status => 200, :body => "", :headers => {})
90
+
91
+ subordinate.remove_job_from_view(auth['view'], auth['job']).status.should == 200
92
+ end
93
+ end
94
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subordinate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -239,6 +239,7 @@ files:
239
239
  - lib/subordinate/client/load.rb
240
240
  - lib/subordinate/client/queue.rb
241
241
  - lib/subordinate/client/system.rb
242
+ - lib/subordinate/client/view.rb
242
243
  - lib/subordinate/configuration.rb
243
244
  - lib/subordinate/connection.rb
244
245
  - lib/subordinate/request.rb
@@ -250,6 +251,7 @@ files:
250
251
  - spec/subordinate/client/load_spec.rb
251
252
  - spec/subordinate/client/queue_spec.rb
252
253
  - spec/subordinate/client/system_spec.rb
254
+ - spec/subordinate/client/view_spec.rb
253
255
  - spec/subordinate/client_spec.rb
254
256
  - subordinate.gemspec
255
257
  homepage: https://github.com/jasontruluck/subordinate
@@ -266,7 +268,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
268
  version: '0'
267
269
  segments:
268
270
  - 0
269
- hash: 2234839665290920209
271
+ hash: 1397159424799143771
270
272
  required_rubygems_version: !ruby/object:Gem::Requirement
271
273
  none: false
272
274
  requirements:
@@ -275,7 +277,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
277
  version: '0'
276
278
  segments:
277
279
  - 0
278
- hash: 2234839665290920209
280
+ hash: 1397159424799143771
279
281
  requirements: []
280
282
  rubyforge_project:
281
283
  rubygems_version: 1.8.24
@@ -290,5 +292,6 @@ test_files:
290
292
  - spec/subordinate/client/load_spec.rb
291
293
  - spec/subordinate/client/queue_spec.rb
292
294
  - spec/subordinate/client/system_spec.rb
295
+ - spec/subordinate/client/view_spec.rb
293
296
  - spec/subordinate/client_spec.rb
294
297
  has_rdoc: