In Files

Parent

Files

Class/Module Index [+]

Quicksearch

Fog::Compute::OpenStack::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/openstack/compute.rb, line 60
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      :last_modified => {
        :images  => {},
        :servers => {}
      },
      :images  => {
        "1" => {
          'id'        => "1",
          'name'      => "img1",
          'progress'  => 100,
          'status'    => "ACTIVE",
          'updated'   => "",
          'minRam'    => 0,
          'minDisk'   => 0,
          'metadata'  => {},
          'links'     => []
        }
      },
      :servers => {}
    }
  end
end
new(options={}) click to toggle source
# File lib/fog/openstack/compute.rb, line 89
def initialize(options={})
  require 'multi_json'
  @openstack_username = options[:openstack_username]
end
reset() click to toggle source
# File lib/fog/openstack/compute.rb, line 85
def self.reset
  @data = nil
end

Public Instance Methods

change_password_server(server_id, admin_password) click to toggle source
# File lib/fog/openstack/requests/compute/change_password_server.rb, line 15
def change_password_server(server_id, admin_password)
  response = Excon::Response.new
  response.status = 202
  response
end
confirm_resized_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/confirm_resized_server.rb, line 15
def confirm_resized_server(server_id)
  response = Excon::Response.new
  response.status = 204
  response
end
create_image(server_id, name, metadata={}) click to toggle source
# File lib/fog/openstack/requests/compute/create_image.rb, line 20
def create_image(server_id, name, metadata={})
  response = Excon::Response.new
  response.status = 202

  img_id=Fog::Mock.random_numbers(6).to_s

  data = {
    'id'        => img_id,
    'server'     => {"id"=>"3", "links"=>[{"href"=>"http://nova1:8774/admin/servers/#{server_id}", "rel"=>"bookmark"}]},
    'links'     => [{"href"=>"http://nova1:8774/v1.1/admin/images/#{img_id}", "rel"=>"self"}, {"href"=>"http://nova1:8774/admin/images/#{img_id}", "rel"=>"bookmark"}],
    'metadata'  => metadata || {},
    'name'      => name || "server_#{rand(999)}",
    'progress'  => 0,
    'status'    => 'SAVING',
    'minDisk'   => 0,
    'minRam'    => 0,
    'updated'   => "",
    'created'   => ""
  }
  self.data[:last_modified][:images][data['id']] = Time.now
  self.data[:images][data['id']] = data
  response.body = { 'image' => data }
  response

end
create_server(name, image_ref, flavor_ref, options = {}) click to toggle source
# File lib/fog/openstack/requests/compute/create_server.rb, line 43
def create_server(name, image_ref, flavor_ref, options = {})
  response = Excon::Response.new
  response.status = 202

  data = {
    'addresses' => {},
    'flavor'  => {"id"=>"1", "links"=>[{"href"=>"http://nova1:8774/admin/flavors/1", "rel"=>"bookmark"}]},
    'id'        => Fog::Mock.random_numbers(6).to_s,
    'image'     => {"id"=>"3", "links"=>[{"href"=>"http://nova1:8774/admin/images/3", "rel"=>"bookmark"}]},
    'links'     => [{"href"=>"http://nova1:8774/v1.1/admin/servers/5", "rel"=>"self"}, {"href"=>"http://nova1:8774/admin/servers/5", "rel"=>"bookmark"}],
    'hostId'    => "123456789ABCDEF01234567890ABCDEF",
    'metadata'  => options['metadata'] || {},
    'name'      => options['name'] || "server_#{rand(999)}",
    'accessIPv4'  => options['accessIPv4'] || "",
    'accessIPv6'  => options['accessIPv6'] || "",
    'progress'  => 0,
    'status'    => 'BUILD'
  }
  self.data[:last_modified][:servers][data['id']] = Time.now
  self.data[:servers][data['id']] = data
  response.body = { 'server' => data.merge({'adminPass' => 'password'}) }
  response
end
data() click to toggle source
# File lib/fog/openstack/compute.rb, line 94
def data
  self.class.data[@openstack_username]
end
delete_image(image_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_image.rb, line 18
def delete_image(image_id)
  response = Excon::Response.new
  if image = list_images_detail.body['images'].detect {|_| _['id'] == image_id}
    if image['status'] == 'SAVING'
      response.status = 409
      raise(Excon::Errors.status_error({:expects => 202}, response))
    else
      self.data[:last_modified][:images].delete(image_id)
      self.data[:images].delete(image_id)
      response.status = 202
    end
    response
  else
    response.status = 400
    raise(Excon::Errors.status_error({:expects => 202}, response))
  end

end
delete_meta(collection_name, parent_id, key) click to toggle source
# File lib/fog/openstack/requests/compute/delete_meta.rb, line 18
def delete_meta(collection_name, parent_id, key)
  response = Excon::Response.new
  response.status = 204
  response
end
delete_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/delete_server.rb, line 18
def delete_server(server_id)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    if server['status'] == 'BUILD'
      response.status = 409
      raise(Excon::Errors.status_error({:expects => 204}, response))
    else
      self.data[:last_modified][:servers].delete(server_id)
      self.data[:servers].delete(server_id)
      response.status = 204
    end
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end
get_flavor_details(flavor_ref) click to toggle source
# File lib/fog/openstack/requests/compute/get_flavor_details.rb, line 18
def get_flavor_details(flavor_ref)
  response = Excon::Response.new
  flavor = {
    '1' => { 'id' => '1', 'name' => '256 server', 'ram' => 256, 'disk' => 10, 'links' => [] },
    '2' => { 'id' => '2', 'name' => '512 server', 'ram' => 512, 'disk' => 20, 'links' => [] },
    '3' => { 'id' => '3', 'name' => '1GB server', 'ram' => 1024, 'disk' => 40, 'links' => [] },
    '4' => { 'id' => '4', 'name' => '2GB server', 'ram' => 2048, 'disk' => 80, 'links' => [] },
    '5' => { 'id' => '5', 'name' => '4GB server', 'ram' => 4096, 'disk' => 160, 'links' => [] },
    '6' => { 'id' => '6', 'name' => '8GB server', 'ram' => 8192, 'disk' => 320, 'links' => [] },
    '7' => { 'id' => '7', 'name' => '15.5GB server', 'ram' => 15872, 'disk' => 620, 'links' => [] }
  }[flavor_ref]
  if flavor
    response.status = 200
    response.body = {
      'flavor' => flavor
    }
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end
get_image_details(image_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_image_details.rb, line 18
def get_image_details(image_id)
  response = Excon::Response.new
  if image = list_images_detail.body['images'].detect {|_| _['id'] == image_id}
    response.status = [200, 203][rand(1)]
    response.body = { 'image' => image }
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end
get_meta(collection_name, parent_id, key) click to toggle source
# File lib/fog/openstack/requests/compute/get_meta.rb, line 18
def get_meta(collection_name, parent_id, key)
  response = Excon::Response.new
  response.status = 200
  response.body = { 'meta' => {} }
  response
end
get_server_details(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/get_server_details.rb, line 18
def get_server_details(server_id)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    response.status = [200, 203][rand(1)]
    response.body = { 'server' => server }
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end
list_addresses(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_addresses.rb, line 18
def list_addresses(server_id)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    response.status = [200, 203][rand(1)]
    response.body = { 'addresses' => server['addresses'] }
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end
list_flavors() click to toggle source
# File lib/fog/openstack/requests/compute/list_flavors.rb, line 18
def list_flavors
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'flavors' => [
      { 'name' => '256 server', 'id' => '1', 'links' => [] },
      { 'name' => '512 server', 'id' => '2', 'links' => [] },
      { 'name' => '1GB server', 'id' => '3', 'links' => [] },
      { 'name' => '2GB server', 'id' => '4', 'links' => [] },
      { 'name' => '4GB server', 'id' => '5', 'links' => [] },
      { 'name' => '8GB server', 'id' => '6', 'links' => [] },
      { 'name' => '15.5GB server', 'id' => '7', 'links' => [] }
    ]
  }
  response
end
list_flavors_detail() click to toggle source
# File lib/fog/openstack/requests/compute/list_flavors_detail.rb, line 18
def list_flavors_detail
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'flavors' => [
      { 'name' => '256 server', 'id' => '1', 'ram' => 256, 'disk' => 10, 'links' => [] },
      { 'name' => '512 server', 'id' => '2', 'ram' => 512, 'disk' => 20, 'links' => [] },
      { 'name' => '1GB server', 'id' => '3', 'ram' => 1024, 'disk' => 40, 'links' => [] },
      { 'name' => '2GB server', 'id' => '4', 'ram' => 2048, 'disk' => 80, 'links' => [] },
      { 'name' => '4GB server', 'id' => '5', 'ram' => 4096, 'disk' => 160, 'links' => [] },
      { 'name' => '8GB server', 'id' => '6', 'ram' => 8192, 'disk' => 320, 'links' => [] },
      { 'name' => '15.5GB server', 'id' => '7', 'ram' => 15872, 'disk' => 620, 'links' => [] }
    ]
  }
  response
end
list_images() click to toggle source
# File lib/fog/openstack/requests/compute/list_images.rb, line 18
def list_images
  response = Excon::Response.new
  data = list_images_detail.body['images']
  images = []
  for image in data
    images << image.reject { |key, value| !['id', 'name', 'links'].include?(key) }
  end
  response.status = [200, 203][rand(1)]
  response.body = { 'images' => images }
  response
end
list_images_detail() click to toggle source
# File lib/fog/openstack/requests/compute/list_images_detail.rb, line 18
def list_images_detail
  response = Excon::Response.new

  images = self.data[:images].values
  for image in images
    case image['status']
    when 'SAVING'
      if Time.now - self.data[:last_modified][:images][image['id']] >= Fog::Mock.delay
        image['status'] = 'ACTIVE'
      end
    end
  end

  response.status = [200, 203][rand(1)]
  response.body = { 'images' => images.map {|image| image.reject {|key, value| !['id', 'name', 'links', 'minRam', 'minDisk', 'metadata', 'status', 'updated'].include?(key)}} }
  response
end
list_metadata(collection_name, parent_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_metadata.rb, line 18
def list_metadata(collection_name, parent_id)
  response = Excon::Response.new
  response.status = 200
  response.body = {}
  response
end
list_private_addresses(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_private_addresses.rb, line 18
def list_private_addresses(server_id)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    response.status = [200, 203][rand(1)]
    response.body = { 'private' => server['addresses']['private'] }
    response
  else
    raise Fog::Compute::Rackspace::NotFound
  end
end
list_public_addresses(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/list_public_addresses.rb, line 18
def list_public_addresses(server_id)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    response.status = [200, 203][rand(1)]
    response.body = { 'public' => server['addresses']['public'] }
    response
  else
    raise Fog::Compute::Rackspace::NotFound
  end
end
list_servers() click to toggle source
# File lib/fog/openstack/requests/compute/list_servers.rb, line 18
def list_servers
  response = Excon::Response.new
  data = list_servers_detail.body['servers']
  servers = []
  for server in data
    servers << server.reject { |key, value| !['id', 'name', 'links'].include?(key) }
  end
  response.status = [200, 203][rand(1)]
  response.body = { 'servers' => servers }
  response
end
list_servers_detail() click to toggle source
# File lib/fog/openstack/requests/compute/list_servers_detail.rb, line 18
def list_servers_detail
  response = Excon::Response.new

  servers = self.data[:servers].values
  for server in servers
    case server['status']
    when 'BUILD'
      if Time.now - self.data[:last_modified][:servers][server['id']] > Fog::Mock.delay * 2
        server['status'] = 'ACTIVE'
      end
    end
  end

  response.status = [200, 203][rand(1)]
  response.body = { 'servers' => servers }
  response
end
reboot_server(server_id, type = 'SOFT') click to toggle source
# File lib/fog/openstack/requests/compute/reboot_server.rb, line 15
def reboot_server(server_id, type = 'SOFT')
  response = Excon::Response.new
  response.status = 202
  response
end
rebuild_server(server_id, image_ref, name, admin_pass=nil, metadata=nil, personality=nil) click to toggle source
# File lib/fog/openstack/requests/compute/rebuild_server.rb, line 22
def rebuild_server(server_id, image_ref, name, admin_pass=nil, metadata=nil, personality=nil)
  response = get_server_details(server_id)
  response.body['server']['status'] = "REBUILD"
  response
end
reset_data() click to toggle source
# File lib/fog/openstack/compute.rb, line 98
def reset_data
  self.class.data.delete(@openstack_username)
end
resize_server(server_id, flavor_ref) click to toggle source
# File lib/fog/openstack/requests/compute/resize_server.rb, line 15
def resize_server(server_id, flavor_ref)
  response = Excon::Response.new
  response.status = 202
  response
end
revert_resized_server(server_id) click to toggle source
# File lib/fog/openstack/requests/compute/revert_resized_server.rb, line 15
def revert_resized_server(server_id)
  response = Excon::Response.new
  response.status = 202

  self.data[:servers][server_id]['flavorId'] = self.data[:servers][server_id]['old_flavorId']
  self.data[:servers][server_id].delete('old_flavorId')
  self.data[:last_modified][:servers][server_id] = Time.now
  self.data[:servers][server_id]['status'] = 'ACTIVE'

  response
end
set_metadata(collection_name, parent_id, metadata = {}) click to toggle source
# File lib/fog/openstack/requests/compute/set_metadata.rb, line 20
def set_metadata(collection_name, parent_id, metadata = {})

  if collection_name == "images" then
    if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  if collection_name == "servers" then
    if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  response = Excon::Response.new
  response.body = { "metadata" => metadata }
  response.status = 200
  response

end
update_meta(collection_name, parent_id, key, value) click to toggle source
# File lib/fog/openstack/requests/compute/update_meta.rb, line 20
def update_meta(collection_name, parent_id, key, value)

  if collection_name == "images" then
    if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  if collection_name == "servers" then
    if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  response = Excon::Response.new
  response.body = { "meta" => { key => value } }
  response.status = 200
  response

end
update_metadata(collection_name, parent_id, metadata = {}) click to toggle source
# File lib/fog/openstack/requests/compute/update_metadata.rb, line 20
def update_metadata(collection_name, parent_id, metadata = {})

  if collection_name == "images" then
    if not list_images_detail.body['images'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  if collection_name == "servers" then
    if not list_servers_detail.body['servers'].detect {|_| _['id'] == parent_id}
      raise Fog::Compute::OpenStack::NotFound
    end 
  end

  #FIXME join w/ existing metadata here
  response = Excon::Response.new
  response.body = { "metadata" => metadata }
  response.status = 200
  response

end
update_server(server_id, options) click to toggle source
# File lib/fog/openstack/requests/compute/update_server.rb, line 19
def update_server(server_id, options)
  response = Excon::Response.new
  if server = list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
    if options['name']
      server['name'] = options['name']
    end
    response.status = 200
    response
  else
    raise Fog::Compute::OpenStack::NotFound
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.