INNER CODE UNIT · Ruby

prunable_resources

Shopify/krane · lib/krane/cluster_resource_discovery.rb:21

    def prunable_resources(namespaced:)
      black_list = %w(Namespace Node ControllerRevision Event)
      fetch_resources(namespaced: namespaced).map do |resource|
        next unless resource["verbs"].one? { |v| v == "delete" }
        next if black_list.include?(resource["kind"])
        [resource["apigroup"], resource["version"], resource["kind"]].compact.join("/")
      end.compact
    end

    def fetch_resources(namespaced: false)
      responses = Concurrent::Hash.new
      Krane::Concurrency.split_across_threads(api_paths) do |path|
        responses[path] = fetch_api_path(path)["resources"] || []
      end
      responses.flat_map do |path, resources|
        resources.map { |r| resource_hash(path, namespaced, r) }
      end.compact.uniq { |r| "#{r['apigroup']}/#{r['kind']}" }
    end

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…