Class: Travis::SaucelabsAPI
- Inherits:
-
Object
- Object
- Travis::SaucelabsAPI
- Defined in:
- lib/travis-saucelabs-api.rb,
lib/travis-saucelabs-api/version.rb
Defined Under Namespace
Classes: NotFoundError
Constant Summary collapse
- DEFAULT_IMAGE =
'ichef-osx8-10.8-travis'- VERSION =
"0.0.2"
Instance Method Summary collapse
- #allow_incoming(instance_id, cidr, port) ⇒ Object
- #allow_outgoing(instance_id) ⇒ Object
- #capacity ⇒ Object
-
#initialize(uri) ⇒ SaucelabsAPI
constructor
Public: Initialize a new API client instance.
- #instance_info(instance_id) ⇒ Object
- #kill_instance(instance_id) ⇒ Object
- #list_instances ⇒ Object
- #save_image(instance_id, name) ⇒ Object
- #start_instance(startup_info = nil, image = DEFAULT_IMAGE) ⇒ Object
Constructor Details
#initialize(uri) ⇒ SaucelabsAPI
Public: Initialize a new API client instance
uri - The URI or String endpoint for the API. This should include the
username and password used for authentication.
15 16 17 18 19 20 21 |
# File 'lib/travis-saucelabs-api.rb', line 15 def initialize(uri) @connection = Faraday.new(uri) do |connection| connection.use FaradayMiddleware::EncodeJson connection.use FaradayMiddleware::ParseJson, content_type: /\bjson$/ connection.adapter Faraday.default_adapter end end |
Instance Method Details
#allow_incoming(instance_id, cidr, port) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/travis-saucelabs-api.rb', line 53 def allow_incoming(instance_id, cidr, port) instance_id = uri_escape(instance_id) response = @connection.post("/instances/#{instance_id}/allow_incoming") do |request| request.params.update(cidr: cidr, port: port) end handle_response(response) end |
#allow_outgoing(instance_id) ⇒ Object
48 49 50 51 |
# File 'lib/travis-saucelabs-api.rb', line 48 def allow_outgoing(instance_id) instance_id = uri_escape(instance_id) handle_response(@connection.post("/instances/#{instance_id}/allow_outgoing")) end |
#capacity ⇒ Object
23 24 25 |
# File 'lib/travis-saucelabs-api.rb', line 23 def capacity handle_response(@connection.get('/capacity')) end |
#instance_info(instance_id) ⇒ Object
39 40 41 |
# File 'lib/travis-saucelabs-api.rb', line 39 def instance_info(instance_id) handle_response(@connection.get("/instances/#{uri_escape(instance_id)}")) end |
#kill_instance(instance_id) ⇒ Object
43 44 45 46 |
# File 'lib/travis-saucelabs-api.rb', line 43 def kill_instance(instance_id) instance_id = uri_escape(instance_id) handle_response(@connection.delete("/instances/#{instance_id}")) end |
#list_instances ⇒ Object
35 36 37 |
# File 'lib/travis-saucelabs-api.rb', line 35 def list_instances handle_response(@connection.get('/instances')) end |
#save_image(instance_id, name) ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/travis-saucelabs-api.rb', line 62 def save_image(instance_id, name) instance_id = uri_escape(instance_id) response = @connection.post("/instances/#{instance_id}/save_image") do |request| request.params.update(name: name) end handle_response(response) end |
#start_instance(startup_info = nil, image = DEFAULT_IMAGE) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/travis-saucelabs-api.rb', line 27 def start_instance(startup_info=nil, image=DEFAULT_IMAGE) response = @connection.post('/instances', startup_info) do |request| request.params.update(image: image) end handle_response(response) end |