Fix PeerName is part of service uniqueness
We need to make a PeerName part of a the service id when present. This makes sure that peers can export services named the same as other peers but have the UI still treat them as separate services.
This commit is contained in:
parent
676e8afaf9
commit
9c965f98fd
|
@ -5,7 +5,7 @@ import { fragment } from 'ember-data-model-fragments/attributes';
|
|||
import replace, { nullValue } from 'consul-ui/decorators/replace';
|
||||
|
||||
export const PRIMARY_KEY = 'uid';
|
||||
export const SLUG_KEY = 'Name';
|
||||
export const SLUG_KEY = 'Name,PeerName';
|
||||
|
||||
export const Collection = class Collection {
|
||||
@tracked items;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { get } from '@ember/object';
|
||||
import { isEmpty } from '@ember/utils';
|
||||
|
||||
export default function (foreignKey, nspaceKey, partitionKey, hash = JSON.stringify) {
|
||||
return function (primaryKey, slugKey, foreignKeyValue, nspaceValue, partitionValue) {
|
||||
|
@ -10,15 +11,24 @@ export default function (foreignKey, nspaceKey, partitionKey, hash = JSON.string
|
|||
);
|
||||
}
|
||||
const slugKeys = slugKey.split(',');
|
||||
const slugValues = slugKeys.map(function (slugKey) {
|
||||
const slug = get(item, slugKey);
|
||||
if (slug == null || slug.length < 1) {
|
||||
throw new Error(
|
||||
`Unable to create fingerprint, missing slug. Looking for value in \`${slugKey}\` got \`${slug}\``
|
||||
);
|
||||
}
|
||||
return slug;
|
||||
});
|
||||
const slugValues = slugKeys
|
||||
.map(function (slugKey) {
|
||||
const slug = get(item, slugKey);
|
||||
|
||||
const isSlugEmpty = isEmpty(slug);
|
||||
|
||||
if (isSlugEmpty) {
|
||||
// PeerName should be optional as part of id
|
||||
if (slugKey === 'PeerName') {
|
||||
return;
|
||||
}
|
||||
throw new Error(
|
||||
`Unable to create fingerprint, missing slug. Looking for value in \`${slugKey}\` got \`${slug}\``
|
||||
);
|
||||
}
|
||||
return slug;
|
||||
})
|
||||
.compact();
|
||||
// This ensures that all data objects have a Namespace and a Partition
|
||||
// value set, even in OSS.
|
||||
if (typeof item[nspaceKey] === 'undefined') {
|
||||
|
|
Loading…
Reference in New Issue