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
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|