Skip to content

Commit

Permalink
add debug logging to kubernetes client
Browse files Browse the repository at this point in the history
-
Ticket: AUT-1641
  • Loading branch information
hawser86 committed Mar 10, 2023
1 parent 531df9b commit e1348c3
Showing 1 changed file with 29 additions and 2 deletions.
31 changes: 29 additions & 2 deletions src/renderer/lib/kubernetes-client/kubernetes-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,40 @@ import {
V1PodTemplateSpec
} from '@kubernetes/client-node';
import { get, mapValues } from 'lodash';
import log from 'electron-log';
import KubernetesError from './kubernetes-error';

const logger = log.scope('kubernetes-client');
let kubeConfig;

export default {
listContexts: async () => mapErrorToKubernetesError(() => {
logger.debug('listing-contexts');
return getKubeConfig().getContexts()
.map(context => context.name);
}),
getContext: async () => mapErrorToKubernetesError(() => {
logger.debug('getting-current-context');
return getKubeConfig().getCurrentContext();
}),
setContext: async context => mapErrorToKubernetesError(() => {
logger.debug('setting-context', { context });
getKubeConfig().setCurrentContext(context);
}),
listNamespaces: async () => mapErrorToKubernetesError(async () => {
logger.debug('listing-namespaces');
const { body } = await getCoreApiClient().listNamespace();
logger.debug('namespaces-listed');

return body.items
.filter(item => item.status.phase === 'Active')
.map(item => item.metadata.name);
}),

listSecrets: async (namespace) => mapErrorToKubernetesError(async () => {
logger.debug('listing-secrets', { namespace });
const { body } = await getCoreApiClient().listNamespacedSecret(namespace);
logger.debug('secrets-listed', { namespace });
return body.items
.filter(item =>
!item.metadata.name.startsWith('default-token') &&
Expand All @@ -43,20 +52,25 @@ export default {
}),

loadSecret: async (namespace, name) => mapErrorToKubernetesError(async () => {
logger.debug('loading-secret', { namespace, name });
const { body } = await getCoreApiClient().readNamespacedSecret(name, namespace);
logger.debug('secret-loaded', { namespace, name });
return mapValues(body.data, value => Buffer.from(value, 'base64').toString());
}),

saveSecret: async (namespace, name, secret) => mapErrorToKubernetesError(async () => {
logger.debug('saving-secret', { namespace, name });
const secretConfig = {
stringData: secret,
metadata: { name }
};

await getCoreApiClient().replaceNamespacedSecret(name, namespace, secretConfig);
logger.debug('secret-saved', { namespace, name });
}),

patchDeployments: async (namespace, name) => mapErrorToKubernetesError(async () => {
logger.debug('pathing-deployment', { namespace, name });
const labelSelector = `applicationName=${name}`;
const deploymentListResponse = await getAppsApiClient().listNamespacedDeployment(
namespace,
Expand All @@ -66,6 +80,7 @@ export default {
undefined,
labelSelector
);
logger.debug('deployments-listed', { namespace, name });
const deploymentList = get(deploymentListResponse, 'body.items', []);

for await (const deployment of deploymentList) {
Expand All @@ -84,13 +99,15 @@ export default {
undefined,
{ headers: { 'Content-Type': 'application/merge-patch+json' } }
);
logger.debug('deployment-patched', { namespace, name, deploymentName });
}
})
};

const getKubeConfig = () => {
if (!kubeConfig) {
kubeConfig = new KubeConfig();
logger.debug('loading-default-config');
kubeConfig.loadFromDefault();
}
return kubeConfig;
Expand All @@ -108,11 +125,21 @@ const generateDeploymentPatch = () => {
};

const getCoreApiClient = () => {
return getKubeConfig().makeApiClient(CoreV1Api);
logger.debug('retrieving-core-api-client');
const config = getKubeConfig();
logger.debug('config-retrieved');
const client = config.makeApiClient(CoreV1Api);
logger.debug('client-created');
return client;
};

const getAppsApiClient = () => {
return getKubeConfig().makeApiClient(AppsV1Api);
logger.debug('retrieving-apps-api-client');
const config = getKubeConfig();
logger.debug('config-retrieved');
const client = config.makeApiClient(AppsV1Api);
logger.debug('client-created');
return client;
};

const mapErrorToKubernetesError = async func => {
Expand Down

0 comments on commit e1348c3

Please sign in to comment.