Method: K8s::Client#apis

Defined in:
lib/k8s/client.rb

#apis(api_versions = nil, prefetch_resources: false, skip_missing: false) ⇒ Array<APIClient>

Parameters:

  • api_versions (Array<String>) (defaults to: nil)

    defaults to all APIs

  • prefetch_resources (Boolean) (defaults to: false)

    prefetch any missing api_resources for each api_version

  • skip_missing (Boolean) (defaults to: false)

    return APIClient without api_resources? if 404

Returns:

[View source]

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/k8s/client.rb', line 155

def apis(api_versions = nil, prefetch_resources: false, skip_missing: false)
  api_versions ||= ['v1'] + api_groups

  if prefetch_resources
    # api groups that are missing their api_resources
    api_paths = api_versions
                .uniq
                .reject{ |api_version| api(api_version).api_resources? }
                .map{ |api_version| APIClient.path(api_version) }

    # load into APIClient.api_resources=
    begin
      @transport.gets(*api_paths, response_class: K8s::API::MetaV1::APIResourceList, skip_missing: skip_missing).each do |api_resource_list|
        api(api_resource_list.groupVersion).api_resources = api_resource_list.resources if api_resource_list
      end
    rescue K8s::Error::NotFound, K8s::Error::ServiceUnavailable
      # kubernetes api is in unstable state
      # because this is only performance optimization, better to skip prefetch and move on
    end
  end

  api_versions.map{ |api_version| api(api_version) }
end