Sha256: 969bcf66bec67006e73d0ac314c5ebceb8af72ad6b6c09c48f4b26ebb994c069

Contents?: true

Size: 1.75 KB

Versions: 18

Compression:

Stored size: 1.75 KB

Contents

require_relative 'image'

module Overcloud
  module Flavor

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

    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

    def get_flavor_extra_specs(flavor_id)
      get_flavor(flavor_id).metadata
    end

    def create_flavor_extra_specs(flavor_id, extra_specs)
      get_flavor(flavor_id).create_metadata(extra_specs)
    end
        
    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
    
    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.metadata['cpu_arch'] == flavor_parameters[:extra_specs][:cpu_arch]
          return true
        end
      end
      false
    end

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
egon-1.1.0 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-1.0.0 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.8 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.7 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.6 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.5 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.4 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.3 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.2 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.1 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.4.0 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.6 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.5 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.4 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.3 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.2 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.1 lib/egon/overcloud/undercloud_handle/flavor.rb
egon-0.3.0 lib/egon/overcloud/undercloud_handle/flavor.rb