format_storage

in cookbooks/fb_storage/libraries/format_devices_provider.rb [444:500]


      def format_storage(partitions, storage)
        Chef::Log.debug(
          "fb_storage: formatting #{partitions}",
        )
        partitions.each do |partition|
          device = FB::Storage.device_name_from_partition(partition)
          
          
          device_config = nil
          if storage.config[device]
            device_config = storage.config[device]
          elsif storage.arrays[device]
            device_config = storage.arrays[device]
          end
          Chef::Log.debug(
            "fb_storage: Device config for #{partition} " +
            "is #{device_config}",
          )

          if device == partition && device_config['whole_device']
            config = device_config['partitions'][0]
          elsif device_config['raid_level']
            config = device_config
          else
            partnum = partition.match(/([0-9]+)$/)[0].to_i
            
            config = device_config['partitions'][partnum - 1]
          end

          Chef::Log.debug(
            "fb_storage: Partition config for #{partition} " +
            "is #{config}",
          )

          
          
          
          
          if config['_swraid_array'] || config['_swraid_array_journal'] ||
             config['_xfs_rt_data'] || config['_xfs_rt_metadata'] ||
             config['_xfs_rt_rescue'] || config['_no_mkfs']
            Chef::Log.debug(
              "fb_storage: Skipping because we're a member " +
              'of an array, or were asked not to make a filesystem',
            )
            next
          end
          sh = FB::Storage::Handler.get_handler(device, node)
          sh.prep_partition(partition)
          sh.format_partition(
            partition,
            config,
          )
          sh.condition_partition(partition)
        end
      end