ceph_chef_pool_create

in libraries/ceph_chef_helper.rb [56:132]


def ceph_chef_pool_create(pool)
  if !node['ceph']['pools'][pool]['federated_names'].empty? && node['ceph']['pools'][pool]['federated_names']
    node_loop = node['ceph']['pools'][pool]['federated_names']
    num_of_pool_groups = node['ceph']['pools'][pool]['federated_zone_instances'].size
    
    

    node_loop.each_with_index do |name, index|
      profile_val = nil
      options_val = nil

      pool_val =  node['ceph']['pools'][pool]['federated']['pools'][index]
      type_val = pool_val['type']
      pg_num_val = get_pool_pg_count(pool, index, type_val, num_of_pool_groups, true)
      profile_val = pool_val['profile'] if type_val == 'erasure'
      crush_ruleset_name = pool_val['crush_ruleset_name']

        if node['ceph']['pools']['version'] != 2
          ceph_chef_pool name do
            action :create
            pg_num pg_num_val
            pgp_num pg_num_val
            type type_val
            crush_ruleset pool_val['crush_ruleset'] if node['ceph']['osd']['crush']['update']
            crush_ruleset_name crush_ruleset_name if !crush_ruleset_name.nil? && node['ceph']['osd']['crush']['update']
            profile profile_val unless profile_val.nil?
            options options_val unless options_val.nil?
            
          end
        else
            profile_val = '' if profile_val.nil?
            
            crush_ruleset_name = '' if crush_ruleset_name.nil?
            options_val = '' if options_val.nil?

            execute "ceph-pool-create-#{name}" do
              command lazy { "ceph osd pool create #{name} #{pg_num_val} #{pg_num_val} #{type_val} #{profile_val} #{crush_ruleset_name} #{options_val}" }
              not_if "ceph osd pool get #{name} pg_num"
            end
        end
    end
  else
    node_loop = node['ceph']['pools'][pool]['pools']
    node_loop.each_with_index do |pool_val, index|
      type_val = pool_val['type'] 
      pg_num_val = get_pool_pg_count(pool, index, type_val, 1, false)
      profile_val = pool_val['profile'] if type_val == 'erasure'
      crush_ruleset_name = pool_val['crush_ruleset_name']
      options_val = node['ceph']['pools'][pool]['settings']['options'] if node['ceph']['pools'][pool]['settings']['options']

      if node['ceph']['pools']['version'] != 2
          ceph_chef_pool pool_val['name'] do
            action :create
            pg_num pg_num_val
            pgp_num pg_num_val
            type type_val
            crush_ruleset pool_val['crush_ruleset'] if node['ceph']['osd']['crush']['update']
            crush_ruleset_name crush_ruleset_name if !crush_ruleset_name.nil? && node['ceph']['osd']['crush']['update']
            profile profile_val unless profile_val.nil?
            options node['ceph']['pools'][pool]['settings']['options'] if node['ceph']['pools'][pool]['settings']['options']
            
          end
      else
          profile_val = '' if profile_val.nil?
          
          crush_ruleset_name = '' if crush_ruleset_name.nil? || !node['ceph']['osd']['crush']['update']
          options_val = '' if options_val.nil?

          execute "ceph-pool-create-#{pool_val['name']}" do
            command lazy { "ceph osd pool create #{pool_val['name']} #{pg_num_val} #{pg_num_val} #{type_val} #{profile_val} #{crush_ruleset_name} #{options_val}" }
            not_if "ceph osd pool get #{pool_val['name']} pg_num"
          end
      end
    end
  end
end