Sha256: c12218aebf9c8e930a6e628a6b77283672fad4e9e169e6cffe8e994d8e051e1f

Contents?: true

Size: 819 Bytes

Versions: 2

Compression:

Stored size: 819 Bytes

Contents

# -*- coding: utf-8 -*-

module Dcmgr
  module Scheduler
    module HostNode

      # Find host node which has the largest available capacity.
      class LeastUsage < HostNodeScheduler
        include Dcmgr::Logger

        def schedule(instance)
          ds = Models::HostNode.online_nodes.filter(:arch=>instance.spec.arch,
                                                    :hypervisor=>instance.spec.hypervisor)

          host_node = ds.all.find_all { |hn|
            hn.available_cpu_cores >= instance.cpu_cores && \
              hn.available_memory_size >= instance.memory_size
          }.sort_by { |hn|
            hn.available_memory_size
          }.reverse.first

          raise HostNodeSchedulingError if host_node.nil?
          instance.host_node = host_node
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
wakame-vdc-agents-11.12.0 lib/dcmgr/scheduler/host_node/least_usage.rb
wakame-vdc-dcmgr-11.12.0 lib/dcmgr/scheduler/host_node/least_usage.rb