Class: Fog::Image::OpenStack::V2::Mock

Inherits:
Object
  • Object
show all
Defined in:
lib/fog/openstack/requests/image_v2/get_image.rb,
lib/fog/openstack/image_v2.rb,
lib/fog/openstack/requests/image_v2/set_tenant.rb,
lib/fog/openstack/requests/image_v2/list_images.rb,
lib/fog/openstack/requests/image_v2/create_image.rb,
lib/fog/openstack/requests/image_v2/delete_image.rb,
lib/fog/openstack/requests/image_v2/update_image.rb,
lib/fog/openstack/requests/image_v2/upload_image.rb,
lib/fog/openstack/requests/image_v2/download_image.rb,
lib/fog/openstack/requests/image_v2/get_image_by_id.rb,
lib/fog/openstack/requests/image_v2/add_tag_to_image.rb,
lib/fog/openstack/requests/image_v2/deactivate_image.rb,
lib/fog/openstack/requests/image_v2/reactivate_image.rb,
lib/fog/openstack/requests/image_v2/get_image_members.rb,
lib/fog/openstack/requests/image_v2/get_shared_images.rb,
lib/fog/openstack/requests/image_v2/get_member_details.rb,
lib/fog/openstack/requests/image_v2/add_member_to_image.rb,
lib/fog/openstack/requests/image_v2/update_image_member.rb,
lib/fog/openstack/requests/image_v2/remove_tag_from_image.rb,
lib/fog/openstack/requests/image_v2/remove_member_from_image.rb

Overview

class Real

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Mock

Returns a new instance of Mock.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/fog/openstack/image_v2.rb', line 62

def initialize(options={})
  @openstack_username = options[:openstack_username]
  @openstack_tenant   = options[:openstack_tenant]
  @openstack_auth_uri = URI.parse(options[:openstack_auth_url])

  @auth_token = Fog::Mock.random_base64(64)
  @auth_token_expiration = (Time.now.utc + 86400).iso8601

  management_url = URI.parse(options[:openstack_auth_url])
  management_url.port = 9292
  management_url.path = '/v2'
  @openstack_management_url = management_url.to_s

  @data ||= { :users => {} }
  unless @data[:users].find {|u| u['name'] == options[:openstack_username]}
    id = Fog::Mock.random_numbers(6).to_s
    @data[:users][id] = {
      'id'       => id,
      'name'     => options[:openstack_username],
      'email'    => "#{options[:openstack_username]}@mock.com",
      'tenantId' => Fog::Mock.random_numbers(6).to_s,
      'enabled'  => true
    }
  end
end

Class Method Details

.dataObject



50
51
52
53
54
55
56
# File 'lib/fog/openstack/image_v2.rb', line 50

def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :images => {}
    }
  end
end

.resetObject



58
59
60
# File 'lib/fog/openstack/image_v2.rb', line 58

def self.reset
  @data = nil
end

Instance Method Details

#add_member_to_image(image_id, tenant_id) ⇒ Object



17
18
19
20
21
# File 'lib/fog/openstack/requests/image_v2/add_member_to_image.rb', line 17

def add_member_to_image(image_id, tenant_id)
  response = Excon::Response.new
  response.status = 200
  response
end

#add_tag_to_image(image_id, tag) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/add_tag_to_image.rb', line 16

def add_tag_to_image(image_id, tag)
  response = Excon::Response.new
  response.status = 204
  response
end

#create_image(attributes) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fog/openstack/requests/image_v2/create_image.rb', line 25

def create_image(attributes)
  response = Excon::Response.new
  response.status = 201

  image_id = Fog::Mock.random_hex(32)
  image = self.data[:images][image_id] = {
      'tags' => attributes[:tags] || [],
      'name' => attributes[:name],
      'size' => nil,
      'min_disk' => attributes[:min_disk] || 0,
      'disk_format' => attributes[:disk_format] || 'raw',
      'created_at' => Time.now.strftime('%FT%T.%6N'),
      'container_format' => attributes[:container_format] || 'bare',
      'deleted_at' => nil,
      'updated_at' => Time.now.strftime('%FT%T.%6N'),
      'checksum' => nil,
      'id' => image_id,
      'visibility' => attributes[:visibility] || 'public',
      'status' => 'queued',
      'min_ram' => attributes[:min_ram] || 0,
      'owner' => attributes[:owner] || Fog::Mock.random_hex(32)
  }
  response.body = image
  response
end

#credentialsObject



96
97
98
99
100
101
102
# File 'lib/fog/openstack/image_v2.rb', line 96

def credentials
  { :provider                 => 'openstack',
    :openstack_auth_url       => @openstack_auth_uri.to_s,
    :openstack_auth_token     => @auth_token,
    :openstack_region         => @openstack_region,
    :openstack_management_url => @openstack_management_url }
end

#dataObject



88
89
90
# File 'lib/fog/openstack/image_v2.rb', line 88

def data
  self.class.data[@openstack_username]
end

#deactivate_image(image_id) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/deactivate_image.rb', line 16

def deactivate_image(image_id)
  response = Excon::Response.new
  response.status = 204
  response
end

#delete_image(image_id) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/delete_image.rb', line 16

def delete_image(image_id)
  response = Excon::Response.new
  response.status = 204
  response
end

#download_image(image_id, content_range = nil) ⇒ Object



19
20
21
22
23
24
# File 'lib/fog/openstack/requests/image_v2/download_image.rb', line 19

def download_image(image_id, content_range=nil)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = ""
  response
end

#get_image(image_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/fog/openstack/requests/image_v2/get_image.rb', line 16

def get_image(image_id)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.headers= {"X-Image-Meta-Is_public" => "True",
                     "X-Image-Meta-Min_disk" => "0",
                     "X-Image-Meta-Property-Ramdisk_id" => "b45aa128-cd36-4ad9-a026-1a1c2bfd8fdc",
                     "X-Image-Meta-Disk_format" => "ami",
                     "X-Image-Meta-Created_at" => "2012-02-21T07:32:26",
                     "X-Image-Meta-Container_format" => "ami",
                     "Etag" => "2f81976cae15c16ef0010c51e3a6c163",
                     "Location" => "http://192.168.27.100:9292/v1/images/0e09fbd6-43c5-448a-83e9-0d3d05f9747e",
                     "X-Image-Meta-Protected" => "False",
                     "Date" => "Fri, 24 Feb 2012 02:14:25 GMT",
                     "X-Image-Meta-Name" => "cirros-0.3.0-x86_64-blank",
                     "X-Image-Meta-Min_ram" => "0", "Content-Type" => "text/html; charset=UTF-8",
                     "X-Image-Meta-Updated_at" => "2012-02-21T07:32:29",
                     "X-Image-Meta-Property-Kernel_id" => "cd28951e-e1c2-4bc5-95d3-f0495abbcdc5",
                     "X-Image-Meta-Size" => "25165824",
                     "X-Image-Meta-Checksum" => "2f81976cae15c16ef0010c51e3a6c163",
                     "X-Image-Meta-Deleted" => "False",
                     "Content-Length" => "0",
                     "X-Image-Meta-Owner" => "ff528b20431645ebb5fa4b0a71ca002f",
                     "X-Image-Meta-Status" => "active",
                     "X-Image-Meta-Id" => "0e09fbd6-43c5-448a-83e9-0d3d05f9747e"}
  response.body = ""
  response
end

#get_image_by_id(image_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fog/openstack/requests/image_v2/get_image_by_id.rb', line 16

def get_image_by_id(image_id)
  response = Excon::Response.new
  response.status = [200][rand(1)]
  response.body = {
      "images" => [{
                       "name" => "mock-image-name",
                       "size" => 25165824,
                       "disk_format" => "ami",
                       "container_format" => "ami",
                       "id" => "0e09fbd6-43c5-448a-83e9-0d3d05f9747e",
                       "checksum" => "2f81976cae15c16ef0010c51e3a6c163"}]
  }
  response
end

#get_image_members(image_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/openstack/requests/image_v2/get_image_members.rb', line 16

def get_image_members(image_id)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
      "members" => [
          {"member_id" => "ff528b20431645ebb5fa4b0a71ca002f",
           "can_share" => false}
      ]
  }
  response
end

#get_member_details(image_id, member_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fog/openstack/requests/image_v2/get_member_details.rb', line 16

def get_member_details(image_id, member_id)
  response = Excon::Response.new
  response.status = 200
  response.body = {
      :status=> "pending",
      :created_at=> "2013-11-26T07:21:21Z",
      :updated_at=> "2013-11-26T07:21:21Z",
      :image_id=> "0ae74cc5-5147-4239-9ce2-b0c580f7067e",
      :member_id=> "8989447062e04a818baf9e073fd04fa7",
      :schema=> "/v2/schemas/member"
  }
  response
end

#get_shared_images(tenant_id) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fog/openstack/requests/image_v2/get_shared_images.rb', line 16

def get_shared_images(tenant_id)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
      "shared_images" => [
          {"image_id" => "ff528b20431645ebb5fa4b0a71ca002f",
           "can_share" => false}
      ]
  }
  response
end

#list_images(options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fog/openstack/requests/image_v2/list_images.rb', line 17

def list_images(options = {})
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response.body = {
      "images" => [{
                       "name" => Fog::Mock.random_letters(10),
                       "size" => Fog::Mock.random_numbers(8).to_i,
                       "disk_format" => "iso",
                       "container_format" => "bare",
                       "id" => Fog::Mock.random_hex(36),
                       "checksum" => Fog::Mock.random_hex(32)}]
  }
  response
end

#reactivate_image(image_id) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/reactivate_image.rb', line 16

def reactivate_image(image_id)
  response = Excon::Response.new
  response.status = 204
  response
end

#remove_member_from_image(image_id, member_id) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/remove_member_from_image.rb', line 16

def remove_member_from_image(image_id, member_id)
  response = Excon::Response.new
  response.status = [200, 204][rand(1)]
  response
end

#remove_tag_from_image(image_id, tag) ⇒ Object



16
17
18
19
20
# File 'lib/fog/openstack/requests/image_v2/remove_tag_from_image.rb', line 16

def remove_tag_from_image(image_id, tag)
  response = Excon::Response.new
  response.status = 204
  response
end

#reset_dataObject



92
93
94
# File 'lib/fog/openstack/image_v2.rb', line 92

def reset_data
  self.class.data.delete(@openstack_username)
end

#set_tenant(tenant) ⇒ Object



14
15
16
# File 'lib/fog/openstack/requests/image_v2/set_tenant.rb', line 14

def set_tenant(tenant)
  true
end

#update_image(attributes) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fog/openstack/requests/image_v2/update_image.rb', line 18

def update_image(attributes)
  response = Excon::Response.new
  response.status = 200
  image = self.images.last
  response.body = {
      'image' => {
          'name' => attributes[:name] || image.name,
          'size' => image.size,
          'min_disk' => (attributes[:min_disk] || image.min_disk).to_i,
          'disk_format' => attributes[:disk_format] || image.disk_format,
          'created_at' => image.created_at,
          'container_format' => attributes[:container_format] || image.container_format,
          'deleted_at' => nil,
          'updated_at' => Time.now.to_s,
          'checksum' => image.checksum,
          'id' => attributes[:id],
          'deleted' => false,
          'protected' => false,
          'is_public' => attributes[:is_public] || image.is_public,
          'status' => image.status,
          'min_ram' => (attributes[:min_ram] || image.min_ram).to_i,
          'owner' => attributes[:owner] || image.owner,
          'properties' => attributes[:properties] || image.properties
      }
  }
  response
end

#update_image_members(image_id, member) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/fog/openstack/requests/image_v2/update_image_member.rb', line 17

def update_image_members(image_id, member)
  response = Excon::Response.new
  response.status = 204
  response.body = {
      :status=> "accepted",
      :created_at=> "2013-11-26T07:21:21Z",
      :updated_at=> "2013-11-26T07:21:21Z",
      :image_id=> image_id,
      :member_id=> member['member_id'],
      :schema=> "/v2/schemas/member"
  }
  response
end

#upload_image(image_id, body) ⇒ Object



22
23
24
25
# File 'lib/fog/openstack/requests/image_v2/upload_image.rb', line 22

def upload_image(image_id, body)
  response = Excon::Response.new
  response.status = 204
end