debian-mirror-gitlab/app/assets/javascripts/clusters/stores/clusters_store.js

143 lines
4.2 KiB
JavaScript
Raw Normal View History

2018-03-17 18:26:18 +05:30
import { s__ } from '../../locale';
2019-02-15 15:39:39 +05:30
import { parseBoolean } from '../../lib/utils/common_utils';
2019-03-02 22:35:43 +05:30
import { INGRESS, JUPYTER, KNATIVE, CERT_MANAGER, RUNNER } from '../constants';
2018-03-17 18:26:18 +05:30
export default class ClusterStore {
constructor() {
this.state = {
helpPath: null,
ingressHelpPath: null,
status: null,
2019-02-15 15:39:39 +05:30
rbac: false,
2018-03-17 18:26:18 +05:30
statusReason: null,
applications: {
helm: {
title: s__('ClusterIntegration|Helm Tiller'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
},
ingress: {
title: s__('ClusterIntegration|Ingress'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
2018-03-27 19:54:05 +05:30
externalIp: null,
2018-03-17 18:26:18 +05:30
},
2019-02-15 15:39:39 +05:30
cert_manager: {
title: s__('ClusterIntegration|Cert-Manager'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
email: null,
},
2018-03-17 18:26:18 +05:30
runner: {
title: s__('ClusterIntegration|GitLab Runner'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
2019-03-02 22:35:43 +05:30
version: null,
chartRepo: 'https://gitlab.com/charts/gitlab-runner',
upgradeAvailable: null,
2018-03-17 18:26:18 +05:30
},
prometheus: {
title: s__('ClusterIntegration|Prometheus'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
},
2018-11-08 19:23:39 +05:30
jupyter: {
title: s__('ClusterIntegration|JupyterHub'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
hostname: null,
},
2018-12-13 13:39:08 +05:30
knative: {
title: s__('ClusterIntegration|Knative'),
status: null,
statusReason: null,
requestStatus: null,
requestReason: null,
hostname: null,
2019-02-15 15:39:39 +05:30
externalIp: null,
2018-12-13 13:39:08 +05:30
},
2018-03-17 18:26:18 +05:30
},
};
}
2018-03-27 19:54:05 +05:30
setHelpPaths(helpPath, ingressHelpPath, ingressDnsHelpPath) {
2018-03-17 18:26:18 +05:30
this.state.helpPath = helpPath;
this.state.ingressHelpPath = ingressHelpPath;
2018-03-27 19:54:05 +05:30
this.state.ingressDnsHelpPath = ingressDnsHelpPath;
2018-03-17 18:26:18 +05:30
}
setManagePrometheusPath(managePrometheusPath) {
this.state.managePrometheusPath = managePrometheusPath;
}
updateStatus(status) {
this.state.status = status;
}
2019-02-15 15:39:39 +05:30
updateRbac(rbac) {
this.state.rbac = parseBoolean(rbac);
}
2018-03-17 18:26:18 +05:30
updateStatusReason(reason) {
this.state.statusReason = reason;
}
updateAppProperty(appId, prop, value) {
this.state.applications[appId][prop] = value;
}
updateStateFromServer(serverState = {}) {
this.state.status = serverState.status;
this.state.statusReason = serverState.status_reason;
2018-03-27 19:54:05 +05:30
2018-12-13 13:39:08 +05:30
serverState.applications.forEach(serverAppEntry => {
2019-03-02 22:35:43 +05:30
const {
name: appId,
status,
status_reason: statusReason,
version,
update_available: upgradeAvailable,
} = serverAppEntry;
2018-03-17 18:26:18 +05:30
this.state.applications[appId] = {
...(this.state.applications[appId] || {}),
status,
statusReason,
};
2018-03-27 19:54:05 +05:30
if (appId === INGRESS) {
this.state.applications.ingress.externalIp = serverAppEntry.external_ip;
2019-02-15 15:39:39 +05:30
} else if (appId === CERT_MANAGER) {
this.state.applications.cert_manager.email =
this.state.applications.cert_manager.email || serverAppEntry.email;
2018-11-08 19:23:39 +05:30
} else if (appId === JUPYTER) {
this.state.applications.jupyter.hostname =
serverAppEntry.hostname ||
(this.state.applications.ingress.externalIp
? `jupyter.${this.state.applications.ingress.externalIp}.nip.io`
: '');
2018-12-13 13:39:08 +05:30
} else if (appId === KNATIVE) {
2019-05-30 16:15:17 +05:30
this.state.applications.knative.hostname =
serverAppEntry.hostname || this.state.applications.knative.hostname;
2019-02-15 15:39:39 +05:30
this.state.applications.knative.externalIp =
serverAppEntry.external_ip || this.state.applications.knative.externalIp;
2019-03-02 22:35:43 +05:30
} else if (appId === RUNNER) {
this.state.applications.runner.version = version;
this.state.applications.runner.upgradeAvailable = upgradeAvailable;
2018-03-27 19:54:05 +05:30
}
2018-03-17 18:26:18 +05:30
});
}
}