fog-profitbricks-0.0.1/0000755000076400007640000000000012450014225014011 5ustar pravipravifog-profitbricks-0.0.1/spec/0000755000076400007640000000000012450014225014743 5ustar pravipravifog-profitbricks-0.0.1/spec/minitest_helper.rb0000644000076400007640000000151112450014225020461 0ustar pravipravirequire 'minitest/spec' require 'minitest/autorun' require 'turn' Turn.config do |c| # use one of output formats: # :outline - turn's original case/test outline mode [default] # :progress - indicates progress with progress bar # :dotted - test/unit's traditional dot-progress mode # :pretty - new pretty reporter # :marshal - dump output as YAML (normal run mode only) # :cue - interactive testing # c.format = :outline # turn on invoke/execute tracing, enable full backtrace c.trace = 20 # use humanized test names (works only with :outline format) c.natural = true end if ENV['COVERAGE'] require 'coveralls' require 'simplecov' SimpleCov.start do add_filter '/spec/' end end require File.join(File.dirname(__FILE__), '../lib/fog/profitbricks') if ENV['COVERAGE'] Coveralls.wear! endfog-profitbricks-0.0.1/LICENSE.md0000644000076400007640000000220512450014225015414 0ustar pravipraviThe MIT License (MIT) Copyright (c) 2014-2014 [CONTRIBUTORS.md](https://github.com/fog/fog-profitbricks/blob/master/CONTRIBUTORS.md) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.fog-profitbricks-0.0.1/CONTRIBUTING.md0000644000076400007640000000160512450014225016244 0ustar pravipravi## Getting Involved New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another. ### Coding * Pick a task: * Offer feedback on open [pull requests](https://github.com/fog/fog-profitbricks/pulls). * Review open [issues](https://github.com/fog/fog-profitbricks/issues) for things to help on. * [Create an issue](https://github.com/fog/fog-profitbricks/issues/new) to start a discussion on additions or features. * Fork the project, add your changes and tests to cover them in a topic branch. * Commit your changes and rebase against `fog/fog-profitbricks` to ensure everything is up to date. * [Submit a pull request](https://github.com/fog/fog-profitbricks/compare/) ### Non-Coding * Offer feedback on open [issues](https://github.com/fog/fog-profitbricks/issues). * Organize or volunteer at events.fog-profitbricks-0.0.1/fog-profitbricks.gemspec0000644000076400007640000000246312450014225020635 0ustar pravipravi# coding: utf-8 lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'fog/profitbricks/version' Gem::Specification.new do |spec| spec.name = "fog-profitbricks" spec.version = Fog::ProfitBricks::VERSION spec.authors = ["Ethan Devenport"] spec.email = ["ethand@stackpointcloud.com"] spec.summary = %q{Module for the 'fog' gem to support ProfitBricks.} spec.description = %q{Module for the 'fog' gem to support ProfitBricks.} spec.homepage = "https://github.com/fog/fog-profitbricks" spec.license = "MIT" spec.files = `git ls-files -z`.split("\x0") spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ["lib"] spec.add_runtime_dependency "fog-core" spec.add_runtime_dependency "fog-xml" spec.add_runtime_dependency "nokogiri" spec.add_development_dependency "rake" spec.add_development_dependency "minitest" spec.add_development_dependency "shindo" spec.add_development_dependency "turn" spec.add_development_dependency "pry" spec.add_development_dependency "rubocop" if RUBY_VERSION >= "1.9.3" spec.add_development_dependency "coveralls" if RUBY_VERSION.to_f >= 1.9 end fog-profitbricks-0.0.1/.rubocop.yml0000644000076400007640000000051712450014225016266 0ustar pravipraviMetrics/LineLength: Enabled: false Style/EachWithObject: Enabled: false Style/Encoding: EnforcedStyle: when_needed Style/FormatString: Enabled: false Style/HashSyntax: EnforcedStyle: hash_rockets Style/SignalException: EnforcedStyle: only_raise Style/StringLiterals: Enabled: false # EnforcedStyle: double_quotes fog-profitbricks-0.0.1/.travis.yml0000644000076400007640000000110512450014225016117 0ustar pravipravilanguage: ruby script: bundle exec rake travis matrix: include: - rvm: 1.8.7 gemfile: gemfiles/Gemfile.1.8.7 - rvm: 1.9.2 gemfile: gemfiles/Gemfile.1.9.2+ env: COVERAGE=true - rvm: 1.9.3 gemfile: gemfiles/Gemfile.1.9.2+ env: COVERAGE=true - rvm: 2.0.0 gemfile: gemfiles/Gemfile.1.9.2+ env: COVERAGE=true - rvm: 2.1.1 gemfile: gemfiles/Gemfile.1.9.2+ env: COVERAGE=true - rvm: ree gemfile: gemfiles/Gemfile.1.8.7 - rvm: jruby gemfile: gemfiles/Gemfile.1.9.2+ env: COVERAGE=true fog-profitbricks-0.0.1/CONTRIBUTORS.md0000644000076400007640000000015012450014225016264 0ustar pravipravi* Ethan Devenport * Paulo Henrique Lopes Ribeiro fog-profitbricks-0.0.1/tests/0000755000076400007640000000000012450014225015153 5ustar pravipravifog-profitbricks-0.0.1/tests/helpers/0000755000076400007640000000000012450014225016615 5ustar pravipravifog-profitbricks-0.0.1/tests/helpers/mock_helper.rb0000644000076400007640000000027612450014225021437 0ustar pravipraviFog.mock! if ENV["FOG_MOCK"] == "true" if Fog.mock? Fog.credentials = { :profitbricks_username => "username", :profitbricks_password => "abc123xyz" }.merge(Fog.credentials) end fog-profitbricks-0.0.1/tests/helpers/formats_helper.rb0000644000076400007640000000201312450014225022150 0ustar pravipravi# format related hackery # allows both true.is_a?(Fog::Boolean) and false.is_a?(Fog::Boolean) # allows both nil.is_a?(Fog::Nullable::String) and ''.is_a?(Fog::Nullable::String) module Fog module Boolean; end module Nullable module Boolean; end module Integer; end module String; end module Time; end module Float; end module Hash; end module Array; end end end [FalseClass, TrueClass].each {|klass| klass.send(:include, Fog::Boolean)} [FalseClass, TrueClass, NilClass, Fog::Boolean].each {|klass| klass.send(:include, Fog::Nullable::Boolean)} [NilClass, String].each {|klass| klass.send(:include, Fog::Nullable::String)} [NilClass, Time].each {|klass| klass.send(:include, Fog::Nullable::Time)} [Integer, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Integer)} [Float, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Float)} [Hash, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Hash)} [Array, NilClass].each {|klass| klass.send(:include, Fog::Nullable::Array)} fog-profitbricks-0.0.1/tests/helper.rb0000644000076400007640000000116412450014225016761 0ustar pravipraviENV['FOG_RC'] = ENV['FOG_RC'] || File.expand_path('~/.fog', __FILE__) ENV['FOG_CREDENTIAL'] = ENV['FOG_CREDENTIAL'] || 'default' ## From fog-core require 'fog/test_helpers/formats_helper' require 'fog/test_helpers/succeeds_helper' require 'fog/profitbricks' Excon.defaults.merge!(:debug_request => true, :debug_response => true) # This overrides the default 600 seconds timeout during live test runs if Fog.mocking? FOG_TESTING_TIMEOUT = ENV['FOG_TEST_TIMEOUT'] || 2000 Fog.timeout = 2000 Fog::Logger.warning "Setting default fog timeout to #{Fog.timeout} seconds" else FOG_TESTING_TIMEOUT = Fog.timeout end fog-profitbricks-0.0.1/tests/profitbricks/0000755000076400007640000000000012450014225017654 5ustar pravipravifog-profitbricks-0.0.1/tests/profitbricks/requests/0000755000076400007640000000000012450014225021527 5ustar pravipravifog-profitbricks-0.0.1/tests/profitbricks/requests/compute/0000755000076400007640000000000012450014225023203 5ustar pravipravifog-profitbricks-0.0.1/tests/profitbricks/requests/compute/location_tests.rb0000644000076400007640000000164112450014225026564 0ustar pravipraviShindo.tests('Fog::Compute[:profitbricks] | location request', ['profitbricks', 'compute']) do @location_format = { 'locationId' => String, 'locationName' => String, 'country' => String } service = Fog::Compute[:profitbricks] tests('success') do tests('#get_all_locations').formats(@location_format) do # puts '#get_all_regions' data = service.get_all_locations @location_id = data.body['getAllLocationsResponse'][0]['locationId'] data.body['getAllLocationsResponse'][0] end tests('#get_location').formats(@location_format) do # puts '#get_location' data = service.get_location(@location_id) data.body['getLocationResponse'] end end tests('failure') do tests('#get_location').raises(Fog::Errors::NotFound) do # puts '#get_location' data = service.get_location('00000000-0000-0000-0000-000000000000') end end end fog-profitbricks-0.0.1/tests/profitbricks/requests/compute/image_tests.rb0000644000076400007640000000274112450014225026040 0ustar pravipraviShindo.tests('Fog::Compute[:profitbricks] | image request', ['profitbricks', 'compute']) do @image_format = { 'imageId' => String, 'imageName' => String, 'imageType' => String, 'imageSize' => Integer, 'bootable' => String, 'cpuHotPlug' => String, 'cpuHotUnPlug' => String, 'ramHotPlug' => String, 'ramHotUnPlug' => String, 'discVirtioHotPlug' => String, 'discVirtioHotUnPlug' => String, 'nicHotPlug' => String, 'nicHotUnPlug' => String, 'osType' => String, 'serverIds' => Fog::Nullable::String, 'writeable' => String, 'location' => String, 'public' => String, } service = Fog::Compute[:profitbricks] Excon.defaults[:connection_timeout] = 120 tests('success') do tests('#get_all_images').formats(@image_format) do # puts '#get_all_images' data = service.get_all_images @image_id = data.body['getAllImagesResponse'][0]['imageId'] data.body['getAllImagesResponse'][0] end tests('#get_image').formats(@image_format) do # puts '#get_image' data = service.get_image(@image_id) data.body['getImageResponse'] end end tests('failure') do tests('#get_image').raises(Fog::Errors::NotFound) do # puts '#get_image' service.get_image('00000000-0000-0000-0000-000000000000') end end end fog-profitbricks-0.0.1/tests/profitbricks/requests/compute/interface_tests.rb0000644000076400007640000000622012450014225026712 0ustar pravipraviShindo.tests('Fog::Compute[:profitbricks] | nic request', ['profitbricks', 'compute']) do @nic_format = { 'nicId' => String, 'lanId' => Integer, 'nicName' => 'FogNic', 'internetAccess' => String, 'ip' => Fog::Nullable::String, 'macAddress' => String, 'firewall' => Fog::Nullable::Hash, 'dhcpActive' => String, 'provisioningState' => 'AVAILABLE' || 'INPROCESS', } @minimal_format = { 'requestId' => String, 'dataCenterId' => String, 'dataCenterVersion' => Integer } service = Fog::Compute[:profitbricks] tests('success') do Excon.defaults[:connection_timeout] = 200 tests('#create_data_center') do # puts '#create_data_center' data = service.create_data_center('FogDataCenter', 'us/las') @data_center_id = data.body['createDataCenterResponse']['dataCenterId'] data.body['createDataCenterResponse'] end tests('#get_all_images') do # puts '#get_all_images' data = service.get_all_images.body['getAllImagesResponse'].find { |image| image['location'] == 'us/las' && image['imageType'] == 'HDD' && image['osType'] == 'LINUX' } @image_id = data['imageId'] end tests('#create_server').succeeds do # puts '#create_server' data = service.create_server(@data_center_id, 1, 512, { 'serverName' => 'FogServer' }) @server_id = data.body['createServerResponse']['serverId'] service.servers.get(@server_id).wait_for { ready? } data.body['createServerResponse'] end tests('#create_nic').formats(@minimal_format) do # puts '#create_nic' data = service.create_nic(@server_id, 1, { 'nicName' => 'FogNic' }) @nic_id = data.body['createNicResponse']['nicId'] service.interfaces.get(@nic_id).wait_for { ready? } data.body['createNicResponse'] end tests('#get_all_nic').formats(@nic_format) do # puts '#get_all_nic' data = service.get_all_nic data.body['getAllNicResponse'].find { |nic| nic['nicId'] == @nic_id } end tests('#get_nic').formats(@nic_format) do # puts '#get_nic' service.get_nic(@nic_id).body['getNicResponse'] end tests('#update_nic').formats(@minimal_format) do # puts '#update_nic' data = service.update_nic(@nic_id, { 'nicName' => 'FogNicRename' }) data.body['updateNicResponse'] end tests('#set_internet_access').formats(@minimal_format) do # puts '#set_internet_access' data = service.set_internet_access(@data_center_id, @lan_id, true) data.body['setInternetAccessResponse'] end tests('#delete_nic').formats(@minimal_format) do # puts '#delete_nic' data = service.delete_nic(@nic_id) data.body['deleteNicResponse'] end tests('#delete_server').formats(@minimal_format) do # puts '#delete_server' data = service.delete_server(@server_id) data.body['deleteServerResponse'] end tests('#delete_data_center') do # puts '#delete_data_center' service.delete_data_center(@data_center_id) end end end fog-profitbricks-0.0.1/tests/profitbricks/requests/compute/server_tests.rb0000644000076400007640000001764212450014225026272 0ustar pravipraviShindo.tests('Fog::Compute[:profitbricks] | server request', ['profitbricks', 'compute']) do @data_center_format = { 'requestId' => String, 'dataCenterId' => String, 'dataCenterName' => String, 'dataCenterVersion' => Integer, 'provisioningState' => 'AVAILABLE', 'location' => String } @server_format = { 'serverId' => String, 'serverName' => 'FogServer', 'cores' => Integer, 'ram' => Integer, 'internetAccess' => String, 'connectedStorages' => Fog::Nullable::Array, 'nics' => Fog::Nullable::Array, 'provisioningState' => 'AVAILABLE', 'virtualMachineState' => 'RUNNING', 'creationTime' => Time, 'lastModificationTime' => Time, 'osType' => String, 'availabilityZone' => 'AUTO' || 'ZONE_1' || 'ZONE_2', } @storage_format = { 'dataCenterId' => String, 'dataCenterVersion' => Integer, 'storageId' => String, 'size' => Integer, 'storageName' => String, 'mountImage' => Hash, 'provisioningState' => 'AVAILABLE', 'creationTime' => Time, 'lastModificationTime' => Time } @minimal_format = { 'requestId' => String, 'dataCenterId' => String, 'dataCenterVersion' => Integer } service = Fog::Compute[:profitbricks] tests('success') do Excon.defaults[:connection_timeout] = 500 tests('#create_data_center').formats(@minimal_format.merge('location' => String)) do # puts '#create_data_center' data = service.create_data_center('FogDataCenter', 'us/las') @data_center_id = data.body['createDataCenterResponse']['dataCenterId'] service.datacenters.get(@data_center_id).wait_for { ready? } data.body['createDataCenterResponse'] end tests('#get_data_center').formats(@data_center_format) do # puts '#get_data_center' data = service.get_data_center(@data_center_id) data.body['getDataCenterResponse'] end tests('#get_all_data_centers').formats({ 'dataCenterId' => String, 'dataCenterName' => String, 'dataCenterVersion' => Integer }) do # puts '#get_all_data_centers' data = service.get_all_data_centers data.body['getAllDataCentersResponse'].find { |dc| dc['dataCenterId'] == @data_center_id } end tests('#update_data_center').formats(@minimal_format) do # puts '#update_data_center' data = service.update_data_center( @data_center_id, { 'dataCenterName' => 'FogDataCenterRename' } ) data.body['updateDataCenterResponse'] end tests('#get_all_images') do # puts '#get_all_images' data = service.get_all_images.body['getAllImagesResponse'].find { |image| image['location'] == 'us/las' && image['imageType'] == 'HDD' && image['osType'] == 'LINUX' } @image_id = data['imageId'] end tests('#create_storage') do # puts '#create_storage' data = service.create_storage( @data_center_id, 5, { 'storageName' => 'FogVolume', 'mountImageId' => @image_id } ) @storage_id = data.body['createStorageResponse']['storageId'] service.volumes.get(@storage_id).wait_for { ready? } data.body['createStorageResponse'] end tests('#get_storage').formats(@storage_format) do # puts '#get_storage' data = service.get_storage(@storage_id).body['getStorageResponse'] end tests('#get_all_storages').formats(@storage_format) do # puts '#get_all_storages' data = service.get_all_storages data.body['getAllStoragesResponse'].find { |storage| storage['storageId'] == @storage_id } end tests('#update_storage').formats(@minimal_format) do # puts '#update_storage' service.update_storage(@storage_id, { 'size' => 6 }).body['updateStorageResponse'] end tests('#create_server').formats(@minimal_format.merge('serverId' => String)) do # puts '#create_server' data = service.create_server(@data_center_id, 1, 512, { 'serverName' => 'FogServer', 'bootFromStorageId' => @storage_id }) @server_id = data.body['createServerResponse']['serverId'] service.servers.get(@server_id).wait_for { ready? } data.body['createServerResponse'] end tests('#get_all_servers').formats(@server_format.merge( 'dataCenterId' => String, 'dataCenterVersion' => Integer )) do # puts '#get_all_servers' data = service.get_all_servers data.body['getAllServersResponse'].find { |server| server['serverId'] == @server_id } end tests('#get_server').formats(@server_format.merge(@minimal_format)) do # puts '#get_server' data = service.get_server(@server_id) data.body['getServerResponse'] end tests('#update_server').formats(@minimal_format) do # puts '#update_server' data = service.update_server(@server_id, { 'serverName' => 'FogServerRename' }) service.servers.get(@server_id).wait_for { ready? } data.body['updateServerResponse'] end tests('#connect_storage_to_server').formats(@minimal_format) do # puts '#connect_storage_to_server' service.connect_storage_to_server(@storage_id, @server_id).body['connectStorageToServerResponse'] end tests('#stop_server').succeeds do # puts '#stop_server' service.stop_server(@server_id) end tests('#start_server').succeeds do # puts '#start_server' service.start_server(@server_id) end tests('#reset_server').succeeds do # puts '#reset_server' service.reset_server(@server_id) end tests('#disconnect_storage_from_server').formats(@minimal_format) do # puts '#disconnect_storage_from_server' service.disconnect_storage_from_server(@storage_id, @server_id).body['disconnectStorageFromServerResponse'] end tests('#delete_storage').formats(@minimal_format) do # puts '#delete_storage' data = service.delete_storage(@storage_id) data.body['deleteStorageResponse'] end tests('#delete_server').formats(@minimal_format) do # puts '#delete_server' data = service.delete_server(@server_id) data.body['deleteServerResponse'] end tests('#clear_data_center').formats(@minimal_format) do data = service.clear_data_center(@data_center_id) data.body['clearDataCenterResponse'] end tests('#delete_data_center').formats({'requestId' => String}) do # puts '#delete_data_center' service.delete_data_center(@data_center_id).body['deleteDataCenterResponse'] end end tests('failure') do tests('#get_data_center').raises(Fog::Errors::NotFound) do # puts '#get_data_center' service.get_data_center('00000000-0000-0000-0000-000000000000') end tests('#update_data_center').raises(Fog::Errors::NotFound) do # puts '#update_data_center' service.update_data_center('00000000-0000-0000-0000-000000000000', { 'dataCenterName' => 'FogTestDCRename' }) end tests('#delete_data_center').raises(Fog::Errors::NotFound) do # puts '#delete_data_center' service.delete_data_center('00000000-0000-0000-0000-000000000000') end tests('#create_storage').raises(ArgumentError) do # puts '#create_storage' service.create_storage end tests('#get_storage').raises(Fog::Errors::NotFound) do # puts '#get_storage' service.get_storage('00000000-0000-0000-0000-000000000000') end tests('#update_storage').raises(Fog::Errors::NotFound) do # puts '#update_storage' service.update_storage('00000000-0000-0000-0000-000000000000') end tests('#delete_storage').raises(Fog::Errors::NotFound) do # puts '#delete_storage' service.delete_storage('00000000-0000-0000-0000-000000000000') end end end fog-profitbricks-0.0.1/tests/profitbricks/requests/compute/flavor_tests.rb0000644000076400007640000000224012450014225026241 0ustar pravipraviShindo.tests('Fog::Compute[:profitbricks] | flavor request', ['profitbricks', 'compute']) do @flavor_format = { 'flavorId' => String, 'flavorName' => String, 'ram' => Integer, 'cores' => Integer } service = Fog::Compute[:profitbricks] tests('success') do # Not yet implemented # tests('#create_flavor').formats(@flavor_format) do # puts '#create_flavor' # data = service.create_flavor('FogFlavorTest', 4096, 2) # data.body['createFlavorResponse'] # end tests('#get_all_flavors').formats(@flavor_format) do # puts '#get_all_flavors' data = service.get_all_flavors @flavor_id = data.body['getAllFlavorsResponse'][0]['flavorId'] data.body['getAllFlavorsResponse'][0] end tests('#get_flavor').formats(@flavor_format) do # puts '#get_flavor' data = service.get_flavor(@flavor_id) data.body['getFlavorResponse'] end end tests('failure') do tests('#get_flavor').raises(Fog::Errors::NotFound) do # puts '#get_flavor' data = service.get_flavor('00000000-0000-0000-0000-000000000000') data.body['getRegionResponse'] end end end fog-profitbricks-0.0.1/examples/0000755000076400007640000000000012450014225015627 5ustar pravipravifog-profitbricks-0.0.1/examples/pb_demo.rb0000644000076400007640000000316512450014225017566 0ustar pravipravirequire 'fog' Excon.defaults[:connection_timeout] = 200 compute = Fog::Compute.new(:provider => 'ProfitBricks') # Create data center datacenter = compute.datacenters.create(:name => 'MyDataCenter', :region => 'us/las') datacenter.wait_for { ready? } # Get the data center compute.datacenters.get(datacenter.id) # List all data centers compute.datacenters.all # Update the data center datacenter.options = { :dataCenterName => 'TestDataCenter'} datacenter.update datacenter.wait_for { ready? } # Refresh data center properties datacenter.reload # Find HDD image in North America running Linux image = compute.images.all.find do |image| image.region == 'us/las' && image.type == 'HDD' && image.os_type == 'LINUX' end # Create volume volume = compute.volumes.create(:data_center_id => datacenter.id, :size => 5, :options => { :storageName => 'MyVolume', :mountImageId => image.id }) volume.wait_for { ready? } # Create server server = compute.servers.create(:data_center_id => datacenter.id, :cores => 1, :ram => 1024, :options => { :serverName => 'MyServer' }) server.wait_for { ready? } # Attach volume to server volume.attach(server.id) # Create network interface and attach to server nic = compute.interfaces.create(:server_id => server.id, :lan_id => 1, :options => { :nicName => 'TestNic', :ip => '10.0.0.1', :dhcpActive => false }) # Enable LAN for public Internet access nic.set_internet_access(:data_center_id => datacenter.id, :lan_id => 1, :internet_access => true) # Clear data center (WARNING - this will remove all items under a data center) datacenter.clear(true) # Delete data center datacenter.destroy fog-profitbricks-0.0.1/README.md0000644000076400007640000000112112450014225015263 0ustar pravipravi# Fog::profitbricks TODO: Write a gem description ## Installation Add this line to your application's Gemfile: gem 'fog-profitbricks' And then execute: $ bundle Or install it yourself as: $ gem install fog-profitbricks ## Usage TODO: Write usage instructions here ## Contributing 1. Fork it ( https://github.com/[my-github-username]/fog-profitbricks/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request fog-profitbricks-0.0.1/Gemfile0000644000076400007640000000014512450014225015304 0ustar pravipravisource 'https://rubygems.org' # Specify your gem's dependencies in fog-profitbricks.gemspec gemspec fog-profitbricks-0.0.1/.ruby-version0000644000076400007640000000000512450014225016451 0ustar pravipravi2.1.2fog-profitbricks-0.0.1/.ruby-gemset0000644000076400007640000000002012450014225016245 0ustar pravipravifog-profitbricksfog-profitbricks-0.0.1/metadata.yml0000644000076400007640000002306512450014225016322 0ustar pravipravi--- !ruby/object:Gem::Specification name: fog-profitbricks version: !ruby/object:Gem::Version version: 0.0.1 platform: ruby authors: - Ethan Devenport autorequire: bindir: bin cert_chain: [] date: 2014-10-24 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: fog-core requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: fog-xml requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: nokogiri requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: minitest requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: shindo requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: turn requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: pry requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: rubocop requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' - !ruby/object:Gem::Dependency name: coveralls requirement: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' description: Module for the 'fog' gem to support ProfitBricks. email: - ethand@stackpointcloud.com executables: [] extensions: [] extra_rdoc_files: [] files: - .gitignore - .rubocop.yml - .ruby-gemset - .ruby-version - .travis.yml - CONTRIBUTING.md - CONTRIBUTORS.md - Gemfile - LICENSE.md - README.md - Rakefile - examples/pb_demo.rb - fog-profitbricks.gemspec - gemfiles/Gemfile.1.8.7 - gemfiles/Gemfile.1.9.2+ - lib/fog/bin/profitbricks.rb - lib/fog/profitbricks.rb - lib/fog/profitbricks/compute.rb - lib/fog/profitbricks/core.rb - lib/fog/profitbricks/models/compute/datacenter.rb - lib/fog/profitbricks/models/compute/datacenters.rb - lib/fog/profitbricks/models/compute/flavor.rb - lib/fog/profitbricks/models/compute/flavors.rb - lib/fog/profitbricks/models/compute/image.rb - lib/fog/profitbricks/models/compute/images.rb - lib/fog/profitbricks/models/compute/interface.rb - lib/fog/profitbricks/models/compute/interfaces.rb - lib/fog/profitbricks/models/compute/region.rb - lib/fog/profitbricks/models/compute/regions.rb - lib/fog/profitbricks/models/compute/server.rb - lib/fog/profitbricks/models/compute/servers.rb - lib/fog/profitbricks/models/compute/volume.rb - lib/fog/profitbricks/models/compute/volumes.rb - lib/fog/profitbricks/parsers/base.rb - lib/fog/profitbricks/parsers/compute/clear_data_center.rb - lib/fog/profitbricks/parsers/compute/connect_storage_to_server.rb - lib/fog/profitbricks/parsers/compute/create_data_center.rb - lib/fog/profitbricks/parsers/compute/create_nic.rb - lib/fog/profitbricks/parsers/compute/create_server.rb - lib/fog/profitbricks/parsers/compute/create_storage.rb - lib/fog/profitbricks/parsers/compute/delete_data_center.rb - lib/fog/profitbricks/parsers/compute/delete_nic.rb - lib/fog/profitbricks/parsers/compute/delete_server.rb - lib/fog/profitbricks/parsers/compute/delete_storage.rb - lib/fog/profitbricks/parsers/compute/disconnect_storage_from_server.rb - lib/fog/profitbricks/parsers/compute/get_all_data_centers.rb - lib/fog/profitbricks/parsers/compute/get_all_images.rb - lib/fog/profitbricks/parsers/compute/get_all_nic.rb - lib/fog/profitbricks/parsers/compute/get_all_servers.rb - lib/fog/profitbricks/parsers/compute/get_all_storages.rb - lib/fog/profitbricks/parsers/compute/get_data_center.rb - lib/fog/profitbricks/parsers/compute/get_data_center_state.rb - lib/fog/profitbricks/parsers/compute/get_image.rb - lib/fog/profitbricks/parsers/compute/get_nic.rb - lib/fog/profitbricks/parsers/compute/get_server.rb - lib/fog/profitbricks/parsers/compute/get_storage.rb - lib/fog/profitbricks/parsers/compute/reset_server.rb - lib/fog/profitbricks/parsers/compute/set_internet_access.rb - lib/fog/profitbricks/parsers/compute/update_data_center.rb - lib/fog/profitbricks/parsers/compute/update_nic.rb - lib/fog/profitbricks/parsers/compute/update_server.rb - lib/fog/profitbricks/parsers/compute/update_storage.rb - lib/fog/profitbricks/requests/compute/clear_data_center.rb - lib/fog/profitbricks/requests/compute/connect_storage_to_server.rb - lib/fog/profitbricks/requests/compute/create_data_center.rb - lib/fog/profitbricks/requests/compute/create_flavor.rb - lib/fog/profitbricks/requests/compute/create_nic.rb - lib/fog/profitbricks/requests/compute/create_server.rb - lib/fog/profitbricks/requests/compute/create_storage.rb - lib/fog/profitbricks/requests/compute/delete_data_center.rb - lib/fog/profitbricks/requests/compute/delete_nic.rb - lib/fog/profitbricks/requests/compute/delete_server.rb - lib/fog/profitbricks/requests/compute/delete_storage.rb - lib/fog/profitbricks/requests/compute/disconnect_storage_from_server.rb - lib/fog/profitbricks/requests/compute/get_all_data_centers.rb - lib/fog/profitbricks/requests/compute/get_all_flavors.rb - lib/fog/profitbricks/requests/compute/get_all_images.rb - lib/fog/profitbricks/requests/compute/get_all_locations.rb - lib/fog/profitbricks/requests/compute/get_all_nic.rb - lib/fog/profitbricks/requests/compute/get_all_servers.rb - lib/fog/profitbricks/requests/compute/get_all_storages.rb - lib/fog/profitbricks/requests/compute/get_data_center.rb - lib/fog/profitbricks/requests/compute/get_data_center_state.rb - lib/fog/profitbricks/requests/compute/get_flavor.rb - lib/fog/profitbricks/requests/compute/get_image.rb - lib/fog/profitbricks/requests/compute/get_location.rb - lib/fog/profitbricks/requests/compute/get_nic.rb - lib/fog/profitbricks/requests/compute/get_server.rb - lib/fog/profitbricks/requests/compute/get_storage.rb - lib/fog/profitbricks/requests/compute/reset_server.rb - lib/fog/profitbricks/requests/compute/set_internet_access.rb - lib/fog/profitbricks/requests/compute/start_server.rb - lib/fog/profitbricks/requests/compute/stop_server.rb - lib/fog/profitbricks/requests/compute/update_data_center.rb - lib/fog/profitbricks/requests/compute/update_nic.rb - lib/fog/profitbricks/requests/compute/update_server.rb - lib/fog/profitbricks/requests/compute/update_storage.rb - lib/fog/profitbricks/version.rb - spec/minitest_helper.rb - tests/helper.rb - tests/helpers/formats_helper.rb - tests/helpers/mock_helper.rb - tests/profitbricks/requests/compute/flavor_tests.rb - tests/profitbricks/requests/compute/image_tests.rb - tests/profitbricks/requests/compute/interface_tests.rb - tests/profitbricks/requests/compute/location_tests.rb - tests/profitbricks/requests/compute/server_tests.rb homepage: https://github.com/fog/fog-profitbricks licenses: - MIT metadata: {} post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - '>=' - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 2.4.2 signing_key: specification_version: 4 summary: Module for the 'fog' gem to support ProfitBricks. test_files: - spec/minitest_helper.rb has_rdoc: fog-profitbricks-0.0.1/lib/0000755000076400007640000000000012450014225014557 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/0000755000076400007640000000000012450014225015332 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks.rb0000644000076400007640000000043112450014225020356 0ustar pravipravirequire "fog/core" require "fog/xml" require "fog/profitbricks/core" require "fog/profitbricks/version" require "fog/profitbricks/compute" require "fog/profitbricks/parsers/base" module Fog module ProfitBricks extend Fog::Provider service(:compute, "Compute") end end fog-profitbricks-0.0.1/lib/fog/bin/0000755000076400007640000000000012450014225016102 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/bin/profitbricks.rb0000644000076400007640000000134312450014225021131 0ustar pravipraviclass ProfitBricks < Fog::Bin class << self def class_for(key) case key when :compute Fog::Compute::ProfitBricks else raise ArgumentError, "Unrecognized service: #{key}" end end def [](service) @@connections ||= Hash.new do |hash, key| hash[key] = case key when :compute Fog::Logger.warning("ProfitBricks[:compute] is not recommended, use Fog::Compute[:profitbricks] for portability") Fog::Compute.new(:provider => 'ProfitBricks') else raise ArgumentError, "Unrecognized service: #{key.inspect}" end end @@connections[service] end def services Fog::ProfitBricks.services end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/0000755000076400007640000000000012450014225020033 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/version.rb0000644000076400007640000000010112450014225022035 0ustar pravipravimodule Fog module ProfitBricks VERSION = "0.0.1" end end fog-profitbricks-0.0.1/lib/fog/profitbricks/compute.rb0000644000076400007640000001706212450014225022042 0ustar pravipravimodule Fog module Compute class ProfitBricks < Fog::Service API_VERSION = '1.3' requires :profitbricks_username, :profitbricks_password recognizes :profitbricks_url # Models model_path 'fog/profitbricks/models/compute' model :server collection :servers model :datacenter collection :datacenters model :region collection :regions model :image collection :images model :flavor collection :flavors model :volume collection :volumes model :interface collection :interfaces # Requests request_path 'fog/profitbricks/requests/compute' request :create_server # createServer request :delete_server # deleteServer request :update_server # updateServer request :get_all_servers # getAllServers request :get_server # getServer request :reset_server # resetServer request :start_server # startServer request :stop_server # stopServer request :clear_data_center # clearDataCenter request :create_data_center # createDataCenter request :delete_data_center # deleteDataCenter request :update_data_center # updateDataCenter request :get_all_data_centers # getAllDataCenters request :get_data_center # getDataCenter request :get_data_center_state # getDataCenterState request :get_all_locations # getAllLocations request :get_location # getLocation request :get_all_images # getAllImages request :get_image # getImage request :get_all_flavors # getAllFlavors request :get_flavor # getFlavor request :create_flavor # createFlavor request :create_storage # createStorage request :delete_storage # deleteStorage request :update_storage # updateStorage request :get_all_storages # getAllStorages request :get_storage # getStorage request :connect_storage_to_server # connectStorageToServer request :disconnect_storage_from_server # disconnectStorageFromServer request :create_nic # createNic request :delete_nic # deleteNic request :update_nic # updateNic request :get_all_nic # getAllNic request :get_nic # getNic request :set_internet_access # setInternetAccess class Real def initialize(options={}) @profitbricks_username = options[:profitbricks_username] @profitbricks_password = options[:profitbricks_password] @profitbricks_url = options[:profitbricks_url] || "https://api.profitbricks.com/#{API_VERSION}" @connection = Fog::XML::Connection.new(@profitbricks_url, false) end def request(params) begin response = @connection.request(params.merge({ :headers => { 'Authorization' => "Basic #{auth_header}" }.merge!(params[:headers] || {}) })) rescue Excon::Errors::Unauthorized => error raise error rescue Excon::Errors::HTTPStatusError => error raise error rescue Excon::Errors::InternalServerError => error raise error end response end private def auth_header return Base64.encode64( "#{@profitbricks_username}:#{@profitbricks_password}" ).delete("\r\n") end end class Mock def self.data @data ||= Hash.new do |hash, key| hash[key] = { :servers => [], :datacenters => [], :regions => [ { 'locationId' => 'c0420cc0-90e8-4f4b-8860-df0a07d18047', 'locationName' => 'de/fkb', 'country' => 'DEU' }, { 'locationId' => '68c4099a-d9d8-4683-bdc2-12789aacfa2a', 'locationName' => 'de/fra', 'country' => 'DEU' }, { 'locationId' => 'e102ba74-6764-47f3-8896-246141da8ada', 'locationName' => 'us/las', 'country' => 'USA' } ], :images => [ { 'imageId' => 'ece948c0-14f8-4d49-8bdc-b966b746b6f9', 'imageName' => 'CentOS-6.5-x86_64-netinstall.iso', 'imageType' => 'CDROM', 'imageSize' => 244, 'bootable' => 'true', 'cpuHotPlug' => 'false', 'cpuHotUnPlug' => 'false', 'ramHotPlug' => 'false', 'ramHotUnPlug' => 'false', 'discVirtioHotPlug' => 'false', 'discVirtioHotUnPlug' => 'false', 'nicHotPlug' => 'false', 'nicHotUnPlug' => 'false', 'osType' => 'LINUX', 'serverIds' => nil, 'writeable' => 'true', 'location' => 'us/las', 'public' => 'true' }, { 'imageId' => 'cc43d811-c423-402c-8bd0-6a04073a65ca', 'imageName' => 'CentOS-6-server', 'imageType' => 'HDD', 'imageSize' => 11264, 'bootable' => 'true', 'cpuHotPlug' => 'false', 'cpuHotUnPlug' => 'false', 'ramHotPlug' => 'false', 'ramHotUnPlug' => 'false', 'discVirtioHotPlug' => 'false', 'discVirtioHotUnPlug' => 'false', 'nicHotPlug' => 'false', 'nicHotUnPlug' => 'false', 'osType' => 'LINUX', 'serverIds' => nil, 'writeable' => 'true', 'location' => 'us/las', 'public' => 'true' } ], :flavors => [ { 'flavorId' => Fog::UUID.uuid, 'flavorName' => 'Micro', 'ram' => 1024, 'disk' => 50, 'cores' => 1 }, { 'flavorId' => Fog::UUID.uuid, 'flavorName' => 'Small', 'ram' => 2048, 'disk' => 50, 'cores' => 1 } ], :volumes => [], :interfaces => [] } end end def self.reset @data = nil end def initialize(options={}) @profitbricks_username = options[:profitbricks_username] @profitbricks_password = options[:profitbricks_password] end def data self.class.data[@profitbricks_username] end def reset_data self.class.data.delete(@profitbricks_username) end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/0000755000076400007640000000000012450014225021706 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/0000755000076400007640000000000012450014225023362 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_server.rb0000644000076400007640000000656312450014225026066 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_server" # Create new virtual server # # ==== Parameters # * serverId<~String> - UUID of a virtual server # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * serverId<~String> - UUID of the new virtual server # * serverName<~String> - # * cores<~Integer> - # * ram<~Integer> - # * internetAccess<~String> - # * ips<~String> - # * connectedStorages<~Array>: # * bootDevice<~Integer> - # * busType<~String> - VIRTIO|IDE # * deviceNumber<~Integer> - # * size<~Integer> - # * storageId<~String> - # * storageName<~String> - # * nics<~Array>: # * dataCenterId<~String> - # * dataCenterVersion<~Integer> - # * nicId<~String> - # * lanId<~Integer> - # * internetAccess<~String> - # * serverId<~String> - # * ips<~String> - # * macAddress<~String> - # * firewall<~Hash>: # * active<~String> - # * firewallId<~String> - # * nicId<~String> - # * provisioningState<~String> - # * dhcpActive<~String> - # * provisioningState<~String> - # * provisioningState<~String> - # * virtualMachineState<~String> - # * creationTime<~Time> - # * lastModificationTime<~Time> - # * osType<~String> - # * availabilityZone<~String> - # * cpuHotPlug<~String> - # * ramHotPlug<~String> - # * nicHotPlug<~String> - # * nicHotUnPlug<~String> - # * discVirtioHotPlug<~String> - # * discVirtioHotUnPlug<~String> - # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/APIDocumentation.html?getServer.html] def get_server(server_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getServer { xml.serverId(server_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def get_server(server_id) if server = self.data[:servers].find { |attrib| attrib["serverId"] == server_id } else raise Fog::Errors::NotFound.new("The server resource could not be found") end server["requestId"] = Fog::Mock::random_numbers(7) response = Excon::Response.new response.status = 200 response.body = { "getServerResponse" => server } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_data_center.rb0000644000076400007640000000224312450014225027020 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_data_center" def get_data_center(data_center_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getDataCenter { xml.dataCenterId(data_center_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetDataCenter.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def get_data_center(data_center_id) if dc = self.data[:datacenters].find { |attrib| attrib["dataCenterId"] == data_center_id } else raise Fog::Errors::NotFound.new("The requested resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "getDataCenterResponse" => dc } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_nic.rb0000644000076400007640000000405112450014225026147 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/get_all_nic' # Returns all virtual NICs # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getAllNicResponse<~Hash>: # * nicId<~String> - UUID of the network interface # * nicName<~String> - Name of the network interface # * lanId<~Integer> - # * internetAccess<~Boolean> - # * serverId<~String> - # * ips<~String> - # * macAddress<~String> - # * firewall<~Hash>: # * ... # * dhcpActive<~Boolean> - # * gatewayIp<~String> - # * provisioningState<~String> - INACTIVE, INPROCESS, AVAILABLE, DELETED, ERROR # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetAllNIC.html] def get_all_nic soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].getAllNic } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetAllNic.new ) end end class Mock def get_all_nic response = Excon::Response.new response.status = 200 response.body = { 'getAllNicResponse' => self.data[:interfaces] } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_location.rb0000644000076400007640000000271412450014225026362 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real def get_location(location_id) response = Excon::Response.new response.status = 200 response.body = { "getLocationResponse" => [ { "locationId" => "c0420cc0-90e8-4f4b-8860-df0a07d18047", "locationName" => "de/fkb", "country" => "DEU" }, { "locationId" => "68c4099a-d9d8-4683-bdc2-12789aacfa2a", "locationName" => "de/fra", "country" => "DEU" }, { "locationId" => "e102ba74-6764-47f3-8896-246141da8ada", "locationName" => "us/las", "country" => "USA" } ].find { |location| location["locationId"] == location_id } || raise(Fog::Errors::NotFound) } response end end class Mock def get_location(location_id) if location = self.data[:regions].find { |attrib| attrib["locationId"] == location_id } else raise Fog::Errors::NotFound.new("The requested resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "getLocationResponse" => location } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/create_nic.rb0000644000076400007640000000660712450014225026014 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/create_nic' # Create new virtual network interface # # ==== Parameters # * serverId<~String> - Required, # * lanId - Required, # * options<~Hash>: # * nicName<~String> - Optional, name of the new virtual network interface # * ip<~String> - Optional, # * dhcpActive<~String> - Optional, # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * createNicResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * nicId<~String> - UUID of the new virtual network interface # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/CreateNIC.html] def create_nic(server_id, lan_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].createNic { xml.request { xml.serverId(server_id) xml.lanId(lan_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::CreateNic.new ) end end class Mock def create_nic(server_id, lan_id, options={}) response = Excon::Response.new response.status = 200 nic_id = Fog::UUID.uuid nic = { 'nicId' => nic_id, 'lanId' => lan_id, 'nicName' => options['nicName'] || '', 'internetAccess' => options['internetAccess'] || 'false', 'ip' => options['ip'] || nil, 'macAddress' => Fog::Mock::random_hex(12), 'firewall' => {}, 'dhcpActive' => options['dhcpActive'] || 'false', 'provisioningState' => 'AVAILABLE' } self.data[:interfaces] << nic response.body = { 'createNicResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1, 'nicId' => nic_id } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_data_center_state.rb0000644000076400007640000000305512450014225030222 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/get_data_center_state' def get_data_center_state(data_center_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].getDataCenterState { xml.dataCenterId(data_center_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetDataCenterState.new ) end end class Mock def get_data_center_state(data_center_id) if data = self.data[:datacenters] dc = self.data[:datacenters].find { |attrib| attrib['dataCenterId'] == data_center_id } response = Excon::Response.new response.status = 200 response.body = { 'getDataCenterStateResponse' => { 'return' => dc['provisioningState'] } } response else raise Fog::Compute::NotFound end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/update_server.rb0000644000076400007640000000642112450014225026562 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/update_server' # Update a virtual server # # ==== Parameters # * serverId<~String> - Required, UUID of virtual server # * options<~Hash>: # * serverName<~String> - Optional, # * cores<~Integer> - Optional, # * ram<~Integer> Optional, Memory in MB # * bootFromStorageId<~String> - Optional, UUID of boot storage # * bootFromImageId<~String> - # * osType<~String> - Optional, UNKNOWN, WINDOWS, LINUX, OTHER # * availabilityZone<~String> - Optional, AUTO, ZONE_1, ZONE_2 # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * updateServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateServer.html] def update_server(server_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].updateServer { xml.request { xml.serverId(server_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::UpdateServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def update_server(server_id, options={}) if server = self.data[:servers].find { |attrib| attrib['serverId'] == server_id } options.each do |key, value| server[key] = value end else raise Fog::Errors::NotFound.new( 'The requested server resource could not be found' ) end response = Excon::Response.new response.status = 200 response.body = { 'updateServerResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/set_internet_access.rb0000644000076400007640000000471412450014225027741 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/set_internet_access' # Connect an existing NIC to a public LAN to get internet access # # ==== Parameters # * dataCenterId<~String> - # * lanId<~Integer> - # * internetAccess<~Boolean> - # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * setInternetAccessResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/SetInternetAccess.html] def set_internet_access(data_center_id, lan_id, internet_access) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].setInternetAccess { xml.dataCenterId(data_center_id) xml.lanId(lan_id) xml.internetAccess(internet_access) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::SetInternetAccess.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def set_internet_access(data_center_id, lan_id, internet_access) response = Excon::Response.new response.status = 200 response.body = { 'setInternetAccessResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/clear_data_center.rb0000644000076400007640000000324012450014225027325 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/clear_data_center" # Clear all objects within a virtual data center # # ==== Parameters # * dataCenterId<~String> - Required, UUID of virtual data center # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * clearDataCenterResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/ClearDataCenter.html] def clear_data_center(data_center_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].clearDataCenter { xml.dataCenterId(data_center_id) } } request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::ClearDataCenter.new ) end end class Mock def clear_data_center(data_center_id) response = Excon::Response.new response.status = 200 response.body = { "clearDataCenterResponse" => { "requestId" => Fog::Mock::random_numbers(7), "dataCenterId" => Fog::UUID.uuid, "dataCenterVersion" => 1, } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_servers.rb0000644000076400007640000000361312450014225027072 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_all_servers" # Retrieve list of virtual servers # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getServerResponse<~Array>: # * <~Hash>: # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * serverId<~String> - UUID of the new virtual server # * serverName<~String> - # * cores<~Integer> - # * ram<~Integer> - # * connectedStorages<~Array> - # * nics<~Array> - # * ips<~String> - # * internetAccess<~Boolean> - # * provisioningState<~String> - # * virtualMachineState<~String> - # * creationTime<~Time> - # * lastModificationTime<~Time> - # * osType<~String> - UNKNOWN, WINDOWS, LINUX, OTHER # * availabilityZone<~String> - AUTO, ZONE_1, ZONE_2 # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetAllServers.html] def get_all_servers soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].getAllServers } request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetAllServers.new ) end end class Mock def get_all_servers response = Excon::Response.new response.status = 200 response.body = { "getAllServersResponse" => self.data[:servers] } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/create_data_center.rb0000644000076400007640000000525712450014225027514 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/create_data_center' # Create a new virtual data center # # ==== Parameters # dataCenterName<~String> - Name of the new virtual data center # location<~String> - Location to create the new data center ("de/fkb", "de/fra", or "us/las") # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * createDataCenterResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * location<~String> - Location of virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/CreateDataCenter.html] def create_data_center(data_center_name='', location='') soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].createDataCenter { xml.request { xml.dataCenterName(data_center_name) xml.location(location) } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::CreateDataCenter.new ) end end class Mock def create_data_center(data_center_name='', location='') data_center = { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterName' => data_center_name || '', 'location' => location || '', 'dataCenterVersion' => 1, 'provisioningState' => 'AVAILABLE' } self.data[:datacenters] << data_center response = Excon::Response.new response.status = 200 response.body = { 'createDataCenterResponse' => data_center } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/disconnect_storage_from_server.rb0000644000076400007640000000616012450014225032200 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/disconnect_storage_from_server' # Disconnect virtual storage # # ==== Parameters # * serverId<~String> - UUID of virtual server # * storageId<~String> - UUID of virtual storage # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * disconnectStorageToServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DisconnectStorage.html] def disconnect_storage_from_server(storage_id, server_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].disconnectStorageFromServer { xml.serverId(server_id) xml.storageId(storage_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::DisconnectStorageFromServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def disconnect_storage_from_server(storage_id, server_id) if storage = self.data[:volumes].find { |attrib| attrib['storageId'] == storage_id } else raise Fog::Errors::NotFound.new( 'The requested storage resource could not be found' ) end if server = self.data[:servers].find { |attrib| attrib['serverId'] == server_id }['connectedStorages'].delete(storage) else raise Fog::Errors::NotFound.new( 'The requested server resource could not be found' ) end response = Excon::Response.new response.status = 200 response.body = { 'disconnectStorageFromServerResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_storage.rb0000644000076400007640000000443512450014225026220 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_storage" # Returns all virtual storage information # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getStorage<~Hash>: # * dataCenterId<~String> - UUID of the virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * storageId<~String> - UUID of the virtual storage # * size<~Integer> - Size of the virtual storage in GB # * storageName<~String> - Name of the virtual storage # * mountImage<~Hash>: # * imageId<~String> - # * imageName<~String> - # * serverIds<~String> - List of servers connected to the virtual storage by UUID # * provisioningState<~String> - Current provisioning state of virtual storage # * creationTime<~Time> - Time when virtual storage was created # * lastModificationTime<~Time> - Time when the virtual storage was last modified # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetStorage.html] def get_storage(storage_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getStorage { xml.storageId(storage_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetStorage.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def get_storage(storage_id) if storage = self.data[:volumes].find { |attrib| attrib["storageId"] == storage_id } else raise Fog::Errors::NotFound.new("The requested resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "getStorageResponse" => storage } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/delete_data_center.rb0000644000076400007640000000466612450014225027516 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/delete_data_center' # Delete virtual data center # # ==== Parameters # * dataCenterId<~String> - UUID of the virtual data center # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * deleteDataCenterResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteDataCenter.html] def delete_data_center(data_center_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].deleteDataCenter { xml.dataCenterId(data_center_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::DeleteDataCenter.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def delete_data_center(data_center_id) response = Excon::Response.new response.status = 200 if data_center = self.data[:datacenters].find { |attrib| attrib['dataCenterId'] == data_center_id } self.data[:datacenters].delete(data_center) else raise Fog::Errors::NotFound.new('The requested resource could not be found') end response.body = { 'deleteDataCenterResponse' => { 'requestId' => data_center['requestId'] } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/delete_server.rb0000644000076400007640000000500412450014225026536 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/delete_server' # Delete virtual server # # ==== Parameters # * serverId<~String> - UUID of the virtual server # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * deleteServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteServer.html] def delete_server(server_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].deleteServer { xml.serverId(server_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::DeleteServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def delete_server(server_id) if server = self.data[:servers].find { |attrib| attrib['serverId'] == server_id } self.data[:servers].delete(server) else raise Fog::Errors::NotFound.new( 'The requested server resource could not be found' ) end response = Excon::Response.new response.status = 200 response.body = { 'deleteServerResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1, } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/start_server.rb0000644000076400007640000000320112450014225026426 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real # Start specified virtual server # # ==== Parameters # * serverId<~String> - UUID of a virtual server # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * startServerResponse<~Hash>: # * requestId<~String> - ID of request # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/StartServer.html] def start_server(server_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].startServer { xml.serverId(server_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def start_server(server_id) if server = self.data[:servers].find { |attrib| attrib["serverId"] == server_id } server["machine_state"] = "RUNNING" server["provisioning_state"] = "AVAILABLE" else raise Fog::Errors::NotFound.new("The requested server resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "startServerResponse" => { "requestId" => Fog::Mock::random_numbers(7) } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/update_nic.rb0000644000076400007640000000571112450014225026026 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/update_nic' # Update a virtual NIC # # ==== Parameters # * nicId<~String> - Required, # * options<~Hash>: # * lanId<~Integer> - Optional, # * nicName<~String> - Optional, name of the new virtual network interface # * ip<~String> - Optional, # * dhcpActive<~Boolean> - Optional, # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * updateNicResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateNIC.html] def update_nic(nic_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].updateNic { xml.request { xml.nicId(nic_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::UpdateNic.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def update_nic(nic_id, options={}) if nic = self.data[:interfaces].find { |attrib| attrib['nicId'] == nic_id } options.each do |key, value| nic[key] = value end else raise Fog::Errors::NotFound.new('The requested NIC could not be found') end response = Excon::Response.new response.status = 200 response.body = { 'updateNicResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_locations.rb0000644000076400007640000000322312450014225027371 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real def get_all_locations(options={}) response = Excon::Response.new response.status = 200 response.body = { 'getAllLocationsResponse' => [ { 'locationId' => 'c0420cc0-90e8-4f4b-8860-df0a07d18047', 'locationName' => 'de/fkb', 'country' => 'DEU' }, { 'locationId' => '68c4099a-d9d8-4683-bdc2-12789aacfa2a', 'locationName' => 'de/fra', 'country' => 'DEU' }, { 'locationId' => 'e102ba74-6764-47f3-8896-246141da8ada', 'locationName' => 'us/las', 'country' => 'USA' } ] } response end end class Mock def get_all_locations(options={}) data = self.data[:regions] response = Excon::Response.new response.status = 200 response.body = { 'getAllLocationsResponse' => self.data[:regions] } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/create_flavor.rb0000644000076400007640000000251412450014225026525 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real # Not a real API method; will only return flavor object. def create_flavor(flavor_name, cores, ram) response = Excon::Response.new response.status = 200 response.body = { 'createFlavorResponse' => { 'id' => Fog::UUID.uuid, 'name' => flavor_name, 'cores' => cores, 'ram' => ram, } } response end end class Mock def create_flavor(flavor_name, ram, cores) response = Excon::Response.new response.status = 200 flavor = { 'id' => Fog::UUID.uuid, 'name' => flavor_name, 'ram' => ram, 'cores' => cores } self.data[:flavors] << flavor response.body = { 'createFlavorResponse' => flavor } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_flavors.rb0000644000076400007640000000651012450014225027054 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real def get_all_flavors() response = Excon::Response.new response.status = 200 response.body = { 'getAllFlavorsResponse' => [ { 'flavorId' => '00db4c8f-5e83-49b0-a70b-ac4aad786163', 'flavorName' => 'Micro', 'ram' => 1024, 'cores' => 1 }, { 'flavorId' => 'dc64957b-be9d-431e-91cd-9e217f94d3de', 'flavorName' => 'Small', 'ram' => 2048, 'cores' => 1 }, { 'flavorId' => 'b37d000e-b347-4592-b572-df13ef8f68e1', 'flavorName' => 'Medium', 'ram' => 4096, 'cores' => 2 }, { 'flavorId' => 'a5a4389f-54b6-4f47-b6e8-1c5c55976b94', 'flavorName' => 'Large', 'ram' => 7168, 'cores' => 4 }, { 'flavorId' => '0052db40-f1dd-4ecf-a711-5980081b7059', 'flavorName' => 'Extra Large', 'ram' => 14336, 'cores' => 8 }, { 'flavorId' => '8b2b835d-be09-48cf-aae2-7e35aafe92d6', 'flavorName' => 'Memory Intensive Small', 'ram' => 16384, 'cores' => 2 }, { 'flavorId' => '45c28f8b-6a67-4f69-8c94-231d371da2b6', 'flavorName' => 'Memory Intensive Medium', 'ram' => 28672, 'cores' => 4 }, { 'flavorId' => '1d22436d-d958-4151-b144-43a8e180c4c4', 'flavorName' => 'Memory Intensive Large', 'ram' => 57344, 'cores' => 8 }, ] } response end end class Mock def get_all_flavors data = self.data[:flavors] response = Excon::Response.new response.status = 200 response.body = { 'getAllFlavorsResponse' => self.data[:flavors] } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_image.rb0000644000076400007640000000517712450014225025642 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_image" # Displays a list of all available images. # # ==== Parameters # * imageId<~String> - Name of the new virtual data center # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getAllImagesResponse<~Hash>: # * imageId<~String> - Identifer of the image # * imageName<~String> - Name of the image # * imageSize<~Integer> - Size of the image (in MB?) # * imageType<~String> - Image type HDD or CD-ROM/DVD (ISO) image # * writeable<~String> - Image is writable (TRUE/FALSE) # * bootable<~String> - Image is bootable # * cpuHotplug<~String> -Image supports CPU Hot-Plugging # * cpuHotUnplug<~String> - # * ramHotPlug<~String> - Image supports memory Hot-Plugging # * ramHotUnPlug<~String> - # * discVirtioHotPlug<~String> - # * discVirtioHotUnplug<~String> - # * nicHotPlug<~String> - # * nicHotUnplug<~String> - # * serverIds<~String> - List all servers by ID on which the image is used # * location<~String> - Location where the image has been uploaded # * osType<~String> - OS type of an image (WINDOWS, LINUX, OTHER, UNKNOWN) # * public<~String> - Shows if image is publicly available or private # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/APIDocumentation.html?GetImages.html] def get_image(image_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getImage { xml.imageId(image_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetImage.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def get_image(image_id) if data_center = self.data[:images].find { |attrib| attrib["imageId"] == image_id } else raise Fog::Errors::NotFound.new("The requested resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "getImageResponse" => data_center } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/reset_server.rb0000644000076400007640000000266712450014225026432 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/reset_server" # Reset specified virtual server # # ==== Parameters # * serverId<~String> - UUID of a virtual server # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * resetServerResponse<~Hash>: # * requestId<~String> - ID of request # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/ResetServer.html] def reset_server(server_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].resetServer { xml.serverId(server_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::ResetServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def reset_server(server_id) response = Excon::Response.new response.status = 200 response.body = { "resetServerResponse" => { "requestId" => Fog::Mock::random_numbers(7) } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_storages.rb0000644000076400007640000000470612450014225027234 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/get_all_storages' # Returns all virtual storage information # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getAllStorages<~Hash>: # * dataCenterId<~String> - UUID of the virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * storageId<~String> - UUID of the virtual storage # * size<~Integer> - Size of the virtual storage in GB # * storageName<~String> - Name of the virtual storage # * mountImage<~Hash>: # * imageId<~String> - # * imageName<~String> - # * serverIds<~String> - List of servers connected to the virtual storage by UUID # * provisioningState<~String> - Current provisioning state of virtual storage # * creationTime<~Time> - Time when virtual storage was created # * lastModificationTime<~Time> - Time when the virtual storage was last modified # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetAllStorages.html] def get_all_storages soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].getAllStorages } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetAllStorages.new ) end end class Mock def get_all_storages data = self.data[:volumes] response = Excon::Response.new response.status = 200 response.body = { 'getAllStoragesResponse' => self.data[:volumes] } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_nic.rb0000644000076400007640000000371112450014225025321 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_nic" # Return virtual NIC information # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getNicResponse<~Hash>: # * nicId<~String> - UUID of the network interface # * nicName<~String> - Name of the network interface # * lanId<~Integer> - # * internetAccess<~Boolean> - # * serverId<~String> - # * ips<~String> - # * macAddress<~String> - # * firewall<~Hash>: # * ... # * dhcpActive<~Boolean> - # * gatewayIp<~String> - # * provisioningState<~String> - INACTIVE, INPROCESS, AVAILABLE, DELETED, ERROR # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/GetNIC.html] def get_nic(nic_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getNic { xml.nicId(nic_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetNic.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def get_nic(nic_id) if nic = self.data[:interfaces].find { |attrib| attrib["nicId"] == nic_id } else raise Fog::Errors::NotFound.new("The requested resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "getNicResponse" => nic } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/create_storage.rb0000644000076400007640000001051212450014225026675 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/create_storage' # Create new virtual storage # # ==== Parameters # * dataCenterId<~String> - Required, UUID of virtual data center # * size<~Integer> - Required, size of virtual storage # * options<~Hash>: # * storageName<~String> - Optional, name of the new virtual storage # * mountImageId<~String> - Optional, UUID of image # * profitBricksImagePassword<~String> - Optional, # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * createStorageResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * storageId<~String> - UUID of the new virtual storage # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/CreateStorage.html] def create_storage(data_center_id, size, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].createStorage { xml.request { xml.dataCenterId(data_center_id) xml.size(size) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::CreateStorage.new ) end end class Mock def create_storage(data_center_id, size, options={}) response = Excon::Response.new response.status = 200 if data_center = self.data[:datacenters].find { |attrib| attrib['dataCenterId'] == data_center_id } data_center['dataCenterVersion'] += 1 else raise Fog::Errors::NotFound.new('Data center resource could not be found') end if image = self.data[:images].find { |attrib| attrib['imageId'] == options['mountImageId'] } mount_image = { 'imageId' => options['mountImageId'], 'imageName' => image['imageName'] } end storage_id = Fog::UUID.uuid storage = { 'dataCenterId' => data_center_id, 'dataCenterVersion' => data_center['dataCenterVersion'], 'storageId' => storage_id, 'size' => size, 'storageName' => options['storageName'] || '', 'mountImage' => mount_image || {}, 'provisioningState' => 'AVAILABLE', 'creationTime' => Time.now, 'lastModificationTime' => Time.now, 'profitBricksImagePassword' => options['profitBricksImagePassword'] || '' } self.data[:volumes] << storage response.body = { 'createStorageResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1, 'storageId' => storage_id } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/stop_server.rb0000644000076400007640000000317112450014225026264 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real # Stop specified virtual server # # ==== Parameters # * serverId<~String> - UUID of a virtual server # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * stopServerResponse<~Hash>: # * requestId<~String> - ID of request # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/StopServer.html] def stop_server(server_id) soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].stopServer { xml.serverId(server_id) } end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def stop_server(server_id) if server = self.data[:servers].find { |attrib| attrib["serverId"] == server_id } server["machine_state"] = "SHUTOFF" server["provisioning_state"] = "INACTIVE" else raise Fog::Errors::NotFound.new("The requested server resource could not be found") end response = Excon::Response.new response.status = 200 response.body = { "stopServerResponse" => { "requestId" => Fog::Mock::random_numbers(7) } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/connect_storage_to_server.rb0000644000076400007640000000662112450014225031161 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/connect_storage_to_server' # Connect virtual storage # # ==== Parameters # * storageId<~String> - Required, UUID of virtual storage # * serverId<~String> - Required, # * options<~Hash>: # * busType<~String> - Optional, VIRTIO, IDE # * deviceNumber<~Integer> - Optional, # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * connectStorageToServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/ConnectStorage.html] def connect_storage_to_server(storage_id, server_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].connectStorageToServer { xml.request { xml.storageId(storage_id) xml.serverId(server_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::ConnectStorageToServer.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def connect_storage_to_server(storage_id, server_id, options={}) if storage = self.data[:volumes].find { |attrib| attrib['storageId'] == storage_id } else raise Fog::Errors::NotFound.new( 'The requested volume could not be found' ) end if server = self.data[:servers].find { |attrib| attrib['serverId'] == server_id } server['connectedStorages'] << storage else raise Fog::Errors::NotFound.new( 'The requested server could not be found' ) end response = Excon::Response.new response.status = 200 response.body = { 'connectStorageToServerResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/create_server.rb0000644000076400007640000001337512450014225026551 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/create_server' # Create new virtual server # # ==== Parameters # * dataCenterId<~String> - Required, UUID of virtual data center # * cores<~Integer> - Required, number of CPU cores allocated to virtual server # * ram<~Integer> - Required, amount of memory in GB allocated to virtual server # * options<~Hash>: # * serverName<~String> - Optional, name of the new virtual network interface # * bootFromStorageId<~String> - Optional, defines an existing storage device ID to be set as boot device of the server # * bootFromImageId<~ - Optional, defines an existing CD-ROM/DVD image ID to be set as boot device of the server # * internetAccess<~Boolean> - Optional, set to TRUE to connect the server to the Internet via the specified LAN ID # * lanId<~String> - Optional, connects the server to the specified LAN ID # * osType<~String> - Optional, UNKNOWN, WINDOWS, LINUX, OTHER # * availabilityZone<~String> - Optional, AUTO, ZONE_1, ZONE_2 # * cpuHotPlug<~Boolean> - Optional, set the server CPU Hot-Plug capability # * ramHotPlug<~Boolean> - Optional, set the server RAM Hot-Plug capability # * nicHotPlug<~Boolean> - Optional, set the server NIC Hot-Plug capability # * nicHotUnPlug<~Boolean> - Optional, set the server NIC Hot-UnPlug capability # * discVirtioHotPlug<~Boolean> - Optional, set the server capabilities to hotplug storages which are connected through VirtIO bustypeSet # * discVirtioHotUnPlug<~Boolean> - Optional, set the server capabilities to hotUnplug storages which are connected through VirtIO bustypeSet # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * createServerResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # * serverId<~String> - UUID of the new virtual server # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/CreateServer.html] def create_server(data_center_id, cores, ram, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].createServer { xml.request { xml.dataCenterId(data_center_id) xml.cores(cores) xml.ram(ram) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::CreateServer.new ) end end class Mock def create_server(data_center_id, cores, ram, options={}) server_id = Fog::UUID.uuid server = { 'serverId' => server_id, 'cores' => cores, 'ram' => ram, 'serverName' => options['serverName'], 'internetAccess' => options['internetAccess'] || 'false', #'ips' => options['ips'] || '', 'connectedStorages' => options['connectedStorages'] || [], 'romDrives' => options['romDrives'] || [], 'nics' => options['nics'] || [], 'provisioningState' => 'AVAILABLE', 'virtualMachineState' => 'RUNNING', 'creationTime' => Time.now, 'lastModificationTime' => Time.now, 'osType' => options['osType'] || 'UNKNOWN', 'availabilityZone' => options['availabilityZone'] || 'AUTO', 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 ##'cpuHotPlug' => 'true', ##'ramHotPlug' => 'true', ##'nicHotPlug' => 'true', ##'nicHotUnPlug' => 'true', ##'discVirtioHotPlug' => 'true', ##'discVirtioHotUnPlug' => 'true' } self.data[:servers] << server response = Excon::Response.new response.status = 200 response.body = { 'createServerResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1, 'serverId' => server_id } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_flavor.rb0000644000076400007640000000520012450014225026034 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real def get_flavor(flavor_id) response = Excon::Response.new response.status = 200 response.body = { "getFlavorResponse" => [ { "flavorId" => "00db4c8f-5e83-49b0-a70b-ac4aad786163", "flavorName" => "Micro", "ram" => 1024, "cores" => 1 }, { "flavorId" => "dc64957b-be9d-431e-91cd-9e217f94d3de", "flavorName" => "Small", "ram" => 2048, "cores" => 1 }, { "flavorId" => "b37d000e-b347-4592-b572-df13ef8f68e1", "flavorName" => "Medium", "ram" => 4096, "cores" => 2 }, { "flavorId" => "a5a4389f-54b6-4f47-b6e8-1c5c55976b94", "flavorName" => "Large", "ram" => 7168, "cores" => 4 }, { "flavorId" => "0052db40-f1dd-4ecf-a711-5980081b7059", "flavorName" => "Extra Large", "ram" => 14336, "cores" => 8 }, { "flavorId" => "8b2b835d-be09-48cf-aae2-7e35aafe92d6", "flavorName" => "Memory Intensive Small", "ram" => 16384, "cores" => 2 }, { "flavorId" => "45c28f8b-6a67-4f69-8c94-231d371da2b6", "flavorName" => "Memory Intensive Medium", "ram" => 28672, "cores" => 4 }, { "flavorId" => "1d22436d-d958-4151-b144-43a8e180c4c4", "flavorName" => "Memory Intensive Large", "ram" => 57344, "cores" => 8 }, ].find { |flavor| flavor["flavorId"] == flavor_id } || raise(Fog::Errors::NotFound) } response end end class Mock def get_flavor(flavor_id) response = Excon::Response.new response.status = 200 if flavor = self.data[:flavors].find { |attrib| attrib["flavorId"] == flavor_id } else raise Fog::Errors::NotFound.new("The requested flavor could not be found") end response.body = { "getFlavorResponse" => flavor } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/update_data_center.rb0000644000076400007640000000421012450014225027517 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/update_data_center' def update_data_center(data_center_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].updateDataCenter { xml.request { xml.dataCenterId(data_center_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::UpdateDataCenter.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def update_data_center(data_center_id, options={}) if data_center = self.data[:datacenters].find { |attrib| attrib['dataCenterId'] == data_center_id } data_center['dataCenterName'] = options['dataCenterName'] data_center['dataCenterVersion'] += 1 else raise Fog::Errors::NotFound.new('The requested resource could not be found') end response = Excon::Response.new response.status = 200 response.body = { 'updateDataCenterResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/delete_storage.rb0000644000076400007640000000475512450014225026710 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/delete_storage' # Delete a virtual storage # # ==== Parameters # * storageId<~String> - # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * deleteStorageResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteStorage.html] def delete_storage(storage_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].deleteStorage { xml.storageId(storage_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::DeleteStorage.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def delete_storage(storage_id) response = Excon::Response.new response.status = 200 if storage = self.data[:volumes].find { |attrib| attrib['storageId'] == storage_id } self.data[:volumes].delete(storage) else raise Fog::Errors::NotFound.new( 'The requested resource could not be found' ) end response.body = { 'deleteStorageResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 3 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_images.rb0000644000076400007640000000565212450014225026653 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/get_all_images' # Displays a list of all available images. # # ==== Parameters # * N/A # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * getAllImagesResponse<~Hash>: # * imageId<~String> - Identifer of the image # * imageName<~String> - Name of the image # * imageSize<~Integer> - Size of the image # * imageType<~String> - Image type HDD or CD-ROM/DVD (ISO) image # * writeable<~String> - Image is writable (TRUE/FALSE) # * bootable<~String> - Image is bootable # * cpuHotplug<~String> -Image supports CPU Hot-Plugging # * cpuHotUnplug<~String> - # * ramHotPlug<~String> - Image supports memory Hot-Plugging # * ramHotUnPlug<~String> - # * discVirtioHotPlug<~String> - # * discVirtioHotUnplug<~String> - # * nicHotPlug<~String> - # * nicHotUnplug<~String> - # * serverIds<~String> - List all servers by ID on which the image is used # * location<~String> - Location where the image has been uploaded # * osType<~String> - OS type of an image (WINDOWS, LINUX, OTHER, UNKNOWN) # * public<~String> - Shows if image is publicly available or private # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/APIDocumentation.html?GetAllImages.html] def get_all_images() soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].getAllImages } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetAllImages.new ) end end class Mock def get_all_images() if data = self.data[:images] response = Excon::Response.new response.status = 200 response.body = { 'getAllImagesResponse' => self.data[:images] } response else raise Fog::Compute::NotFound end end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/get_all_data_centers.rb0000644000076400007640000000151312450014225030032 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require "fog/profitbricks/parsers/compute/get_all_data_centers" def get_all_data_centers soap_envelope = Fog::ProfitBricks.construct_envelope do |xml| xml[:ws].getAllDataCenters end request( :expects => [200], :method => "POST", :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::GetAllDataCenters.new ) end end class Mock def get_all_data_centers response = Excon::Response.new response.status = 200 response.body = { "getAllDataCentersResponse" => self.data[:datacenters] } response end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/delete_nic.rb0000644000076400007640000000475412450014225026014 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/delete_nic' # Delete virtual network interface # # ==== Parameters # * nicId<~String> - UUID of the virtual network interface # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * deleteNicResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/DeleteNic.html] def delete_nic(nic_id) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].deleteNic { xml.nicId(nic_id) } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::DeleteNic.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def delete_nic(nic_id) response = Excon::Response.new response.status = 200 if nic = self.data[:interfaces].find { |attrib| attrib['nicId'] == nic_id } self.data[:interfaces].delete(nic) else raise Fog::Errors::NotFound.new( 'The requested NIC could not be found' ) end response.body = { 'deleteNicResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1, } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/requests/compute/update_storage.rb0000644000076400007640000000574212450014225026725 0ustar pravipravimodule Fog module Compute class ProfitBricks class Real require 'fog/profitbricks/parsers/compute/update_storage' # Update a virtual storage # # ==== Parameters # * storageId<~String> - Required, UUID of the virtual storage # * options<~Hash>: # * size<~Integer> - Optional, size of virtual storage in GB # * storageName<~String> - Optional, # * mountImageId<~String> - Optional, # # ==== Returns # * response<~Excon::Response>: # * body<~Hash>: # * updateStorageResponse<~Hash>: # * requestId<~String> - ID of request # * dataCenterId<~String> - UUID of virtual data center # * dataCenterVersion<~Integer> - Version of the virtual data center # # {ProfitBricks API Documentation}[http://www.profitbricks.com/apidoc/UpdateStorage.html] def update_storage(storage_id, options={}) soap_envelope = Fog::ProfitBricks.construct_envelope { |xml| xml[:ws].updateStorage { xml.request { xml.storageId(storage_id) options.each { |key, value| xml.send(key, value) } } } } request( :expects => [200], :method => 'POST', :body => soap_envelope.to_xml, :parser => Fog::Parsers::Compute::ProfitBricks::UpdateStorage.new ) rescue Excon::Errors::InternalServerError => error Fog::Errors::NotFound.new(error) end end class Mock def update_storage(storage_id, options={}) if storage = self.data[:volumes].find { |attrib| attrib['storageId'] == storage_id } options.each do |key, value| storage[key] = value end else raise Fog::Errors::NotFound.new('The requested resource could not be found') end response = Excon::Response.new response.status = 200 response.body = { 'updateStorageResponse' => { 'requestId' => Fog::Mock::random_numbers(7), 'dataCenterId' => Fog::UUID.uuid, 'dataCenterVersion' => 1 } } response end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/0000755000076400007640000000000012450014225021316 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/0000755000076400007640000000000012450014225022772 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/volumes.rb0000644000076400007640000000123612450014225025013 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/volume' module Fog module Compute class ProfitBricks class Volumes < Fog::Collection model Fog::Compute::ProfitBricks::Volume def all load(service.get_all_storages.body['getAllStoragesResponse']) end def get(id) volume = service.get_storage(id).body['getStorageResponse'] Excon::Errors new(volume) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/region.rb0000644000076400007640000000063112450014225024602 0ustar pravipravimodule Fog module Compute class ProfitBricks class Region < Fog::Model identity :id, :aliases => 'locationId' attribute :name, :aliases => 'locationName' attribute :country, :aliases => 'country' def initialize(attributes={}) super end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/regions.rb0000644000076400007640000000124512450014225024767 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/region' module Fog module Compute class ProfitBricks class Regions < Fog::Collection model Fog::Compute::ProfitBricks::Region def all() load (service.get_all_locations.body['getAllLocationsResponse']) end def get(id) region = service.get_location(id).body['getLocationResponse'] Excon::Errors new(region) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/interfaces.rb0000644000076400007640000000123312450014225025441 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/interface' module Fog module Compute class ProfitBricks class Interfaces < Fog::Collection model Fog::Compute::ProfitBricks::Interface def all load(service.get_all_nic.body['getAllNicResponse']) end def get(id) interface = service.get_nic(id).body['getNicResponse'] Excon::Errors new(interface) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/datacenter.rb0000644000076400007640000000350612450014225025435 0ustar pravipravimodule Fog module Compute class ProfitBricks class Datacenter < Fog::Model identity :id, :aliases => 'dataCenterId' attribute :name, :aliases => 'dataCenterName' attribute :version, :aliases => 'dataCenterVersion' attribute :state, :aliases => 'provisioningState' attribute :request_id, :aliases => 'requestId' attribute :region attr_accessor :options def initialize(attributes={}) super end def save requires :name, :region data = service.create_data_center(name, region) merge_attributes(data.body['createDataCenterResponse']) true end def update requires :id data = service.update_data_center(id, options) merge_attributes(data.body['updateDataCenterResponse']) true end def destroy requires :id service.delete_data_center(id) true end def clear(confirm = false) requires :id if confirm == true service.clear_data_center(id) true else raise ArgumentError.new('Confirm with true boolean to clear datacenter') end end def ready? self.state == 'AVAILABLE' end def failed? self.state == 'ERROR' end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/flavor.rb0000644000076400007640000000136612450014225024616 0ustar pravipravimodule Fog module Compute class ProfitBricks class Flavor < Fog::Model identity :id, :aliases => 'flavorId' attribute :name, :aliases => 'flavorName' attribute :cores attribute :ram def initialize(attributes={}) super end def save requires :name, :ram, :cores data = service.create_flavor(name, cores, ram) merge_attributes(data.body['createFlavorResponse']) true end def update Fog::Mock.not_implemented end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/volume.rb0000644000076400007640000000475012450014225024634 0ustar pravipravimodule Fog module Compute class ProfitBricks class Volume < Fog::Model identity :id, :aliases => 'storageId' attribute :name, :aliases => 'storageName' attribute :size attribute :creation_time, :aliases => 'creationTime' attribute :modification_time, :aliases => 'lastModificationTime' attribute :server_ids, :aliases => 'serverIds' attribute :mount_image, :aliases => 'mountImage' attribute :state, :aliases => 'provisioningState' attribute :data_center_id, :aliases => 'dataCenterId' attribute :data_center_version, :aliases => 'dataCenterVersion' attribute :request_id, :aliases => 'requestId' attr_accessor :options def initialize(attributes={}) super end def save requires :data_center_id, :size data = service.create_storage(data_center_id, size, options) merge_attributes(data.body['createStorageResponse']) true end def update requires :id data = service.update_storage(id, options) merge_attributes(data.body['updateStorageResponse']) true end def attach(server_id, options={}) requires :id options = { 'busType' => options[:bus_type], 'deviceNumber' => options[:device_number] } data = service.connect_storage_to_server(id, server_id, options) reload end def detach(server_id) requires :id data = service.disconnect_storage_from_server(id, server_id) reload end def destroy requires :id service.delete_storage(id) true end def ready? self.state == 'AVAILABLE' end def failed? self.state == 'ERROR' end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/interface.rb0000644000076400007640000000434712450014225025267 0ustar pravipravimodule Fog module Compute class ProfitBricks class Interface < Fog::Model identity :id, :aliases => 'nicId' attribute :name, :aliases => 'nicName' attribute :mac_address, :aliases => 'macAddress' attribute :lan_id, :aliases => 'lanId' attribute :dhcp_active, :aliases => 'dhcpActive' attribute :ips, :aliases => 'ips' attribute :server_id, :aliases => 'serverId' attribute :internet_access, :aliases => 'internetAccess' attribute :state, :aliases => 'provisioningState' attribute :firewall attribute :data_center_id, :aliases => 'dataCenterId' attribute :data_center_version, :aliases => 'dataCenterVersion' attribute :request_id, :aliases => 'requestId' attr_accessor :options def initialize(attributes={}) super end def save requires :server_id, :lan_id data = service.create_nic(server_id, lan_id, options={}) merge_attributes(data.body['createNicResponse']) true end def update requires :id data = service.update_nic(id, options) merge_attributes(data.body['updateNicResponse']) true end def destroy requires :id service.delete_nic(id) true end def set_internet_access(options={}) service.set_internet_access( options[:data_center_id], options[:lan_id], options[:internet_access] ) true end def ready? self.state == 'AVAILABLE' end def failed? self.state == 'ERROR' end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/image.rb0000644000076400007640000000253012450014225024401 0ustar pravipravimodule Fog module Compute class ProfitBricks class Image < Fog::Model identity :id, :aliases => 'imageId' attribute :name, :aliases => 'imageName' attribute :type, :aliases => 'imageType' attribute :size, :aliases => 'imageSize' attribute :cpu_hotplug, :aliases => 'cpuHotPlug' attribute :cpu_hotunplug, :aliases => 'cpuHotUnplug' attribute :ram_hotplug, :aliases => 'memoryHotPlug' attribute :ram_hotunplug, :aliases => 'memoryHotUnPlug' attribute :disc_hotplug, :aliases => 'discVirtioHotPlug' attribute :disc_hotunplug, :aliases => 'discVirtioUnHotPlug' attribute :nic_hotplug, :aliases => 'nicHotPlug' attribute :nic_hotunplug, :aliases => 'nicHotUnPlug' attribute :server_ids, :aliases => 'serverIds' attribute :os_type, :aliases => 'osType' attribute :region, :aliases => 'location' attribute :bootable attribute :writeable attribute :public def initialize(attributes={}) super end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/servers.rb0000644000076400007640000000117112450014225025010 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/server' module Fog module Compute class ProfitBricks class Servers < Fog::Collection model Fog::Compute::ProfitBricks::Server def all load (service.get_all_servers.body['getAllServersResponse']) end def get(id) server = service.get_server(id).body['getServerResponse'] new(server) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/images.rb0000644000076400007640000000115612450014225024567 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/image' module Fog module Compute class ProfitBricks class Images < Fog::Collection model Fog::Compute::ProfitBricks::Image def all load (service.get_all_images.body['getAllImagesResponse']) end def get(id) image = service.get_image(id).body['getImageResponse'] new(image) rescue Fog::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/server.rb0000644000076400007640000000765312450014225024640 0ustar pravipravirequire 'fog/compute/models/server' module Fog module Compute class ProfitBricks class Server < Fog::Compute::Server identity :id, :aliases => 'serverId' attribute :name, :aliases => 'serverName' attribute :cores attribute :ram attribute :attached_volumes, :aliases => 'connectedStorages' attribute :interfaces, :aliases => 'nics' attribute :internet_access, :aliases => 'internetAccess' attribute :zone, :aliases => 'availabilityZone' attribute :creation_time, :aliases => 'creationTime' attribute :modification_time, :aliases => 'lastModificationTime' attribute :machine_state, :aliases => 'virtualMachineState' attribute :state, :aliases => 'provisioningState' attribute :os_type, :aliases => 'osType' attribute :cpu_hotplug, :aliases => 'cpuHotPlug' attribute :ram_hotplug, :aliases => 'ramHotPlug' attribute :nic_hotplug, :aliases => 'nicHotPlug' attribute :nic_hotunplug, :aliases => 'nicHotUnPlug' attribute :disc_hotplug, :aliases => 'discVirtioHotPlug' attribute :disc_hotunplug, :aliases => 'discVirtioHotUnPlug' attribute :data_center_id, :aliases => 'dataCenterId' attribute :data_center_version, :aliases => 'dataCenterVersion' attribute :request_id, :aliases => 'requestId' attr_accessor :options attr_accessor :flavor_id def initialize(attributes={}) super end def save requires :data_center_id if (cores and ram) data = service.create_server(data_center_id, cores, ram, options || {}) elsif flavor_id flavor = service.flavors.get(flavor_id) data = service.create_server(data_center_id, flavor.cores, flavor.ram, options || {}) else raise ArgumentError, 'cores/ram or flavor_id is required for this operation' end merge_attributes(data.body['createServerResponse']) true end def update requires :id data = service.update_server(id, options) merge_attributes(data.body['updateServerResponse']) true end def reset requires :id service.reset_server(id) true end def start requires :id service.start_server(id) true end def stop requires :id service.stop_server(id) true end def destroy requires :id service.delete_server(id) true end def volumes service.volumes.find_all do |volume| volume.server_ids =~ /#{id}/ end end def interfaces service.interfaces.find_all do |nic| nic.server_id == id end end def ready? self.state == 'AVAILABLE' end def failed? self.state == 'ERROR' end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/datacenters.rb0000644000076400007640000000130112450014225025607 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/datacenter' module Fog module Compute class ProfitBricks class Datacenters < Fog::Collection model Fog::Compute::ProfitBricks::Datacenter def all load (service.get_all_data_centers.body['getAllDataCentersResponse']) end def get(id) datacenter = service.get_data_center(id).body['getDataCenterResponse'] Excon::Errors new(datacenter) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/models/compute/flavors.rb0000644000076400007640000000123512450014225024774 0ustar pravipravirequire 'fog/core/collection' require 'fog/profitbricks/models/compute/flavor' module Fog module Compute class ProfitBricks class Flavors < Fog::Collection model Fog::Compute::ProfitBricks::Flavor def all() load (service.get_all_flavors.body['getAllFlavorsResponse']) end def get(id) flavor = service.get_flavor(id).body['getFlavorResponse'] Excon::Errors new(flavor) rescue Excon::Errors::NotFound nil end end end end endfog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/0000755000076400007640000000000012450014225021512 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/0000755000076400007640000000000012450014225023166 5ustar pravipravifog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_server.rb0000644000076400007640000000373112450014225025664 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getServerResponse' => {} } @response['getServerResponse'] = { 'connectedStorages' => [], 'nics' => [] } @storage = {} @nic = {} end def end_element(name) case name when 'requestId', 'dataCenterId', 'dataCenterName', 'serverId', 'serverName', 'internetAccess', 'provisioningState', 'virtualMachineState', 'osType', 'availabilityZone', 'ips', 'cpuHotPlug', 'ramHotPlug', 'nicHotPlug', 'nicHotUnPlug', 'discVirtioHotPlug', 'discVirtioHotUnPlug' @response['getServerResponse'][name] = value when 'dataCenterVersion', 'cores', 'ram' @response['getServerResponse'][name] = value.to_i when 'creationTime', 'lastModificationTime' @response['getServerResponse'][name] = Time.parse(value) when 'storageId' @storage['id'] = value when 'storageName' @storage['name'] = value when 'busType' @storage['bus_type'] = value when 'bootDevice' @storage['boot_device'] = value when 'deviceNumber' @storage['device_number'] = value.to_i when 'size' @storage['size'] = value.to_i when 'connectedStorages' @response['getServerResponse']['connectedStorages'] << @storage when 'nicId', 'nicName', 'macAddress', 'gatewayIp', 'dhcpActive', 'ips' @nic[name] = value when 'lanId' @nic[name] = value.to_i when 'nics' @response['getServerResponse']['nics'] << @nic end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_data_center.rb0000644000076400007640000000117012450014225026622 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetDataCenter < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getDataCenterResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId', 'dataCenterName', 'provisioningState', 'location' @response['getDataCenterResponse'][name] = value when 'dataCenterVersion' @response['getDataCenterResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_all_nic.rb0000644000076400007640000000162612450014225025760 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetAllNic < Fog::Parsers::ProfitBricks::Base def reset @nic = { 'firewall' => {} } @response = { 'getAllNicResponse' => [] } end def end_element(name) case name when 'dataCenterId', 'nicId', 'nicName', 'serverId', 'internetAccess', 'serverId', 'ips', 'macAddress', 'dhcpActive', 'gatewayIp', 'provisioningState' @nic[name] = value when 'dataCenterVersion', 'lanId' @nic[name] = value.to_i when 'active', 'firewallId', 'firewallRules' @nic['firewall'][name] = value when 'return' @response['getAllNicResponse'] << @nic @nic = { 'firewall' => {} } end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/create_nic.rb0000644000076400007640000000105712450014225025612 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class CreateNic < Fog::Parsers::ProfitBricks::Base def reset @response = { 'createNicResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId', 'nicId' @response['createNicResponse'][name] = value when 'dataCenterVersion' @response['createNicResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_data_center_state.rb0000644000076400007640000000071112450014225030022 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetDataCenterState < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getDataCenterStateResponse' => {} } end def end_element(name) case name when 'return' @response['getDataCenterStateResponse'][name] = value end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/update_server.rb0000644000076400007640000000106212450014225026362 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class UpdateServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'updateServerResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['updateServerResponse'][name] = value when 'dataCenterVersion' @response['updateServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/set_internet_access.rb0000644000076400007640000000110612450014225027535 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class SetInternetAccess < Fog::Parsers::ProfitBricks::Base def reset @response = { 'setInternetAccessResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['setInternetAccessResponse'][name] = value when 'dataCenterVersion' @response['setInternetAccessResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/clear_data_center.rb0000644000076400007640000000107612450014225027136 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class ClearDataCenter < Fog::Parsers::ProfitBricks::Base def reset @response = { 'clearDataCenterResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['clearDataCenterResponse'][name] = value when 'dataCenterVersion' @response['clearDataCenterResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_all_servers.rb0000644000076400007640000000372412450014225026701 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetAllServers < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getAllServersResponse' => [] } @server = { 'connectedStorages' => [], 'nics' => [] } @storage = {} @nic = {} end def end_element(name) case name when 'requestId', 'dataCenterId', 'dataCenterName', 'serverId', 'serverName', 'internetAccess', 'provisioningState', 'virtualMachineState', 'osType', 'availabilityZone', 'ips', 'cpuHotPlug', 'ramHotPlug', 'nicHotPlug', 'nicHotUnPlug', 'discVirtioHotPlug', 'discVirtioHotUnPlug' @server[name] = value when 'dataCenterVersion', 'cores', 'ram' @server[name] = value.to_i when 'creationTime', 'lastModificationTime' @server[name] = Time.parse(value) when 'storageId' @storage['id'] = value when 'storageName' @storage['name'] = value when 'busType' @storage['bus_type'] = value when 'bootDevice' @storage['boot_device'] = value when 'deviceNumber' @storage['device_number'] = value.to_i when 'size' @storage['size'] = value.to_i when 'connectedStorages' @server['connectedStorages'] << @storage when 'nicId', 'nicName', 'macAddress', 'gatewayIp', 'dhcpActive', 'ips' @nic[name] = value when 'lanId' @nic[name] = value.to_i when 'nics' @server['nics'] << @nic when 'return' @response['getAllServersResponse'] << @server @server = { 'connectedStorages' => [], 'nics' => [] } end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/create_data_center.rb0000644000076400007640000000111612450014225027306 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class CreateDataCenter < Fog::Parsers::ProfitBricks::Base def reset @response = { 'createDataCenterResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId', 'location' @response['createDataCenterResponse'][name] = value when 'dataCenterVersion' @response['createDataCenterResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/disconnect_storage_from_server.rb0000644000076400007640000000115612450014225032004 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class DisconnectStorageFromServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'disconnectStorageFromServerResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['disconnectStorageFromServerResponse'][name] = value when 'dataCenterVersion' @response['disconnectStorageFromServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_storage.rb0000644000076400007640000000201412450014225026013 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetStorage < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getStorageResponse' => {} } @response['getStorageResponse']['mountImage'] = {} end def end_element(name) case name when 'requestId', 'dataCenterId', 'storageId', 'storageName', 'serverIds', 'provisioningState' @response['getStorageResponse'][name] = value when 'imageId' @response['getStorageResponse']['mountImage']['id'] = value when 'imageName' @response['getStorageResponse']['mountImage']['name'] = value when 'dataCenterVersion', 'size' @response['getStorageResponse'][name] = value.to_i when 'creationTime', 'lastModificationTime' @response['getStorageResponse'][name] = Time.parse(value) end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/delete_data_center.rb0000644000076400007640000000070612450014225027311 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class DeleteDataCenter < Fog::Parsers::ProfitBricks::Base def reset @response = { 'deleteDataCenterResponse' => {} } end def end_element(name) case name when 'requestId' @response['deleteDataCenterResponse'][name] = value end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/delete_server.rb0000644000076400007640000000106212450014225026342 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class DeleteServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'deleteServerResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['deleteServerResponse'][name] = value when 'dataCenterVersion' @response['deleteServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/update_nic.rb0000644000076400007640000000104612450014225025627 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class UpdateNic < Fog::Parsers::ProfitBricks::Base def reset @response = { 'updateNicResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['updateNicResponse'][name] = value when 'dataCenterVersion' @response['updateNicResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_image.rb0000644000076400007640000000150212450014225025432 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetImage < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getImageResponse' => {} } end def end_element(name) case name when 'imageId', 'imageName', 'imageType', 'writeable', 'osType', 'pubic', 'serverIds', 'cpuHotPlug', 'public', 'cpuHotUnPlug', 'ramHotPlug', 'ramHotUnPlug', 'bootable', 'discVirtioHotPlug', 'discVirtioHotUnPlug', 'location', 'nicHotPlug', 'nicHotUnPlug', 'description' @response['getImageResponse'][name] = value when 'imageSize' @response['getImageResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/reset_server.rb0000644000076400007640000000067412450014225026232 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class ResetServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'resetServerResponse' => {} } end def end_element(name) case name when 'requestId' @response['resetServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_all_storages.rb0000644000076400007640000000201312450014225027025 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetAllStorages < Fog::Parsers::ProfitBricks::Base def reset @storage = { 'mountImage' => {} } @response = { 'getAllStoragesResponse' => [] } end def end_element(name) case name when 'dataCenterId', 'storageId', 'storageName', 'serverIds', 'provisioningState' @storage[name] = value when 'imageId' @storage['mountImage']['id'] = value when 'imageName' @storage['mountImage']['name'] = value when 'dataCenterVersion', 'size' @storage[name] = value.to_i when 'creationTime', 'lastModificationTime' @storage[name] = Time.parse(value) when 'return' @response['getAllStoragesResponse'] << @storage @storage = { 'mountImage' => {} } end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_nic.rb0000644000076400007640000000155512450014225025131 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetNic < Fog::Parsers::ProfitBricks::Base def reset @response = { 'getNicResponse' => {} } @response['getNicResponse']['firewall'] = {} end def end_element(name) case name when 'dataCenterId', 'nicId', 'nicName', 'serverId', 'internetAccess', 'serverId', 'ips', 'macAddress', 'dhcpActive', 'gatewayIp', 'provisioningState' @response['getNicResponse'][name] = value when 'dataCenterVersion', 'lanId' @response['getNicResponse'][name] = value.to_i when 'active', 'firewallId', 'firewallRules' @response['getNicResponse']['firewall'][name] = value end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/create_storage.rb0000644000076400007640000000110312450014225026475 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class CreateStorage < Fog::Parsers::ProfitBricks::Base def reset @response = { 'createStorageResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId', 'storageId' @response['createStorageResponse'][name] = value when 'dataCenterVersion' @response['createStorageResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/connect_storage_to_server.rb0000644000076400007640000000113212450014225030755 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class ConnectStorageToServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'connectStorageToServerResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['connectStorageToServerResponse'][name] = value when 'dataCenterVersion' @response['connectStorageToServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/create_server.rb0000644000076400007640000000107612450014225026350 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class CreateServer < Fog::Parsers::ProfitBricks::Base def reset @response = { 'createServerResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId', 'serverId' @response['createServerResponse'][name] = value when 'dataCenterVersion' @response['createServerResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/update_data_center.rb0000644000076400007640000000110212450014225027320 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class UpdateDataCenter < Fog::Parsers::ProfitBricks::Base def reset @response = { 'updateDataCenterResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['updateDataCenterResponse'][name] = value when 'dataCenterVersion' @response['updateDataCenterResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/delete_storage.rb0000644000076400007640000000106612450014225026504 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class DeleteStorage < Fog::Parsers::ProfitBricks::Base def reset @response = { 'deleteStorageResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['deleteStorageResponse'][name] = value when 'dataCenterVersion' @response['deleteStorageResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_all_images.rb0000644000076400007640000000163212450014225026451 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetAllImages < Fog::Parsers::ProfitBricks::Base def reset @image = {} @response = { 'getAllImagesResponse' => [] } end def end_element(name) case name when 'imageId', 'imageName', 'imageType', 'writeable', 'osType', 'serverIds', 'cpuHotPlug', 'description', 'cpuHotUnPlug', 'ramHotPlug', 'ramHotUnPlug', 'discVirtioHotPlug', 'discVirtioHotUnPlug', 'public', 'nicHotPlug', 'nicHotUnPlug', 'bootable', 'location' @image[name] = value when 'imageSize' @image[name] = value.to_i when 'return' @response['getAllImagesResponse'] << @image @image = {} end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/get_all_data_centers.rb0000644000076400007640000000125712450014225027643 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class GetAllDataCenters < Fog::Parsers::ProfitBricks::Base def reset @datacenter = {} @response = { 'getAllDataCentersResponse' => [] } end def end_element(name) case name when 'dataCenterId', 'dataCenterName' @datacenter[name] = value when 'dataCenterVersion' @datacenter[name] = value.to_i when 'return' @response['getAllDataCentersResponse'] << @datacenter @datacenter = {} end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/delete_nic.rb0000644000076400007640000000104612450014225025607 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class DeleteNic < Fog::Parsers::ProfitBricks::Base def reset @response = { 'deleteNicResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['deleteNicResponse'][name] = value when 'dataCenterVersion' @response['deleteNicResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/compute/update_storage.rb0000644000076400007640000000106612450014225026524 0ustar pravipravimodule Fog module Parsers module Compute module ProfitBricks class UpdateStorage < Fog::Parsers::ProfitBricks::Base def reset @response = { 'updateStorageResponse' => {} } end def end_element(name) case name when 'requestId', 'dataCenterId' @response['updateStorageResponse'][name] = value when 'dataCenterVersion' @response['updateStorageResponse'][name] = value.to_i end end end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/parsers/base.rb0000644000076400007640000000227712450014225022761 0ustar pravipravirequire "nokogiri" module Fog module Parsers module ProfitBricks class Base < Nokogiri::XML::SAX::Document attr_reader :response def initialize reset end def attr_value(name, attrs) (entry = attrs.find {|a, v| a == name }) && entry.last end def reset @response = {} end def characters(string) @value ||= '' @value << string end # ############################################################################### # This is a workaround. Original implementation from Nokogiri is overwritten with # one that does not join namespace prefix with local name. def start_element_namespace name, attrs = [], prefix = nil, uri = nil, ns = [] start_element name, attrs end def end_element_namespace name, prefix = nil, uri = nil end_element name end # ############################################################################### def start_element(name, attrs = []) @value = nil end def value @value && @value.dup end end end end end fog-profitbricks-0.0.1/lib/fog/profitbricks/core.rb0000644000076400007640000000071712450014225021315 0ustar pravipravimodule Fog module ProfitBricks def self.construct_envelope(&block) namespaces = { "xmlns" => "", "xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/", "xmlns:ws" => "http://ws.api.profitbricks.com/" } Nokogiri::XML::Builder.new do |xml| xml[:soapenv].Envelope(namespaces) do xml[:soapenv].Header xml[:soapenv].Body(&block) end end end end end fog-profitbricks-0.0.1/gemfiles/0000755000076400007640000000000012450014225015604 5ustar pravipravifog-profitbricks-0.0.1/gemfiles/Gemfile.1.9.2+0000644000076400007640000000015112450014225017615 0ustar pravipravisource :rubygems gem 'activesupport', '>= 3.0', '< 4' gem 'mime-types', '< 2.0' gemspec :path => '../' fog-profitbricks-0.0.1/gemfiles/Gemfile.1.8.70000644000076400007640000000017112450014225017550 0ustar pravipravisource :rubygems gem 'mime-types', '< 2.0' gem 'nokogiri', '< 1.6' gem 'rest-client', '~> 1.6.8' gemspec :path => '../'fog-profitbricks-0.0.1/Rakefile0000644000076400007640000000065112450014225015460 0ustar pravipravirequire "bundler/gem_tasks" require "rake/testtask" task :default => :test task :travis => ["test", "test:travis"] Rake::TestTask.new do |t| t.libs.push %w(spec) t.test_files = FileList["spec/**/*_spec.rb"] t.verbose = true end namespace :test do mock = ENV["FOG_MOCK"] || "true" task :travis do sh("export FOG_MOCK=#{mock} && bundle exec shindont") end end desc "Default Task" task :default => [ :test ] fog-profitbricks-0.0.1/.gitignore0000644000076400007640000000031612450014225016001 0ustar pravipravi*.gem *.rbc .bundle .config .yardoc Gemfile.lock InstalledFiles _yardoc coverage doc/ lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp *.bundle *.so *.o *.a mkmf.log gemfiles/*.lock .fog