ManageIQ/manageiq-providers-kubernetes

View on GitHub
app/models/manageiq/providers/kubernetes/inventory/collector/container_manager.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
97%
class ManageIQ::Providers::Kubernetes::Inventory::Collector::ContainerManager < ManageIQ::Providers::Kubernetes::Inventory::Collector
  def additional_attributes
    @additional_attributes ||= {} # TODO: is this used?
  end

  def pods
    @pods ||= fetch_entity(kubernetes_connection, "pods")
  end

  def services
    @services ||= fetch_entity(kubernetes_connection, "services")
  end

  def endpoints
    @endpoints ||= fetch_entity(kubernetes_connection, "endpoints")
  end

  def replication_controllers
    @replication_controllers ||= fetch_entity(kubernetes_connection, "replication_controllers")
  end

  def nodes
    @nodes ||= fetch_entity(kubernetes_connection, "nodes")
  end

  def namespaces
    @namespaces ||= fetch_entity(kubernetes_connection, "namespaces")
  end

  def resource_quotas
    @resource_quotas ||= fetch_entity(kubernetes_connection, "resource_quotas")
  end

  def limit_ranges
    @limit_ranges ||= fetch_entity(kubernetes_connection, "limit_ranges")
  end

  def persistent_volumes
    @persistent_volumes ||= fetch_entity(kubernetes_connection, "persistent_volumes")
  end

  def persistent_volume_claims
    @persistent_volume_claims ||= fetch_entity(kubernetes_connection, "persistent_volume_claims")
  end

  private

  def refresher_options
    Settings.ems_refresh[manager.class.ems_type]
  end

  def fetch_entity(client, entity)
    meth = "get_#{entity}"

    continue = resource_version = kind = nil
    results = []

    loop do
      result = client.send(meth, :limit => refresher_options.chunk_size, :continue => continue)
      break if result.nil?

      kind = result.kind
      resource_version = result.resourceVersion

      results += result
      break if result.last?

      continue = result.continue
    end

    Kubeclient::Common::EntityList.new(kind, resource_version, results)
  end
end