diff --git a/resources/attributes/default.rb b/resources/attributes/default.rb index bbf3870..c94d595 100644 --- a/resources/attributes/default.rb +++ b/resources/attributes/default.rb @@ -1,3 +1,4 @@ +# require 'set' TODO: refactor to this #Default attributes #general @@ -42,6 +43,9 @@ default["redborder"]["memory_services"]["n2klocd"] = {"count" => 10, "memory" => 0 } default["redborder"]["memory_services"]["k2http"] = {"count" => 10, "memory" => 0 } +# exclude mem services, setting memory to 0 for each. +default['redborder']['excluded_memory_services'] = ['chef-client'] + default["redborder"]["services"] = {} default["redborder"]["services"]["chef-client"] = true default["redborder"]["services"]["kafka"] = true diff --git a/resources/libraries/memory_services.rb b/resources/libraries/memory_services.rb index a1d0ec2..df3be73 100644 --- a/resources/libraries/memory_services.rb +++ b/resources/libraries/memory_services.rb @@ -9,7 +9,9 @@ def memory_services(sysmem_total, excluded_services=[]) node["redborder"]["memory_services"].each do |name,mem_s| if node["redborder"]["services"][name] and !excluded_services.include?(name) - memory_services_size = memory_services_size + mem_s["count"] + if !node["redborder"]["excluded_memory_services"].include?(name) + memory_services_size = memory_services_size + mem_s["count"] + end end memory_services_size_total = memory_services_size_total + mem_s["count"] end @@ -24,18 +26,19 @@ def memory_services(sysmem_total, excluded_services=[]) node["redborder"]["memory_services"].each do |name,mem_s| if node["redborder"]["services"][name] and !excluded_services.include?(name) - - # service count memory assigned * system memory / assigned services memory size - memory_serv[name] = (mem_s["count"] * sysmem_total / memory_services_size).round - #if the service has a limit of memory, we have to recalculate all using recursivity - if !mem_s["max_limit"].nil? and memory_serv[name] > mem_s["max_limit"] - memlimit_found = true - excluded_services << name - #assigning the limit of memory for this service - node.default["redborder"]["memory_services"][name]["memory"] = mem_s["max_limit"] - #now we have to take off the memory excluded from the total to recalculate memory wihout excluded services by limit - sysmem_total_limitsless = sysmem_total - mem_s["max_limit"] - end + if !node["redborder"]["excluded_memory_services"].include?(name) + # service count memory assigned * system memory / assigned services memory size + memory_serv[name] = (mem_s["count"] * sysmem_total / memory_services_size).round + #if the service has a limit of memory, we have to recalculate all using recursivity + if !mem_s["max_limit"].nil? and memory_serv[name] > mem_s["max_limit"] + memlimit_found = true + excluded_services << name + #assigning the limit of memory for this service + node.default["redborder"]["memory_services"][name]["memory"] = mem_s["max_limit"] + #now we have to take off the memory excluded from the total to recalculate memory wihout excluded services by limit + sysmem_total_limitsless = sysmem_total - mem_s["max_limit"] + end + end end end @@ -50,4 +53,3 @@ def memory_services(sysmem_total, excluded_services=[]) end end end - \ No newline at end of file diff --git a/resources/recipes/prepare_system.rb b/resources/recipes/prepare_system.rb index 1bfa0ab..43358c6 100644 --- a/resources/recipes/prepare_system.rb +++ b/resources/recipes/prepare_system.rb @@ -70,12 +70,3 @@ sysmem_total = (node["memory"]["total"].to_i * 0.90).to_i #node attributes related with memory are changed inside the function to have simplicity using recursivity memory_services(sysmem_total) - - - - - - - - -