storage_change_supports_live_update?

in cookbooks/aws-parallelcluster-slurm/libraries/storage.rb [83:110]


def storage_change_supports_live_update?
  change_set = JSON.load_file("#{node['cluster']['change_set_path']}")
  changes = change_set["changeSet"]

  if changes.nil? || changes.empty?
    Chef::Log.info("Changeset is empty: live update is supported")
    return true
  end

  storage_changes = changes.select { |change| change["parameter"] == "SharedStorage" }

  if storage_changes.empty?
    Chef::Log.info("Changeset does not contain shared storage changes: live update is supported")
    return true
  end

  storage_changes.each do |change|
    Chef::Log.info("Analyzing shared storage change: #{change}")
    change_info = SharedStorageChangeInfo.new(change)
    Chef::Log.info("Generated shared storage change info: #{change_info}")
    supported = change_info.support_live_updates?
    Chef::Log.info("Change #{change} #{'does not ' unless supported}support live update")
    return false unless supported
  end
  Chef::Log.info("All shared storage changes support live update.")
  true
end