Class: Ironfan::Dsl::OpenStack
- Inherits:
-
Cloud
show all
- Defined in:
- lib/ironfan/headers.rb,
lib/ironfan/dsl/openstack.rb
Defined Under Namespace
Classes: SecurityGroup
Instance Attribute Summary
#underlay
Instance Method Summary
collapse
Methods inherited from Cloud
#defaults, receive
#_skip_fields, #skip_fields, #to_manifest
#deep_resolve, #merge_resolve, #merge_values, #read_resolved_attribute, #read_set_attribute, #read_set_or_underlay_attribute, #read_underlay_attribute, #resolve, #resolve!, #resolve_value
#_cookbook_reqs, #children, #cookbook_req, #cookbook_reqs, #join_req
Methods inherited from Builder
ui, #ui
Instance Method Details
#default_region ⇒ Object
59
60
61
|
# File 'lib/ironfan/dsl/openstack.rb', line 59
def default_region
default_availability_zone ? default_availability_zone.gsub(/^(\w+-\w+-\d)[a-z]/, '\1') : nil
end
|
#domain ⇒ Object
41
|
# File 'lib/ironfan/dsl/openstack.rb', line 41
def domain; vpc.nil? ? 'standard' : 'vpc'; end
|
#flavor_info ⇒ Object
74
75
76
77
78
79
80
81
|
# File 'lib/ironfan/dsl/openstack.rb', line 74
def flavor_info
if not Chef::Config[:openstack_flavor_info].has_key?(flavor)
ui.warn("Unknown machine image flavor '#{flavor}'")
list_flavors
return nil
end
Chef::Config[:openstack_flavor_info][flavor]
end
|
#image_id ⇒ Object
51
52
53
|
# File 'lib/ironfan/dsl/openstack.rb', line 51
def image_id
result = read_attribute(:image_id) || image_info[:image_id]
end
|
#image_info ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/ironfan/dsl/openstack.rb', line 43
def image_info
bit_str = "#{self.bits.to_i}-bit" keys = [region, bit_str, backing, image_name]
info = Chef::Config[:openstack_image_info][ keys ]
ui.warn("Can't find image for #{[region, bit_str, backing, image_name].inspect}") if info.blank?
return info || {}
end
|
#implied_volumes ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/ironfan/dsl/openstack.rb', line 83
def implied_volumes
result = []
if backing == 'ebs'
result << Ironfan::Dsl::Volume.new(:name => 'root') do
device '/dev/sda1'
fstype 'ext4'
keep false
mount_point '/'
end
end
return result unless (mount_ephemerals and (flavor_info[:ephemeral_volumes] > 0))
layout = { 0 => ['/dev/sdb','/mnt'],
1 => ['/dev/sdc','/mnt2'],
2 => ['/dev/sdd','/mnt3'],
3 => ['/dev/sde','/mnt4'] }
( 0 .. (flavor_info[:ephemeral_volumes]-1) ).each do |idx|
dev, mnt = layout[idx]
ephemeral = Ironfan::Dsl::Volume.new(:name => "ephemeral#{idx}") do
attachable 'ephemeral'
fstype 'ext3'
device dev
mount_point mnt
mount_options 'defaults,noatime'
tags({:bulk => true, :local => true, :fallback => true})
end
ephemeral_attrs = mount_ephemerals.clone
if ephemeral_attrs.has_key?(:disks)
disk_attrs = mount_ephemerals[:disks][idx] || { }
ephemeral_attrs.delete(:disks)
ephemeral_attrs.merge!(disk_attrs)
end
ephemeral.receive! ephemeral_attrs
result << ephemeral
end
result
end
|
#receive_provider(obj) ⇒ Object
121
122
123
124
125
126
127
|
# File 'lib/ironfan/dsl/openstack.rb', line 121
def receive_provider(obj)
if obj.is_a?(String)
write_attribute :provider, Gorillib::Inflector.constantize(Gorillib::Inflector.camelize(obj.gsub(/\./, '/')))
else
super(obj)
end
end
|
#ssh_key_name(computer) ⇒ Object
55
56
57
|
# File 'lib/ironfan/dsl/openstack.rb', line 55
def ssh_key_name(computer)
keypair ? keypair.to_s : computer.server.keypair_name
end
|
#to_display(style, values = {}) ⇒ Object
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/ironfan/dsl/openstack.rb', line 63
def to_display(style,values={})
return values if style == :minimal
values["Flavor"] = flavor
values["AZ"] = default_availability_zone
return values if style == :default
values["Public IP"] = elastic_ip if elastic_ip
values
end
|