Module: Overcloud::Flavor

Included in:
UndercloudHandle
Defined in:
lib/egon/overcloud/undercloud_handle/flavor.rb

Instance Method Summary collapse

Instance Method Details

#create_flavor(flavor_parameters) ⇒ Object



14
15
16
17
18
19
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 14

def create_flavor(flavor_parameters)
  flavor = service('Compute').flavors.create(flavor_parameters)
  if flavor_parameters.key?(:extra_specs)
    create_flavor_extra_specs(flavor.id, flavor_parameters[:extra_specs])
  end
end

#create_flavor_extra_specs(flavor_id, extra_specs) ⇒ Object



25
26
27
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 25

def create_flavor_extra_specs(flavor_id, extra_specs)
  get_flavor(flavor_id).(extra_specs)
end

#create_flavor_from_node(node) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 29

def create_flavor_from_node(node)
  cpus = node.properties['cpus']
  memory_mb = node.properties['memory_mb']
  local_gb = node.properties['local_gb']
  cpu_arch = node.properties['cpu_arch']
  
  flavor_parameters = {
    :name => 'Flavor-' + cpus + '-' + cpu_arch + '-' + memory_mb + '-' + local_gb,
    :ram => memory_mb,
    :vcpus => cpus,
    :disk => local_gb,
    :is_public => true,
    :extra_specs => {
      :cpu_arch => cpu_arch,
      :'capabilities:boot_option' => 'local',
    }
  }
  
  if !flavor_exists?(flavor_parameters)
    create_flavor(flavor_parameters)
  end
end

#flavor_exists?(flavor_parameters) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
56
57
58
59
60
61
62
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 52

def flavor_exists?(flavor_parameters)
  for flavor in list_flavors
    if flavor.ram == flavor_parameters[:ram].to_i &&
        flavor.vcpus == flavor_parameters[:vcpus].to_i &&
        flavor.disk == flavor_parameters[:disk].to_i &&
        flavor.['cpu_arch'] == flavor_parameters[:extra_specs][:cpu_arch]
      return true
    end
  end
  false
end

#get_flavor(flavor_id) ⇒ Object



10
11
12
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 10

def get_flavor(flavor_id)
  service('Compute').flavors.get(flavor_id)
end

#get_flavor_extra_specs(flavor_id) ⇒ Object



21
22
23
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 21

def get_flavor_extra_specs(flavor_id)
  get_flavor(flavor_id).
end

#list_flavorsObject



6
7
8
# File 'lib/egon/overcloud/undercloud_handle/flavor.rb', line 6

def list_flavors
  service('Compute').flavors.all
end