[ui] Don't show a service as healthy when its parent alloc is not running (#17465)

* Fix: dont show a service as healthy when its parent alloc is not running

* Test for Health Unknown
This commit is contained in:
Phil Renaud 2023-06-09 15:43:11 -04:00 committed by GitHub
parent 57dad0ca07
commit 6a9df6e3ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 1 deletions

3
.changelog/17465.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:bug
ui: dont show a service as healthy when its parent allocation stops running
```

View File

@ -20,6 +20,11 @@
{{#if (eq this.aggregateStatus 'Unhealthy')}}
<FlightIcon @name="x-square-fill" @color="#c84034" />
Unhealthy
{{else if (eq this.aggregateStatus 'Unknown')}}
<Tooltip @text="The parent allocation for this service is not running" @isFullText={{true}}>
<FlightIcon @name="help" @color="#999999" />
Health Unknown
</Tooltip>
{{else}}
<FlightIcon @name="check-square-fill" @color="#25ba81" />
Healthy

View File

@ -38,6 +38,7 @@ export default class AllocationServiceSidebarComponent extends Component {
}
get aggregateStatus() {
if (this.args.allocation?.clientStatus !== 'running') return 'Unknown';
return this.checks.any((check) => check.Status === 'failure')
? 'Unhealthy'
: 'Healthy';

View File

@ -76,7 +76,7 @@ module(
};
this.set('closeSidebar', () => this.set('service', null));
this.set('allocation', { id: 'myAlloc' });
this.set('allocation', { id: 'myAlloc', clientStatus: 'running' });
this.set('service', healthyService);
await render(
hbs`<AllocationServiceSidebar @service={{this.service}} @allocation={{this.allocation}} @fns={{hash closeSidebar=this.closeSidebar}} />`
@ -91,6 +91,13 @@ module(
hbs`<AllocationServiceSidebar @service={{this.service}} @allocation={{this.allocation}} @fns={{hash closeSidebar=this.closeSidebar}} />`
);
assert.dom('h1 .aggregate-status').includesText('Unhealthy');
this.set('service', healthyService);
this.set('allocation', { id: 'myAlloc2', clientStatus: 'failed' });
await render(
hbs`<AllocationServiceSidebar @service={{this.service}} @allocation={{this.allocation}} @fns={{hash closeSidebar=this.closeSidebar}} />`
);
assert.dom('h1 .aggregate-status').includesText('Health Unknown');
});
test('it handles Consul services with reduced functionality', async function (assert) {