Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/environments/graphql/resolvers/kubernetes.js')
-rw-r--r--app/assets/javascripts/environments/graphql/resolvers/kubernetes.js81
1 files changed, 51 insertions, 30 deletions
diff --git a/app/assets/javascripts/environments/graphql/resolvers/kubernetes.js b/app/assets/javascripts/environments/graphql/resolvers/kubernetes.js
index 9ab65d0bb7f..67a472dac93 100644
--- a/app/assets/javascripts/environments/graphql/resolvers/kubernetes.js
+++ b/app/assets/javascripts/environments/graphql/resolvers/kubernetes.js
@@ -44,30 +44,41 @@ const mapWorkloadItems = (items, kind) => {
});
};
-const handleClusterError = (err) => {
- const error = err?.response?.data?.message ? new Error(err.response.data.message) : err;
- throw error;
+const handleClusterError = async (err) => {
+ if (!err.response) {
+ throw err;
+ }
+
+ const errorData = await err.response.json();
+ throw errorData;
};
export default {
k8sPods(_, { configuration, namespace }) {
const coreV1Api = new CoreV1Api(new Configuration(configuration));
const podsApi = namespace
- ? coreV1Api.listCoreV1NamespacedPod(namespace)
+ ? coreV1Api.listCoreV1NamespacedPod({ namespace })
: coreV1Api.listCoreV1PodForAllNamespaces();
return podsApi
- .then((res) => res?.data?.items || [])
- .catch((err) => {
- handleClusterError(err);
+ .then((res) => res?.items || [])
+ .catch(async (err) => {
+ try {
+ await handleClusterError(err);
+ } catch (error) {
+ throw new Error(error.message);
+ }
});
},
- k8sServices(_, { configuration }) {
+ k8sServices(_, { configuration, namespace }) {
const coreV1Api = new CoreV1Api(new Configuration(configuration));
- return coreV1Api
- .listCoreV1ServiceForAllNamespaces()
+ const servicesApi = namespace
+ ? coreV1Api.listCoreV1NamespacedService({ namespace })
+ : coreV1Api.listCoreV1ServiceForAllNamespaces();
+
+ return servicesApi
.then((res) => {
- const items = res?.data?.items || [];
+ const items = res?.items || [];
return items.map((item) => {
const { type, clusterIP, externalIP, ports } = item.spec;
return {
@@ -81,24 +92,28 @@ export default {
};
});
})
- .catch((err) => {
- handleClusterError(err);
+ .catch(async (err) => {
+ try {
+ await handleClusterError(err);
+ } catch (error) {
+ throw new Error(error.message);
+ }
});
},
k8sWorkloads(_, { configuration, namespace }) {
- const appsV1api = new AppsV1Api(configuration);
- const batchV1api = new BatchV1Api(configuration);
+ const appsV1api = new AppsV1Api(new Configuration(configuration));
+ const batchV1api = new BatchV1Api(new Configuration(configuration));
let promises;
if (namespace) {
promises = [
- appsV1api.listAppsV1NamespacedDeployment(namespace),
- appsV1api.listAppsV1NamespacedDaemonSet(namespace),
- appsV1api.listAppsV1NamespacedStatefulSet(namespace),
- appsV1api.listAppsV1NamespacedReplicaSet(namespace),
- batchV1api.listBatchV1NamespacedJob(namespace),
- batchV1api.listBatchV1NamespacedCronJob(namespace),
+ appsV1api.listAppsV1NamespacedDeployment({ namespace }),
+ appsV1api.listAppsV1NamespacedDaemonSet({ namespace }),
+ appsV1api.listAppsV1NamespacedStatefulSet({ namespace }),
+ appsV1api.listAppsV1NamespacedReplicaSet({ namespace }),
+ batchV1api.listBatchV1NamespacedJob({ namespace }),
+ batchV1api.listBatchV1NamespacedCronJob({ namespace }),
];
} else {
promises = [
@@ -120,15 +135,18 @@ export default {
CronJobList: [],
};
- return Promise.allSettled(promises).then((results) => {
+ return Promise.allSettled(promises).then(async (results) => {
if (results.every((res) => res.status === 'rejected')) {
const error = results[0].reason;
- const errorMessage = error?.response?.data?.message ?? error;
- throw new Error(errorMessage);
+ try {
+ await handleClusterError(error);
+ } catch (err) {
+ throw new Error(err.message);
+ }
}
for (const promiseResult of results) {
- if (promiseResult.status === 'fulfilled' && promiseResult?.value?.data) {
- const { kind, items } = promiseResult.value.data;
+ if (promiseResult.status === 'fulfilled' && promiseResult?.value) {
+ const { kind, items } = promiseResult.value;
if (items?.length > 0) {
summaryList[kind] = mapWorkloadItems(items, kind);
@@ -145,11 +163,14 @@ export default {
return namespacesApi
.then((res) => {
- return res?.data?.items || [];
+ return res?.items || [];
})
- .catch((err) => {
- const error = err?.response?.data?.reason || err;
- throw new Error(humanizeClusterErrors(error));
+ .catch(async (error) => {
+ try {
+ await handleClusterError(error);
+ } catch (err) {
+ throw new Error(humanizeClusterErrors(err.reason));
+ }
});
},
};