42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { ACTIVE_CONNECTION_TIME, NAME_MAX_LENGTH } from './constants';
|
|
|
|
function getTruncatedName(name) {
|
|
return name.substring(0, NAME_MAX_LENGTH);
|
|
}
|
|
|
|
export function generateAgentRegistrationCommand({ name, token, version, address }) {
|
|
return `helm repo add gitlab https://charts.gitlab.io
|
|
helm repo update
|
|
helm upgrade --install ${name} gitlab/gitlab-agent \\
|
|
--namespace gitlab-agent-${getTruncatedName(name)} \\
|
|
--create-namespace \\
|
|
--set image.tag=v${version} \\
|
|
--set config.token=${token} \\
|
|
--set config.kasAddress=${address}`;
|
|
}
|
|
|
|
export function getAgentConfigPath(clusterAgentName) {
|
|
return `.gitlab/agents/${clusterAgentName}`;
|
|
}
|
|
|
|
export function getAgentLastContact(tokens = []) {
|
|
let lastContact = null;
|
|
tokens.forEach((token) => {
|
|
const lastContactToDate = new Date(token.lastUsedAt).getTime();
|
|
if (lastContactToDate > lastContact) {
|
|
lastContact = lastContactToDate;
|
|
}
|
|
});
|
|
return lastContact;
|
|
}
|
|
|
|
export function getAgentStatus(lastContact) {
|
|
if (lastContact) {
|
|
const now = new Date().getTime();
|
|
const diff = now - lastContact;
|
|
|
|
return diff >= ACTIVE_CONNECTION_TIME ? 'inactive' : 'active';
|
|
}
|
|
return 'unused';
|
|
}
|