Class: Fog::Compute::IBM::Mock
- Inherits:
-
Object
- Object
- Fog::Compute::IBM::Mock
- Defined in:
- lib/fog/ibm/compute.rb,
lib/fog/ibm/requests/compute/get_key.rb,
lib/fog/ibm/requests/compute/get_image.rb,
lib/fog/ibm/requests/compute/list_keys.rb,
lib/fog/ibm/requests/compute/create_key.rb,
lib/fog/ibm/requests/compute/delete_key.rb,
lib/fog/ibm/requests/compute/list_vlans.rb,
lib/fog/ibm/requests/compute/modify_key.rb,
lib/fog/ibm/requests/compute/clone_image.rb,
lib/fog/ibm/requests/compute/get_request.rb,
lib/fog/ibm/requests/compute/list_images.rb,
lib/fog/ibm/requests/compute/create_image.rb,
lib/fog/ibm/requests/compute/delete_image.rb,
lib/fog/ibm/requests/compute/get_instance.rb,
lib/fog/ibm/requests/compute/get_location.rb,
lib/fog/ibm/requests/compute/create_address.rb,
lib/fog/ibm/requests/compute/delete_address.rb,
lib/fog/ibm/requests/compute/list_addresses.rb,
lib/fog/ibm/requests/compute/list_instances.rb,
lib/fog/ibm/requests/compute/list_locations.rb,
lib/fog/ibm/requests/compute/create_instance.rb,
lib/fog/ibm/requests/compute/delete_instance.rb,
lib/fog/ibm/requests/compute/modify_instance.rb,
lib/fog/ibm/requests/compute/get_image_manifest.rb,
lib/fog/ibm/requests/compute/get_image_agreement.rb,
lib/fog/ibm/requests/compute/list_address_offerings.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#activate_instance(instance_id) ⇒ Object
Sets instance status to Active if it’s not already set.
- #address_exists?(address_id) ⇒ Boolean
- #clone_image(image_id, name, description) ⇒ Object
- #create_address(location_id, offering_id = "20001223", options = {}) ⇒ Object
- #create_image(instance_id, name, description) ⇒ Object
- #create_instance(name, image_id, instance_type, location, options = {}) ⇒ Object
-
#create_key(name, public_key = nil) ⇒ Object
SmartCloud returns the private key when create_key is called We need to store both the private and public key for later use.
- #data ⇒ Object
- #delete_address(address_id) ⇒ Object
- #delete_image(image_id) ⇒ Object
- #delete_instance(instance_id) ⇒ Object
- #delete_key(key_name) ⇒ Object
-
#deleteable?(instance_id) ⇒ Boolean
we can’t delete the instance if it doesn’t exist, or is in an invalid state.
- #get_image(image_id) ⇒ Object
-
#get_image_agreement(image_id) ⇒ Object
TODO: Fix this so they work.
-
#get_image_manifest(image_id) ⇒ Object
TODO: Create a data store for this.
- #get_instance(instance_id) ⇒ Object
- #get_key(key_name) ⇒ Object
- #get_location(location_id) ⇒ Object
- #get_request(request_id) ⇒ Object
-
#initialize(options = {}) ⇒ Mock
constructor
A new instance of Mock.
-
#instance_active?(instance_id) ⇒ Boolean
Checks if an instance is Active.
-
#instance_exists?(instance_id) ⇒ Boolean
Checks if an instance exists.
- #key_exists?(name) ⇒ Boolean
- #list_address_offerings ⇒ Object
- #list_addresses ⇒ Object
- #list_images ⇒ Object
- #list_instances ⇒ Object
- #list_keys ⇒ Object
- #list_locations ⇒ Object
- #list_vlans ⇒ Object
- #location_exists?(location_id) ⇒ Boolean
- #modify_instance(instance_id, params = {}) ⇒ Object
- #modify_key(key_name, params = {}) ⇒ Object
- #reset_data ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Mock
Returns a new instance of Mock.
109 110 111 112 113 |
# File 'lib/fog/ibm/compute.rb', line 109 def initialize(={}) @ibm_username = [:ibm_username] @ibm_password = [:ibm_password] @data = self.class.data[@ibm_username] end |
Class Method Details
.data ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/fog/ibm/compute.rb', line 83 def self.data @data ||= Hash.new do |hash, key| hash[key] = { :instances => {}, :images => populate_images, :keys => {}, :locations => populate_locations, :private_keys => {}, :addresses => {} } end end |
.populate_images ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/fog/ibm/compute.rb', line 115 def self.populate_images images = {} images["20010001"] = { "name"=>"SUSE Linux Enterprise Server 11 SP1 for x86", "manifest"=>"https://www-147.ibm.com/cloud/enterprise/ram.ws/RAMSecure/artifact/{6CD09CE4-E99B-D72F-6C29-233C9B2A1676}/1.0/parameters.xml", "state"=>1, "visibility"=>"PUBLIC", "owner"=>"SYSTEM", "platform"=>"SUSE Linux Enterprise Server/11 SP1", "location"=>"41", "createdTime"=>1282466781000, "supportedInstanceTypes"=> [{"detail"=>"Copper - 32 bit (vCPU: 1, RAM: 2 GiB, Disk: 60 GiB)", "label"=>"Copper 32 bit", "price"=>{"rate"=>0.095, "unitOfMeasure"=>"UHR ", "countryCode"=>"897", "effectiveDate"=>-1, "currencyCode"=>"USD", "pricePerQuantity"=>1}, "id"=>"COP32.1/2048/60"}, {"detail"=>"Bronze - 32 bit (vCPU: 1, RAM: 2 GiB, Disk: 235 GiB)", "label"=>"Bronze 32 bit", "price"=>{"rate"=>0.115, "unitOfMeasure"=>"UHR ", "countryCode"=>"897", "effectiveDate"=>-1, "currencyCode"=>"USD", "pricePerQuantity"=>1}, "id"=>"BRZ32.1/2048/60*175"}, {"detail"=>"Silver - 32 bit (vCPU: 2, RAM: 4 GiB, Disk: 410 GiB)", "label"=>"Silver 32 bit", "price"=>{"rate"=>0.2, "unitOfMeasure"=>"UHR ", "countryCode"=>"897", "effectiveDate"=>-1, "currencyCode"=>"USD", "pricePerQuantity"=>1}, "id"=>"SLV32.2/4096/60*350"}, {"detail"=>"Gold - 32 bit (vCPU: 4, RAM: 4 GiB, Disk: 410 GiB)", "label"=>"Gold 32 bit", "price"=>{"rate"=>0.33, "unitOfMeasure"=>"UHR ", "countryCode"=>"897", "effectiveDate"=>-1, "currencyCode"=>"USD", "pricePerQuantity"=>1}, "id"=>"GLD32.4/4096/60*350"}], "productCodes"=>["rtpSr7dKs9ARDmuPy6WPgV"], "documentation"=>"https://www-147.ibm.com/cloud/enterprise/ram.ws/RAMSecure/artifact/{6CD09CE4-E99B-D72F-6C29-233C9B2A1676}/1.0/GettingStarted.html", "id"=>"20010001", "description"=>"Suse Linux 32 bit" } images end |
.populate_locations ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/fog/ibm/compute.rb', line 151 def self.populate_locations locations = {} locations["41"] = { "state"=>1, "location"=>"RTP", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Raleigh, U.S.A", "id"=>"41", "description"=>"This data center is located in Raleigh, North Carolina, U.S.A. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations["61"] = { "state"=>1, "location"=>"EHN", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Ehningen, Germany", "id"=>"61", "description"=>"This data center is located in Ehningen(near Baden-Wurttemberg), Germany. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations["82"] = { "state"=>1, "location"=>"us-co-dc1", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Boulder1, U.S.A", "id"=>"82", "description"=>"This data center is located in Boulder(near Denver), Colorado, U.S.A. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations["101"] = { "state"=>1, "location"=>"ca-on-dc1", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Markham, Canada", "id"=>"101", "description"=>"This data center is located in Markham(near Toronto), Ontario, Canada. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations["121"] = { "state"=>1, "location"=>"ap-jp-dc1", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Makuhari, Japan", "id"=>"121", "description"=>"This data center is located in Makuhari(near Tokoyo), Japan. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations["141"] = { "state"=>1, "location"=>"ap-sg-dc1", "capabilities"=>[ {"entries"=>{"EXT3"=>["ext3"], "RAW"=>["raw"]}, "id"=>"oss.storage.format"}, {"entries"=>{}, "id"=>"oss.instance.spec.i386"}, {"entries"=>{}, "id"=>"oss.instance.spec.x86_64"}, {"entries"=>{}, "id"=>"oss.storage.availabilityarea"}], "name"=>"Singapore, Singapore", "id"=>"141", "description"=>"This data center is located in Singapore. The services provided are: Guest Instances, Image Capture, Persistent Storage, Reserved IP, Private VLAN/VPN." } locations end |
.reset ⇒ Object
96 97 98 |
# File 'lib/fog/ibm/compute.rb', line 96 def self.reset @data = nil end |
Instance Method Details
#activate_instance(instance_id) ⇒ Object
Sets instance status to Active if it’s not already set.
61 62 63 |
# File 'lib/fog/ibm/requests/compute/get_instance.rb', line 61 def activate_instance(instance_id) self.data[:instances][instance_id]["status"] = 5 unless instance_active? instance_id end |
#address_exists?(address_id) ⇒ Boolean
36 37 38 |
# File 'lib/fog/ibm/requests/compute/delete_address.rb', line 36 def address_exists?(address_id) self.data[:addresses].key? address_id end |
#clone_image(image_id, name, description) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/ibm/requests/compute/clone_image.rb', line 29 def clone_image(image_id, name, description) response = Excon::Response.new if image_exists? image_id id = Fog::IBM::Mock.instance_id self.data[:images][id] = self.data[:images][image_id].merge('id' => id, 'name' => name, 'description' => description) response.status = 200 response.body = { "ImageID" => id } else response.status = 404 end response end |
#create_address(location_id, offering_id = "20001223", options = {}) ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'lib/fog/ibm/requests/compute/create_address.rb', line 35 def create_address(location_id, offering_id="20001223", ={}) address = Fog::IBM::Mock.create_address(location_id, offering_id, ) self.data[:addresses][address['id']] = address response = Excon::Response.new response.status = 200 response.body = address response end |
#create_image(instance_id, name, description) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/fog/ibm/requests/compute/create_image.rb', line 37 def create_image(instance_id, name, description) response = Excon::Response.new if instance_exists? instance_id image = Fog::IBM::Mock.private_image(name, description) self.data[:images][image["id"]] = image response.status = 200 response.body = image else response.status = 404 end response end |
#create_instance(name, image_id, instance_type, location, options = {}) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/fog/ibm/requests/compute/create_instance.rb', line 62 def create_instance(name, image_id, instance_type, location, ={}) response = Excon::Response.new # Since we want to test error conditions, we have a little regex that traps specially formed # instance type strings. case name when /FAIL:\ (\d{3})/ response.status = $1.to_i raise Excon::Errors.status_error({:expects => 200}, response) else instance = Fog::IBM::Mock.create_instance(name, image_id, instance_type, location, ) self.data[:instances][instance['id']] = instance response.status = 200 response.body = {"instances" => [ instance ]} response end end |
#create_key(name, public_key = nil) ⇒ Object
SmartCloud returns the private key when create_key is called We need to store both the private and public key for later use
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/fog/ibm/requests/compute/create_key.rb', line 34 def create_key(name, public_key=nil) response = Excon::Response.new response.status = 200 attributes = { "keyName" => name, "lastModifiedTime" => Fog::IBM::Mock.launch_time, "default" => false, "instanceIds" => [], } if public_key.nil? private_key = Fog::IBM::Mock.key_material public_key = private_key.public_key response.body = attributes.merge("keyMaterial" => private_key.to_s) else response.body = { 'success' => true } end self.data[:keys][name] = attributes.merge("keyMaterial" => public_key.to_s) self.data[:private_keys][name] = attributes.merge("keyMaterial" => private_key.to_s) response end |
#data ⇒ Object
100 101 102 |
# File 'lib/fog/ibm/compute.rb', line 100 def data self.class.data[@ibm_username] end |
#delete_address(address_id) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/fog/ibm/requests/compute/delete_address.rb', line 24 def delete_address(address_id) response = Excon::Response.new if address_exists? address_id self.data[:addresses].delete address_id response.status = 200 response.body = { "success" => true } else response.status = 404 end response end |
#delete_image(image_id) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/fog/ibm/requests/compute/delete_image.rb', line 23 def delete_image(image_id) response = Excon::Response.new # TODO: We should probably check that an image is deleteable. # i.e. that the user has appropriate permissions if image_exists? image_id self.data[:images].delete image_id response.status = 200 response.body = {"success"=>true} else response.status = 404 end response end |
#delete_instance(instance_id) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/fog/ibm/requests/compute/delete_instance.rb', line 24 def delete_instance(instance_id) response = Excon::Response.new if deleteable? instance_id # remove from memoreeeez. self.data[:instances].delete instance_id response.body = { 'success' => true } response.status = 200 else # TODO: we should really return a 412 if the instance is in an invalid state, and a 404 if it doesn't exist. response.status = 404 end response end |
#delete_key(key_name) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fog/ibm/requests/compute/delete_key.rb', line 23 def delete_key(key_name) response = Excon::Response.new if key_exists? key_name self.data[:keys].delete(key_name) response.status = 200 response.body = {"success"=>true} else response.status = 404 end response end |
#deleteable?(instance_id) ⇒ Boolean
we can’t delete the instance if it doesn’t exist, or is in an invalid state.
39 40 41 42 43 44 |
# File 'lib/fog/ibm/requests/compute/delete_instance.rb', line 39 def deleteable?(instance_id) return false unless instance_exists? instance_id instance = self.data[:instances][instance_id] return false if [0, 1, 7, 14, 15].include?(instance["status"].to_i) true end |
#get_image(image_id) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/fog/ibm/requests/compute/get_image.rb', line 44 def get_image(image_id) response = Excon::Response.new if image_exists? image_id response.status = 200 response.body = self.data[:images][image_id] else response.status = 404 end response end |
#get_image_agreement(image_id) ⇒ Object
TODO: Fix this so they work.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/fog/ibm/requests/compute/get_image_agreement.rb', line 30 def get_image_agreement(image_id) response = Excon::Response.new response.status = 200 response.body = {"text"=> "test, operating system is SUSE Linux Enterprise Server/11 SP1 - English\n\nYour access to and use of the Service, including all selected options, are governed by the terms of the Agreement signed between your Enterprise and IBM. Each Service is also governed by one or more Attachments (including, for example, Image Terms Attachments). Applicable Attachments are part of the Agreement between you and IBM and include Attachments for Services you acquire after the Agreement was signed. The Agreement also references applicable IBM and third party end user license agreements that govern the use of IBM software and operating system software provided as part of an Image.\n\nYou are responsible for complying with the terms of the Agreement (including applicable Attachments) and applicable license agreements. You may review the terms for the Service by 1) obtaining information regarding the Agreement from your Account Administrator and 2) accessing the Asset Catalog to review specific Image Terms and end user license agreements for IBM and third party software provided as part of an Image. ", "id"=>"20020159", "attachments"=> [{"label"=>"Service Description for Developement & Test Service", "url"=> "https://www-147.ibm.com/cloud/enterprise/static/internal_user_agreement.pdf", "type"=>0}, {"label"=>"Smart Business on the IBM Public Cloud Agreement", "url"=> "https://www-147.ibm.com/cloud/enterprise/static/internal_user_agreement.pdf", "type"=>1}, {"label"=> "End User License for SUSE 10.2 Linux Enterprise Server software", "url"=> "https://www.novell.com/licensing/eula/sles_10/sles_10_english.pdf", "type"=>2}, {"label"=> "End User License for SUSE 11.0 Linux Enterprise Server software", "url"=>"https://www.novell.com/licensing/eula/sles_11/sles_11_en.pdf", "type"=>2}, {"label"=>"End User License for RedHat Linux RHEL software", "url"=>"https://www.redhat.com/licenses/", "type"=>2}]} response end |
#get_image_manifest(image_id) ⇒ Object
TODO: Create a data store for this.
25 26 27 28 29 30 31 |
# File 'lib/fog/ibm/requests/compute/get_image_manifest.rb', line 25 def get_image_manifest(image_id) response = Excon::Response.new response.status = 200 response.body = {"manifest"=> "<?xml version=\"1.0\" encoding=\"UTF-8\"?><parameters xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"platform:/resource/com.ibm.ccl.devcloud.client/schema/parameters.xsd\">\n\t<firewall>\n\t\t<rule>\n\t\t\t<source>0.0.0.0/0</source>\n\t\t\t<minport>1</minport>\n\t\t\t<maxport>65535</maxport>\n\t\t</rule>\n\t</firewall>\n</parameters>"} response end |
#get_instance(instance_id) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/fog/ibm/requests/compute/get_instance.rb', line 43 def get_instance(instance_id) response = Excon::Response.new if instance_exists? instance_id activate_instance(instance_id) # Set it to Active if it's not running response.status = 200 response.body = self.data[:instances][instance_id] else raise Fog::Compute::IBM::NotFound end response end |
#get_key(key_name) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/fog/ibm/requests/compute/get_key.rb', line 28 def get_key(key_name) response = Excon::Response.new if key_exists? key_name response.status = 200 response.body = self.data[:keys][key_name] else response.status = 404 end response end |
#get_location(location_id) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/fog/ibm/requests/compute/get_location.rb', line 34 def get_location(location_id) response = Excon::Response.new if location_exists? location_id response.status = 200 response.body = self.data[:locations][location_id] else response.status = 404 end response end |
#get_request(request_id) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/fog/ibm/requests/compute/get_request.rb', line 44 def get_request(request_id) response = Excon::Response.new response.status = 200 response.body = {"instances"=> [{"name"=>"test from fog", "location"=>"101", "keyName"=>"mykey", "primaryIP"=> {"type"=>0, "ip"=>"42.42.42.42 ", "hostname"=>"42.42.42.42 "}, "productCodes"=>[], "requestId"=>"75364", "imageId"=>"20020159", "launchTime"=>1304012220770, "id"=>"75064", "volumes"=>[], "instanceType"=>"SLV32.2/4096/60*350", "requestName"=>"test from fog", "secondaryIP"=>[], "status"=>1, "software"=> [{"name"=>"SUSE Linux Enterprise Server", "type"=>"OS", "version"=>"11 SP1"}], "expirationTime"=>1367084229205, "owner"=>"[email protected]"}]} response end |
#instance_active?(instance_id) ⇒ Boolean
Checks if an instance is Active
66 67 68 |
# File 'lib/fog/ibm/requests/compute/get_instance.rb', line 66 def instance_active?(instance_id) self.data[:instances][instance_id]["status"] == 5 end |
#instance_exists?(instance_id) ⇒ Boolean
Checks if an instance exists
56 57 58 |
# File 'lib/fog/ibm/requests/compute/get_instance.rb', line 56 def instance_exists?(instance_id) self.data[:instances].key? instance_id end |
#key_exists?(name) ⇒ Boolean
39 40 41 |
# File 'lib/fog/ibm/requests/compute/get_key.rb', line 39 def key_exists?(name) self.data[:keys].key? name end |
#list_address_offerings ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/fog/ibm/requests/compute/list_address_offerings.rb', line 35 def list_address_offerings response = Excon::Response.new response.status = 200 response.body = {"addresses"=> [{"price"=> {"pricePerQuantity"=>1, "effectiveDate"=>1302566400000, "rate"=>0.01, "countryCode"=>"897", "unitOfMeasure"=>"UHR", "currencyCode"=>"USD"}, "location"=>"101", "ipType"=>0, "id"=>"20001223"}]} response end |
#list_addresses ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fog/ibm/requests/compute/list_addresses.rb', line 32 def list_addresses # Loop through addresses and update states and values if they aren't set self.data[:addresses].values.each do |address| address['state'] = 2 if address['state'] == 0 address['ip'] = Fog::IBM::Mock.ip_address if address['ip'].empty? address['mode'] = 0 unless address.key? 'mode' address['hostname'] = Fog::IBM::Mock.hostname unless address.key? 'hostname' address['type'] = 1 unless address.key? 'type' end response = Excon::Response.new response.status = 200 response.body = { 'addresses' => self.data[:addresses].values } response end |
#list_images ⇒ Object
45 46 47 48 49 50 |
# File 'lib/fog/ibm/requests/compute/list_images.rb', line 45 def list_images response = Excon::Response.new response.status = 200 response.body = {'images' => self.data[:images].values} response end |
#list_instances ⇒ Object
44 45 46 47 48 49 |
# File 'lib/fog/ibm/requests/compute/list_instances.rb', line 44 def list_instances response = Excon::Response.new response.status = 200 response.body = { 'instances' => self.data[:instances].values } response end |
#list_keys ⇒ Object
44 45 46 47 48 49 |
# File 'lib/fog/ibm/requests/compute/list_keys.rb', line 44 def list_keys response = Excon::Response.new response.status = 200 response.body = {'keys' => self.data[:keys].values} response end |
#list_locations ⇒ Object
24 25 26 27 28 29 |
# File 'lib/fog/ibm/requests/compute/list_locations.rb', line 24 def list_locations response = Excon::Response.new response.status = 200 response.body = { "locations" => self.data[:locations].values } response end |
#list_vlans ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/fog/ibm/requests/compute/list_vlans.rb', line 31 def list_vlans response = Excon::Response.new response.status = 200 response.body = {"vlan"=> [{"location"=>"101", "id"=>"75321", "name"=>"FOG-VLAN1"}]} response end |
#location_exists?(location_id) ⇒ Boolean
45 46 47 |
# File 'lib/fog/ibm/requests/compute/get_location.rb', line 45 def location_exists?(location_id) self.data[:locations].key? location_id end |
#modify_instance(instance_id, params = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/fog/ibm/requests/compute/modify_instance.rb', line 37 def modify_instance(instance_id, params={}) response = Excon::Response.new if instance_exists? instance_id if params['state'] == 'restart' self.data[:instances][instance_id]["status"] = "8" response.status = 200 response.body = { "success" => true } elsif params['type'] == 'attach' || params['type'] == 'detach' if Fog::Storage[:ibm].volume_exists?(params['volume_id']) # TODO: Update the instance in the data hash, assuming IBM ever gets this feature working properly. response.status = 415 else response.status = 404 end elsif params['name'] self.data[:instances][instance_id]["name"] = params['name'] response.status = 200 response.body = { "success" => true } elsif params['expirationTime'] self.data[:instances][instance_id]["expirationTime"] = params['expirationTime'] response.status = 200 response.body = { 'expirationTime' => params['expirationTime'] } end else response.status = 404 end response end |
#modify_key(key_name, params = {}) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/fog/ibm/requests/compute/modify_key.rb', line 25 def modify_key(key_name, params={}) response = Excon::Response.new if key_exists? key_name if params['public_key'] self.data[:keys][key_name]['keyMaterial'] = public_key self.data[:keys][key_name]['lastModifiedTime'] = Fog::IBM::Mock.launch_time end if params['default'] self.data[:keys].values.each do |key| key['default'] = false end self.data[:keys][key_name]['default'] = true end response.status = 200 response.body = {"success"=>true} else response.status = 404 end response end |
#reset_data ⇒ Object
104 105 106 107 |
# File 'lib/fog/ibm/compute.rb', line 104 def reset_data self.class.data.delete(@ibm_username) @data = self.class.data[@ibm_username] end |