2023-03-14 13:18:55 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
2023-08-11 13:12:13 +00:00
|
|
|
* SPDX-License-Identifier: BUSL-1.1
|
2023-03-14 13:18:55 +00:00
|
|
|
*/
|
|
|
|
|
2022-10-11 09:17:19 +00:00
|
|
|
import Model, { attr, belongsTo } from '@ember-data/model';
|
2020-12-14 15:28:35 +00:00
|
|
|
import { computed } from '@ember/object';
|
2020-12-14 14:25:33 +00:00
|
|
|
import { tracked } from '@glimmer/tracking';
|
2021-01-20 15:36:23 +00:00
|
|
|
import { fragment } from 'ember-data-model-fragments/attributes';
|
2022-06-23 13:16:26 +00:00
|
|
|
import replace, { nullValue } from 'consul-ui/decorators/replace';
|
UI V2 (#4086)
* Move settings to use the same service/route API as the rest of the app
* Put some ideas down for unit testing on adapters
* Favour `Model` over `Entity`
* Move away from using `reopen` to using Mixins
* Amend messages, comment/document some usage
* Make sure the returns are consistent in normalizePayload, also
Add some todo's in to remind me to think consider this further at a
later date. For example, is normalizePayload to be a hook or an
overridable method
* Start stripping back the HTML to semantics
* Use a variable rather than chaining
* Remove unused helpers
* Start picking through the new designs, start with listing pages
* First draft HTML for every page
* Making progress on the CSS
* Keep plugging away at the catalog css
* Looking at scrolling
* Wire up filtering
* Sort out filter counting, more or less done a few outstanding
* Start knocking the forms into shape
* Add in codemirror
* Keep moving forwards with the form like layouts
* Start looking at ACL editing page, add footer in
* Pull the filters back in, look at an autoresizer for scroll views
* First draft toggles
* 2nd draft healthcheck icons
* Tweak node healthcheck icons
* Looking at healthcheck detail icons
* Tweak the filter-bar and add selections to the in content tabs
* Add ACL create, pill-like acl type highlight
* Tweaking the main nav some more
* Working on the filter-bar and freetext-filter
* Masonry layout
* Stick with `checks` instead of healthy/unhealthy
* Fix up the filter numbers/counts
* Use the thead for a measure
* First draft tomography back in
* First draft DC dropdown
* Add a temporary create buttong to kv's
* Move KV and ACL to use a create page
* Move tags
* Run through old tests
* Injectable server
* Start adding test attributes
* Add some page objects
* More test attributes and pages
* Acl filter objects
* Add a page.. page object
* Clickable items in lists
* Add rest/spread babel plugin, remove mirage for now
* Add fix for ember-collection
* Keep track of acl filters
* ember-cli-page-object
* ember-test-selectors
* ui: update version of ui compile deps
* Update static assets
* Centralize radiogroup helper
* Rejig KV's and begin to clean it up
* Work around lack of Tags for the moment..
* Some little css tweaks and start to remove possibles
* Working on the dc page and incidentals
1. Sort the datacenter-picker list
2. Add a selected state to the datacenter-picker
3. Make dc an {Name: dc}
4. Add an env helper to get to 'env vars' from within templates
* Click outside stuff for the datacenter-picker, is-active on nav
* Make sure the dropdown CTA can be active
* Bump ember add pluralize helper
* Little try at sass based custom queries
* Rejig tablular collection so it deals with resizing, actions
1. WIP: start building actions dropdowns
2. Move tabular collection to deal with resizing to rule out differences
* First draft actions dropdowns
* Add ports, selectable IP's
* Flash messages, plus general cleanup/consistency
1. Add ember-cli-flash for flash messages
2. Move everything to get() instead of item.get
3. Spotted a few things that weren't consistent
* DOn't go lower than zero
* First draft vertical menu
* Missed a get, tweak dropmenu tick
* Big cleanup
1. this.get(), this.set() > get(), set()
2. assign > {...{}, ...{}}
3. Seperator > separator
* WIP: settings
* Moved things into a ui-v2 folder
* Decide on a way to do the settings page whilst maintaining the url + dc's
* Start some error pages
* Remove base64 polyfill
* Tie in settings, fix atob bug, tweak layout css
* Centralize confirmations into a component
* Allow switching between the old and new UI with the CONSUL_UI_BETA env var
Currently all the assets are packaged into a single AssetFS and a prefix is configured to switch between the two.
* Attempt at some updates to integrate the v2 ui build into the main infrastructure
* Add redirect to index.html for unknown paths
* Allow redictor to /index.html for new ui when using -ui-dir
* Take ACLs to the correct place on save
* First pass breadcrumbs
* Remove datacenter selector on the index page
* Tweak overall layout
* Make buttons 'resets'
* Tweak last DC stuff
* Validations plus kv keyname viewing tweaks
* Pull sessions back in
* Tweak the env vars to be more reusable
* Move isAnon to the view
* No items and disabled acl css
* ACL and KV details
1. Unauthorized page
2. Make sure the ACL is always selected when it needs it
3. Check record deletion with a changeset
* Few more acl tweaks/corrections
* Add no items view to node > services
* Tags for node > services
* Make sure we have tags
* Fix up the labels on the tomography graph
* Add node link (agent) to kv sessions
* Duplicate up `create` for KV 'root creation'
* Safety check for health checks
* Fix up the grids
* Truncate td a's, fix kv columns
* Watch for spaces in KV id's
* Move actions to their own mixins for now at least
* Link reset to settings incase I want to type it in
* Tweak error page
* Cleanup healthcheck icons in service listing
* Centralize errors and make getting back easier
* Nice numbers
* Compact buttons
* Some incidental css cleanups
* Use 'Key / Value' for root
* Tweak tomography layout
* Fix single healthcheck unhealthy resource
* Get loading screen ready
* Fix healthy healthcheck tick
* Everything in header starts white
* First draft loader
* Refactor the entire backend to use proper unique keys, plus..
1. Make unique keys form dc + slug (uid)
2. Fun with errors...
* Tweak header colors
* Add noopener noreferrer to external links
* Add supers to setupController
* Implement cloning, using ember-data...
* Move the more expensive down the switch order
* First draft empty record cleanup..
* Add the cusomt store test
* Temporarily use the htmlSafe prototype to remove the console warning
* Encode hashes in urls
* Go back to using title for errors for now
* Start removing unused bulma
* Lint
* WIP: Start looking at failing tests
* Remove single redirect test
* Finish off error message styling
* Add full ember-data cache invalidation to avoid stale data...
* Add uncolorable warning icons
* More info icon
* Rearrange single service, plus tag printing
* Logo
* No quotes
* Add a simple startup logo
* Tweak healthcheck statuses
* Fix border-color for healthchecks
* Tweak node tabs
* Catch 401 ACL errors and rethrow with the provided error message
* Remove old acl unauth and error routes
* Missed a super
* Make 'All' refer to number of checks, not services
* Remove ember-resizer, add autoprefixer
* Don't show tomography if its not worth it, viewify it more also
* Little model cleanup
* Chevrons
* Find a way to reliably set the class of html from the view
* Consistent html
* Make sure session id's are visible as long as possible
* Fix single service check count
* Add filters and searchs to the query string
* Don't remember the selected tab
* Change text
* Eror tweaking
* Use chevrons on all breadcrumbs even in kv's
* Clean up a file
* Tweak some messaging
* Makesure the footer overlays whats in the page
* Tweak KV errors
* Move json toggle over to the right
* feedback-dialog along with copy buttons
* Better confirmation dialogs
* Add git sha comment
* Same title as old UI
* Allow defaults
* Make sure value is a string
* WIP: Scrolling dropdowns/confirmations
* Add to kv's
* Remove set
* First pass trace
* Better table rows
* Pull over the hashi code editor styles
* Editor tweaks
* Responsive tabs
* Add number formatting to tomography
* Review whats left todo
* Lint
* Add a coordinate ember data triplet
* Bump in a v2.0.0
* Update old tests
* Get coverage working again
* Make sure query keys are also encoded
* Don't test console.error
* Unit test some more utils
* Tweak the size of the tabular collections
* Clean up gitignore
* Fix copy button rollovers
* Get healthcheck 'icon icons' onto the text baseline
* Tweak healthcheck padding and alignment
* Make sure commas kick in in rtt, probably never get to that
* Improve vertical menu
* Tweak dropdown active state to not have a bg
* Tweak paddings
* Search entire string not just 'startsWith'
* Button states
* Most buttons have 1px border
* More button tweaks
* You can only view kv folders
* CSS cleanup reduction
* Form input states and little cleanup
* More CSS reduction
* Sort checks by importance
* Fix click outside on datacenter picker
* Make sure table th's also auto calculate properly
* Make sure `json` isn't remembered in KV editing
* Fix recursive deletion in KV's
* Centralize size
* Catch updateRecord
* Don't double envode
* model > item consistency
* Action loading and ACL tweaks
* Add settings dependencies to acl tests
* Better loading
* utf-8 base64 encode/decode
* Don't hang off a prototype for htmlSafe
* Missing base64 files...
* Get atob/btoa polyfill right
* Shadowy rollovers
* Disabled button styling for primaries
* autofocuses only onload for now
* Fix footer centering
* Beginning of 'notices'
* Remove the isLocked disabling as we are letting you do what the API does
* Don't forget the documentation link for sessions
* Updates are more likely
* Use exported constant
* Dont export redirectFS and a few other PR updates
* Remove the old bootstrap config which was used for the old UI skin
* Use curlies for multiple properties
2018-05-10 18:52:53 +00:00
|
|
|
|
|
|
|
export const PRIMARY_KEY = 'uid';
|
2022-10-26 14:42:55 +00:00
|
|
|
export const SLUG_KEY = 'Name,PeerName';
|
UI V2 (#4086)
* Move settings to use the same service/route API as the rest of the app
* Put some ideas down for unit testing on adapters
* Favour `Model` over `Entity`
* Move away from using `reopen` to using Mixins
* Amend messages, comment/document some usage
* Make sure the returns are consistent in normalizePayload, also
Add some todo's in to remind me to think consider this further at a
later date. For example, is normalizePayload to be a hook or an
overridable method
* Start stripping back the HTML to semantics
* Use a variable rather than chaining
* Remove unused helpers
* Start picking through the new designs, start with listing pages
* First draft HTML for every page
* Making progress on the CSS
* Keep plugging away at the catalog css
* Looking at scrolling
* Wire up filtering
* Sort out filter counting, more or less done a few outstanding
* Start knocking the forms into shape
* Add in codemirror
* Keep moving forwards with the form like layouts
* Start looking at ACL editing page, add footer in
* Pull the filters back in, look at an autoresizer for scroll views
* First draft toggles
* 2nd draft healthcheck icons
* Tweak node healthcheck icons
* Looking at healthcheck detail icons
* Tweak the filter-bar and add selections to the in content tabs
* Add ACL create, pill-like acl type highlight
* Tweaking the main nav some more
* Working on the filter-bar and freetext-filter
* Masonry layout
* Stick with `checks` instead of healthy/unhealthy
* Fix up the filter numbers/counts
* Use the thead for a measure
* First draft tomography back in
* First draft DC dropdown
* Add a temporary create buttong to kv's
* Move KV and ACL to use a create page
* Move tags
* Run through old tests
* Injectable server
* Start adding test attributes
* Add some page objects
* More test attributes and pages
* Acl filter objects
* Add a page.. page object
* Clickable items in lists
* Add rest/spread babel plugin, remove mirage for now
* Add fix for ember-collection
* Keep track of acl filters
* ember-cli-page-object
* ember-test-selectors
* ui: update version of ui compile deps
* Update static assets
* Centralize radiogroup helper
* Rejig KV's and begin to clean it up
* Work around lack of Tags for the moment..
* Some little css tweaks and start to remove possibles
* Working on the dc page and incidentals
1. Sort the datacenter-picker list
2. Add a selected state to the datacenter-picker
3. Make dc an {Name: dc}
4. Add an env helper to get to 'env vars' from within templates
* Click outside stuff for the datacenter-picker, is-active on nav
* Make sure the dropdown CTA can be active
* Bump ember add pluralize helper
* Little try at sass based custom queries
* Rejig tablular collection so it deals with resizing, actions
1. WIP: start building actions dropdowns
2. Move tabular collection to deal with resizing to rule out differences
* First draft actions dropdowns
* Add ports, selectable IP's
* Flash messages, plus general cleanup/consistency
1. Add ember-cli-flash for flash messages
2. Move everything to get() instead of item.get
3. Spotted a few things that weren't consistent
* DOn't go lower than zero
* First draft vertical menu
* Missed a get, tweak dropmenu tick
* Big cleanup
1. this.get(), this.set() > get(), set()
2. assign > {...{}, ...{}}
3. Seperator > separator
* WIP: settings
* Moved things into a ui-v2 folder
* Decide on a way to do the settings page whilst maintaining the url + dc's
* Start some error pages
* Remove base64 polyfill
* Tie in settings, fix atob bug, tweak layout css
* Centralize confirmations into a component
* Allow switching between the old and new UI with the CONSUL_UI_BETA env var
Currently all the assets are packaged into a single AssetFS and a prefix is configured to switch between the two.
* Attempt at some updates to integrate the v2 ui build into the main infrastructure
* Add redirect to index.html for unknown paths
* Allow redictor to /index.html for new ui when using -ui-dir
* Take ACLs to the correct place on save
* First pass breadcrumbs
* Remove datacenter selector on the index page
* Tweak overall layout
* Make buttons 'resets'
* Tweak last DC stuff
* Validations plus kv keyname viewing tweaks
* Pull sessions back in
* Tweak the env vars to be more reusable
* Move isAnon to the view
* No items and disabled acl css
* ACL and KV details
1. Unauthorized page
2. Make sure the ACL is always selected when it needs it
3. Check record deletion with a changeset
* Few more acl tweaks/corrections
* Add no items view to node > services
* Tags for node > services
* Make sure we have tags
* Fix up the labels on the tomography graph
* Add node link (agent) to kv sessions
* Duplicate up `create` for KV 'root creation'
* Safety check for health checks
* Fix up the grids
* Truncate td a's, fix kv columns
* Watch for spaces in KV id's
* Move actions to their own mixins for now at least
* Link reset to settings incase I want to type it in
* Tweak error page
* Cleanup healthcheck icons in service listing
* Centralize errors and make getting back easier
* Nice numbers
* Compact buttons
* Some incidental css cleanups
* Use 'Key / Value' for root
* Tweak tomography layout
* Fix single healthcheck unhealthy resource
* Get loading screen ready
* Fix healthy healthcheck tick
* Everything in header starts white
* First draft loader
* Refactor the entire backend to use proper unique keys, plus..
1. Make unique keys form dc + slug (uid)
2. Fun with errors...
* Tweak header colors
* Add noopener noreferrer to external links
* Add supers to setupController
* Implement cloning, using ember-data...
* Move the more expensive down the switch order
* First draft empty record cleanup..
* Add the cusomt store test
* Temporarily use the htmlSafe prototype to remove the console warning
* Encode hashes in urls
* Go back to using title for errors for now
* Start removing unused bulma
* Lint
* WIP: Start looking at failing tests
* Remove single redirect test
* Finish off error message styling
* Add full ember-data cache invalidation to avoid stale data...
* Add uncolorable warning icons
* More info icon
* Rearrange single service, plus tag printing
* Logo
* No quotes
* Add a simple startup logo
* Tweak healthcheck statuses
* Fix border-color for healthchecks
* Tweak node tabs
* Catch 401 ACL errors and rethrow with the provided error message
* Remove old acl unauth and error routes
* Missed a super
* Make 'All' refer to number of checks, not services
* Remove ember-resizer, add autoprefixer
* Don't show tomography if its not worth it, viewify it more also
* Little model cleanup
* Chevrons
* Find a way to reliably set the class of html from the view
* Consistent html
* Make sure session id's are visible as long as possible
* Fix single service check count
* Add filters and searchs to the query string
* Don't remember the selected tab
* Change text
* Eror tweaking
* Use chevrons on all breadcrumbs even in kv's
* Clean up a file
* Tweak some messaging
* Makesure the footer overlays whats in the page
* Tweak KV errors
* Move json toggle over to the right
* feedback-dialog along with copy buttons
* Better confirmation dialogs
* Add git sha comment
* Same title as old UI
* Allow defaults
* Make sure value is a string
* WIP: Scrolling dropdowns/confirmations
* Add to kv's
* Remove set
* First pass trace
* Better table rows
* Pull over the hashi code editor styles
* Editor tweaks
* Responsive tabs
* Add number formatting to tomography
* Review whats left todo
* Lint
* Add a coordinate ember data triplet
* Bump in a v2.0.0
* Update old tests
* Get coverage working again
* Make sure query keys are also encoded
* Don't test console.error
* Unit test some more utils
* Tweak the size of the tabular collections
* Clean up gitignore
* Fix copy button rollovers
* Get healthcheck 'icon icons' onto the text baseline
* Tweak healthcheck padding and alignment
* Make sure commas kick in in rtt, probably never get to that
* Improve vertical menu
* Tweak dropdown active state to not have a bg
* Tweak paddings
* Search entire string not just 'startsWith'
* Button states
* Most buttons have 1px border
* More button tweaks
* You can only view kv folders
* CSS cleanup reduction
* Form input states and little cleanup
* More CSS reduction
* Sort checks by importance
* Fix click outside on datacenter picker
* Make sure table th's also auto calculate properly
* Make sure `json` isn't remembered in KV editing
* Fix recursive deletion in KV's
* Centralize size
* Catch updateRecord
* Don't double envode
* model > item consistency
* Action loading and ACL tweaks
* Add settings dependencies to acl tests
* Better loading
* utf-8 base64 encode/decode
* Don't hang off a prototype for htmlSafe
* Missing base64 files...
* Get atob/btoa polyfill right
* Shadowy rollovers
* Disabled button styling for primaries
* autofocuses only onload for now
* Fix footer centering
* Beginning of 'notices'
* Remove the isLocked disabling as we are letting you do what the API does
* Don't forget the documentation link for sessions
* Updates are more likely
* Use exported constant
* Dont export redirectFS and a few other PR updates
* Remove the old bootstrap config which was used for the old UI skin
* Use curlies for multiple properties
2018-05-10 18:52:53 +00:00
|
|
|
|
2020-12-14 14:25:33 +00:00
|
|
|
export const Collection = class Collection {
|
|
|
|
@tracked items;
|
|
|
|
|
|
|
|
constructor(items) {
|
|
|
|
this.items = items;
|
|
|
|
}
|
|
|
|
|
|
|
|
get ExternalSources() {
|
2022-09-15 08:43:17 +00:00
|
|
|
const items = this.items.reduce(function (prev, item) {
|
2020-12-14 14:25:33 +00:00
|
|
|
return prev.concat(item.ExternalSources || []);
|
|
|
|
}, []);
|
|
|
|
// unique, non-empty values, alpha sort
|
2021-12-06 11:06:33 +00:00
|
|
|
return [...new Set(items)].filter(Boolean).sort();
|
|
|
|
}
|
|
|
|
// TODO: Think about when this/collections is worthwhile using and explain
|
|
|
|
// when and when not somewhere in the docs
|
|
|
|
get Partitions() {
|
|
|
|
// unique, non-empty values, alpha sort
|
2022-09-15 08:43:17 +00:00
|
|
|
return [...new Set(this.items.map((item) => item.Partition))].sort();
|
2020-12-14 14:25:33 +00:00
|
|
|
}
|
|
|
|
};
|
2020-11-09 17:29:12 +00:00
|
|
|
export default class Service extends Model {
|
|
|
|
@attr('string') uid;
|
|
|
|
@attr('string') Name;
|
|
|
|
|
|
|
|
@attr('string') Datacenter;
|
|
|
|
@attr('string') Namespace;
|
2021-09-15 18:50:11 +00:00
|
|
|
@attr('string') Partition;
|
2020-11-09 17:29:12 +00:00
|
|
|
@attr('string') Kind;
|
2022-06-23 13:16:26 +00:00
|
|
|
@replace('', undefined) @attr('string') PeerName;
|
2020-11-09 17:29:12 +00:00
|
|
|
@attr('number') ChecksPassing;
|
|
|
|
@attr('number') ChecksCritical;
|
|
|
|
@attr('number') ChecksWarning;
|
|
|
|
@attr('number') InstanceCount;
|
|
|
|
@attr('boolean') ConnectedWithGateway;
|
|
|
|
@attr('boolean') ConnectedWithProxy;
|
2021-02-19 16:42:16 +00:00
|
|
|
@attr({ defaultValue: () => [] }) Resources; // []
|
2020-11-09 17:29:12 +00:00
|
|
|
@attr('number') SyncTime;
|
|
|
|
@attr('number') CreateIndex;
|
|
|
|
@attr('number') ModifyIndex;
|
2021-01-27 10:41:24 +00:00
|
|
|
|
|
|
|
@nullValue([]) @attr({ defaultValue: () => [] }) Tags;
|
2020-11-09 17:29:12 +00:00
|
|
|
|
|
|
|
@attr() Nodes; // array
|
|
|
|
@attr() Proxy; // Service
|
2021-01-20 15:36:23 +00:00
|
|
|
@fragment('gateway-config') GatewayConfig;
|
2021-01-27 10:41:24 +00:00
|
|
|
@nullValue([]) @attr() ExternalSources; // array
|
2020-11-09 17:29:12 +00:00
|
|
|
@attr() Meta; // {}
|
|
|
|
|
|
|
|
@attr() meta; // {}
|
|
|
|
|
2022-10-11 09:17:19 +00:00
|
|
|
@belongsTo({ async: false }) peer;
|
|
|
|
|
|
|
|
@computed('peer', 'InstanceCount')
|
|
|
|
get isZeroCountButPeered() {
|
|
|
|
return this.peer && this.InstanceCount === 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
@computed('peer.State')
|
|
|
|
get peerIsFailing() {
|
|
|
|
return this.peer && this.peer.State === 'FAILING';
|
|
|
|
}
|
|
|
|
|
2021-01-25 18:13:54 +00:00
|
|
|
@computed('ChecksPassing', 'ChecksWarning', 'ChecksCritical')
|
|
|
|
get ChecksTotal() {
|
|
|
|
return this.ChecksPassing + this.ChecksWarning + this.ChecksCritical;
|
|
|
|
}
|
|
|
|
|
|
|
|
@computed('MeshChecksPassing', 'MeshChecksWarning', 'MeshChecksCritical')
|
|
|
|
get MeshChecksTotal() {
|
|
|
|
return this.MeshChecksPassing + this.MeshChecksWarning + this.MeshChecksCritical;
|
|
|
|
}
|
|
|
|
|
2020-08-21 07:53:22 +00:00
|
|
|
/* Mesh properties involve both the service and the associated proxy */
|
2020-11-09 17:29:12 +00:00
|
|
|
@computed('ConnectedWithProxy', 'ConnectedWithGateway')
|
|
|
|
get MeshEnabled() {
|
2020-10-07 08:04:55 +00:00
|
|
|
return this.ConnectedWithProxy || this.ConnectedWithGateway;
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@computed('MeshEnabled', 'Kind')
|
|
|
|
get InMesh() {
|
2020-10-07 08:04:55 +00:00
|
|
|
return this.MeshEnabled || (this.Kind || '').length > 0;
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
|
|
|
|
2022-10-11 09:17:19 +00:00
|
|
|
@computed(
|
|
|
|
'MeshChecksPassing',
|
|
|
|
'MeshChecksWarning',
|
|
|
|
'MeshChecksCritical',
|
|
|
|
'isZeroCountButPeered',
|
|
|
|
'peerIsFailing'
|
|
|
|
)
|
2020-11-09 17:29:12 +00:00
|
|
|
get MeshStatus() {
|
2020-08-21 07:53:22 +00:00
|
|
|
switch (true) {
|
2022-10-11 09:17:19 +00:00
|
|
|
case this.isZeroCountButPeered:
|
|
|
|
return 'unknown';
|
|
|
|
case this.peerIsFailing:
|
|
|
|
return 'unknown';
|
2020-08-21 07:53:22 +00:00
|
|
|
case this.MeshChecksCritical !== 0:
|
|
|
|
return 'critical';
|
|
|
|
case this.MeshChecksWarning !== 0:
|
|
|
|
return 'warning';
|
|
|
|
case this.MeshChecksPassing !== 0:
|
|
|
|
return 'passing';
|
|
|
|
default:
|
|
|
|
return 'empty';
|
|
|
|
}
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
|
|
|
|
2022-10-11 09:17:19 +00:00
|
|
|
@computed('isZeroCountButPeered', 'peerIsFailing', 'MeshStatus')
|
|
|
|
get healthTooltipText() {
|
|
|
|
const { MeshStatus, isZeroCountButPeered, peerIsFailing } = this;
|
|
|
|
if (isZeroCountButPeered) {
|
|
|
|
return 'This service currently has 0 instances. Check with the operator of its peer to make sure this is expected behavior.';
|
|
|
|
}
|
|
|
|
if (peerIsFailing) {
|
|
|
|
return 'This peer is out of sync, so the current health statuses of its services are unknown.';
|
|
|
|
}
|
|
|
|
if (MeshStatus === 'critical') {
|
|
|
|
return 'At least one health check on one instance is failing.';
|
|
|
|
}
|
|
|
|
if (MeshStatus === 'warning') {
|
|
|
|
return 'At least one health check on one instance has a warning.';
|
|
|
|
}
|
|
|
|
if (MeshStatus == 'passing') {
|
|
|
|
return 'All health checks are passing.';
|
|
|
|
}
|
|
|
|
return 'There are no health checks';
|
|
|
|
}
|
|
|
|
|
2020-11-09 17:29:12 +00:00
|
|
|
@computed('ChecksPassing', 'Proxy.ChecksPassing')
|
|
|
|
get MeshChecksPassing() {
|
2020-08-21 07:53:22 +00:00
|
|
|
let proxyCount = 0;
|
|
|
|
if (typeof this.Proxy !== 'undefined') {
|
|
|
|
proxyCount = this.Proxy.ChecksPassing;
|
|
|
|
}
|
|
|
|
return this.ChecksPassing + proxyCount;
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@computed('ChecksWarning', 'Proxy.ChecksWarning')
|
|
|
|
get MeshChecksWarning() {
|
2020-08-21 07:53:22 +00:00
|
|
|
let proxyCount = 0;
|
|
|
|
if (typeof this.Proxy !== 'undefined') {
|
|
|
|
proxyCount = this.Proxy.ChecksWarning;
|
|
|
|
}
|
|
|
|
return this.ChecksWarning + proxyCount;
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@computed('ChecksCritical', 'Proxy.ChecksCritical')
|
|
|
|
get MeshChecksCritical() {
|
2020-08-21 07:53:22 +00:00
|
|
|
let proxyCount = 0;
|
|
|
|
if (typeof this.Proxy !== 'undefined') {
|
|
|
|
proxyCount = this.Proxy.ChecksCritical;
|
|
|
|
}
|
|
|
|
return this.ChecksCritical + proxyCount;
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|
2020-08-21 07:53:22 +00:00
|
|
|
/**/
|
2020-11-09 17:29:12 +00:00
|
|
|
}
|