Skip to content
Snippets Groups Projects
Commit 4623dfba authored by Miguel Rincon's avatar Miguel Rincon
Browse files

Add upgrade status to runner managers

This change adds an icon to indicate if runners managers in a group
has an outdated version and promts the user to upgrade.

Changelog: added
EE: true
parent 6b6bd34e
No related branches found
No related tags found
1 merge request!122474Add upgrade status to runner managers
......@@ -94,7 +94,7 @@ export default {
<div class="gl-mb-3 gl-ml-auto gl-display-inline-flex gl-max-w-full">
<template v-if="runner.version">
<div class="gl-flex-shrink-0">
<runner-upgrade-status-icon :runner="runner" />
<runner-upgrade-status-icon :upgrade-status="runner.upgradeStatus" />
<gl-sprintf :message="$options.i18n.I18N_VERSION_LABEL">
<template #version>{{ runner.version }}</template>
</gl-sprintf>
......
......@@ -13,6 +13,8 @@ export default {
TimeAgo,
HelpPopover,
GlIntersperse,
RunnerUpgradeStatusIcon: () =>
import('ee_component/ci/runner/components/runner_upgrade_status_icon.vue'),
},
props: {
items: {
......@@ -49,6 +51,7 @@ export default {
<template #cell(version)="{ item = {} }">
{{ item.version }}
<template v-if="item.revision">({{ item.revision }})</template>
<runner-upgrade-status-icon :upgrade-status="item.upgradeStatus" />
</template>
<template #cell(architecturePlatform)="{ item = {} }">
<gl-intersperse separator="/">
......
#import "./runner_manager_shared.fragment.graphql"
fragment CiRunnerManager on CiRunnerManager {
...CiRunnerManagerShared
}
fragment CiRunnerManagerShared on CiRunnerManager {
id
systemId
version
revision
executorName
architectureName
platformName
ipAddress
contactedAt
}
#import "ee_else_ce/ci/runner/graphql/show/runner_manager.fragment.graphql"
query getRunnerManagers($runnerId: CiRunnerID!) {
runner(id: $runnerId) {
id
managers {
count
nodes {
id
systemId
version
revision
executorName
architectureName
platformName
ipAddress
contactedAt
...CiRunnerManager
}
}
}
......
......@@ -14,9 +14,10 @@ export default {
},
mixins: [glFeatureFlagMixin()],
props: {
runner: {
required: true,
type: Object,
upgradeStatus: {
type: String,
required: false,
default: null,
},
},
computed: {
......@@ -26,9 +27,6 @@ export default {
this.glFeatures?.runnerUpgradeManagementForNamespace
);
},
upgradeStatus() {
return this.runner.upgradeStatus;
},
icon() {
if (!this.shouldShowUpgradeStatus) {
return null;
......
#import "~/ci/runner/graphql/show/runner_manager_shared.fragment.graphql"
fragment CiRunnerManager on CiRunnerManager {
...CiRunnerManagerShared
upgradeStatus
}
......@@ -17,13 +17,10 @@ describe('RunnerUpgradeStatusIcon', () => {
const findIcon = () => wrapper.findComponent(GlIcon);
const getTooltipValue = () => getBinding(wrapper.element, 'gl-tooltip').value;
const createComponent = ({ runner = {} } = {}) => {
const createComponent = ({ props = {} } = {}) => {
wrapper = mount(RunnerUpgradeStatusIcon, {
propsData: {
runner: {
upgradeStatus: UPGRADE_STATUS_AVAILABLE,
...runner,
},
...props,
},
directives: {
GlTooltip: createMockDirective('gl-tooltip'),
......@@ -55,7 +52,7 @@ describe('RunnerUpgradeStatusIcon', () => {
it('Displays upgrade available icon', () => {
createComponent({
runner: {
props: {
upgradeStatus: UPGRADE_STATUS_AVAILABLE,
},
});
......@@ -66,7 +63,7 @@ describe('RunnerUpgradeStatusIcon', () => {
it('Displays upgrade recommended icon', () => {
createComponent({
runner: {
props: {
upgradeStatus: UPGRADE_STATUS_RECOMMENDED,
},
});
......@@ -77,7 +74,7 @@ describe('RunnerUpgradeStatusIcon', () => {
it('Displays no icon', () => {
createComponent({
runner: {
props: {
upgradeStatus: UPGRADE_STATUS_NOT_AVAILABLE,
},
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment