blob: f392079c9a6620261d0f22a8e43f0709a6537913 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "MetricsApi.h"
#include <memory>
extern "C" {
#include "include/generic.h"
}
#include "ApiClient.h"
#include "utils/Deleters.h"
namespace {
struct genericClient_t_deleter { void operator()(genericClient_t* ptr) const noexcept { genericClient_free(ptr); } };
using genericClient_unique_ptr = std::unique_ptr<genericClient_t, genericClient_t_deleter>;
} // namespace
namespace org::apache::nifi::minifi::kubernetes::metrics {
nonstd::expected<std::string, std::string> podMetricsList(const kubernetes::ApiClient& api_client) {
genericClient_unique_ptr genericClient{genericClient_create(api_client.getClient(), "metrics.k8s.io", "v1beta1", "pods")};
utils::freeing_unique_ptr<char> api_response{Generic_list(genericClient.get())};
if (api_response) {
return std::string{api_response.get()};
} else {
return nonstd::make_unexpected("Could not access the Kubernetes API /apis/metrics.k8s.io/v1beta1/pods");
}
}
} // namespace org::apache::nifi::minifi::kubernetes::metrics