1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/rackspace/mock_data.rb
2013-07-24 16:29:44 +02:00

172 lines
6 KiB
Ruby

module Fog
module Rackspace
module MockData
NOT_FOUND_ID = "NOT-FOUND"
def data
@@data ||= Hash.new do |hash, key|
hash[key] = begin
#Compute V2
flavor_id = Fog.credentials[:rackspace_flavor_id].to_s ||= Fog::Mock.random_numbers(1)
image_id = Fog.credentials[:rackspace_image_id] ||= Fog::Rackspace::MockData.uuid
image_name = Fog::Mock.random_letters(6)
network_id = Fog::Rackspace::MockData.uuid
user_id = Fog::Mock.random_numbers(6).to_s
flavor = {
"OS-FLV-EXT-DATA:ephemeral" => 4,
"disk" => 20,
"id" => flavor_id,
"links" => [
{
"href" => "https://dfw.servers.api.rackspacecloud.com/v2/010101/flavors/#{flavor_id}",
"rel" => "self"
},
{
"href" => "https://dfw.servers.api.rackspacecloud.com/010101/flavors/#{flavor_id}",
"rel" => "bookmark"
}
],
"name" => "512MB Standard Instance",
"ram" => 512,
"rxtx_factor" => 2.0,
"swap" => 512,
"vcpus" => 1,
}
image = {
"OS-DCF:diskConfig" => "AUTO",
"created" => "2012-02-28T19:38:57Z",
"id" => image_id,
"name" => "Ubuntu",
"links" => [
{
"href" => "https://dfw.servers.api.rackspacecloud.com/v2/010101/images/#{image_id}",
"rel" => "self"
},
{
"href" => "https://dfw.servers.api.rackspacecloud.com/010101/images/#{image_id}",
"rel" => "bookmark"
},
{
"href" => "https://dfw.servers.api.rackspacecloud.com/010101/images/#{image_id}",
"rel" => "alternate",
"type" => "application/vnd.openstack.image"
}
],
"metadata" => {
"arch" => "x86-64",
"auto_disk_config" => "True",
"com.rackspace__1__build_core" => "1",
"com.rackspace__1__build_managed" => "0",
"com.rackspace__1__build_rackconnect" => "0",
"com.rackspace__1__options" => "0",
"com.rackspace__1__visible_core" => "1",
"com.rackspace__1__visible_managed" => "0",
"com.rackspace__1__visible_rackconnect" => "0",
"image_type" => "base",
"org.openstack__1__architecture" => "x64",
"org.openstack__1__os_distro" => "org.ubuntu",
"org.openstack__1__os_version" => "11.10",
"os_distro" => "ubuntu",
"os_type" => "linux",
"os_version" => "11.10",
"rax_managed" => "false",
"rax_options" => "0"
},
"minDisk" => 10,
"minRam" => 256,
"name" => image_name,
"progress" => 100,
"status" => "ACTIVE",
"updated" => "2012-02-28T19:39:05Z"
}
network = {
'id' => network_id,
'label' => 'network label',
'cidr' => '192.168.0.0/24'
}
key_pair = {
'public_key' => "ssh-rsa ".concat(Fog::Mock.random_letters(372)).concat(" Generated by Nova\n"),
'private_key' => "-----BEGIN RSA PRIVATE KEY-----\n".concat(Fog::Mock.random_letters(1635)).concat("\n-----END RSA PRIVATE KEY-----\n"),
'user_id' => user_id,
'name' => Fog::Mock.random_letters(32),
'fingerprint' => "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
}
#Block Storage
volume_type1_id = Fog::Mock.random_numbers(3).to_s
volume_type2_id = Fog::Mock.random_numbers(3).to_s
volume_type1 = {
"id" => volume_type1_id,
"name" => "SATA",
"extra_specs" => {},
}
volume_type2 = {
"id" => volume_type2_id,
"name" => "SSD",
"extra_specs" => {},
}
mock_data = {
#Compute V2
:flavors => Hash.new { |h,k| h[k] = flavor unless k == NOT_FOUND_ID },
:images => Hash.new { |h,k| h[k] = image unless k == NOT_FOUND_ID },
:networks => Hash.new { |h,k| h[k] = network unless k == NOT_FOUND_ID },
:keys => [],
:keypair => key_pair,
:keypairs => [],
:servers => {},
#Block Storage
:volumes => {},
:snapshots => {},
:volume_attachments => [],
:volume_types => {volume_type1_id => volume_type1, volume_type2_id => volume_type2},
}
# seed with initial data
mock_data[:flavors][flavor_id] = flavor
mock_data[:images][image_id] = image
mock_data[:networks][network_id] = network
mock_data
end
end[@rackspace_api_key]
end
def self.uuid
[8,4,4,4,12].map{|i| Fog::Mock.random_hex(i)}.join("-")
end
def self.ipv4_address
4.times.map{ Fog::Mock.random_numbers(3) }.join(".")
end
def self.ipv6_address
8.times.map { Fog::Mock.random_hex(4) }.join(":")
end
def self.keep(hash, *keys)
{}.tap do |kept|
keys.each{|k| kept[k]= hash[k] if hash.key?(k)}
end
end
def self.slice(hash, *keys)
hash.dup.tap do |sliced|
keys.each{|k| sliced.delete(k)}
end
end
def self.zulu_time
Time.now.strftime("%Y-%m-%dT%H:%M:%SZ")
end
end
end
end