mirror of
				https://github.com/fog/fog.git
				synced 2022-11-09 13:51:43 -05:00 
			
		
		
		
	Add joyent API version and network support GH-1853
Adding support for listing networks in the Joyent Cloud. :joyent_version was defined in a way that it would always fall back to the default '~6.5'. Creating servers with a particular network requires setting :joyent_version to '~7.0' or greater.
This commit is contained in:
		
							parent
							
								
									8f2c84ae93
								
							
						
					
					
						commit
						5fc41c8dc2
					
				
					 5 changed files with 98 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -11,6 +11,7 @@ module Fog
 | 
			
		|||
      recognizes :joyent_url
 | 
			
		||||
      recognizes :joyent_keyname
 | 
			
		||||
      recognizes :joyent_keyfile
 | 
			
		||||
      recognizes :joyent_version
 | 
			
		||||
 | 
			
		||||
      model_path 'fog/joyent/models/compute'
 | 
			
		||||
      request_path 'fog/joyent/requests/compute'
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +72,10 @@ module Fog
 | 
			
		|||
      request :delete_machine_tag
 | 
			
		||||
      request :delete_all_machine_tags
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      # Networks
 | 
			
		||||
      collection :networks
 | 
			
		||||
      model :network
 | 
			
		||||
      request :list_networks
 | 
			
		||||
 | 
			
		||||
      class Mock
 | 
			
		||||
        def self.data
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +167,7 @@ module Fog
 | 
			
		|||
 | 
			
		||||
          response
 | 
			
		||||
        rescue Excon::Errors::Error => e
 | 
			
		||||
          raise_if_error(e.request, e.response)
 | 
			
		||||
          raise_if_error!(e.request, e.response)
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        private
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								lib/fog/joyent/models/compute/network.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								lib/fog/joyent/models/compute/network.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Compute
 | 
			
		||||
    class Joyent
 | 
			
		||||
      class Network < Fog::Model
 | 
			
		||||
        identity :id
 | 
			
		||||
 | 
			
		||||
        attribute :name
 | 
			
		||||
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										15
									
								
								lib/fog/joyent/models/compute/networks.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								lib/fog/joyent/models/compute/networks.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
require 'fog/joyent/models/compute/network'
 | 
			
		||||
module Fog
 | 
			
		||||
  module Compute
 | 
			
		||||
    class Joyent
 | 
			
		||||
      class Networks < Fog::Collection
 | 
			
		||||
 | 
			
		||||
        model Fog::Compute::Joyent::Network
 | 
			
		||||
 | 
			
		||||
        def all
 | 
			
		||||
          load(service.list_networks.body)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										26
									
								
								lib/fog/joyent/requests/compute/list_networks.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								lib/fog/joyent/requests/compute/list_networks.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
module Fog
 | 
			
		||||
  module Compute
 | 
			
		||||
    class Joyent
 | 
			
		||||
 | 
			
		||||
      class Mock
 | 
			
		||||
        def list_networks(options={})
 | 
			
		||||
          res = Excon::Response.new
 | 
			
		||||
          res.status = 200
 | 
			
		||||
          res.body = self.data[:networks].values
 | 
			
		||||
          res
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      class Real
 | 
			
		||||
        def list_networks(options={})
 | 
			
		||||
          request(
 | 
			
		||||
            :path => "/my/networks",
 | 
			
		||||
            :method => "GET",
 | 
			
		||||
            :query => options,
 | 
			
		||||
            :expects => 200
 | 
			
		||||
          )
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										39
									
								
								tests/joyent/requests/compute/networks_tests.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								tests/joyent/requests/compute/networks_tests.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
Shindo.tests("Fog::Compute[:joyent] | network requests", ["joyent"]) do
 | 
			
		||||
  @provider = Fog::Compute[:joyent]
 | 
			
		||||
  @network_format = {
 | 
			
		||||
    "id" => String,
 | 
			
		||||
    "name" => String,
 | 
			
		||||
    "public" => Fog::Boolean
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if Fog.mock?
 | 
			
		||||
    @networks = Fog::Compute[:joyent].data[:networks] = {
 | 
			
		||||
      "193d6804-256c-4e89-a4cd-46f045959993" => {
 | 
			
		||||
        "id" => "193d6804-256c-4e89-a4cd-46f045959993",
 | 
			
		||||
        "name" => "Joyent-SDC-Private",
 | 
			
		||||
        "public" => false
 | 
			
		||||
      },
 | 
			
		||||
      "1e7bb0e1-25a9-43b6-bb19-f79ae9540b39" => {
 | 
			
		||||
        "id" => "1e7bb0e1-25a9-43b6-bb19-f79ae9540b39",
 | 
			
		||||
        "name" => "Joyent-SDC-Public",
 | 
			
		||||
        "public" => true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  tests("#list_networks") do
 | 
			
		||||
    if Fog.mock?
 | 
			
		||||
      returns(@networks.length, "correct number of networks") do
 | 
			
		||||
        @provider.list_networks.body.length
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    returns(Array, "returns an Array of networks") do
 | 
			
		||||
      @provider.list_networks.body.class
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    formats([@network_format]) do
 | 
			
		||||
      @provider.list_networks.body
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue