ui: peering UI fixes - api contract change / wrong link in peerings list (#14007)

* Don't send `Datacenter` when establishing peer

* Don't surface link to non-existing peers.edit route anymore
This commit is contained in:
Michael Klein 2022-08-03 15:04:19 +02:00 committed by GitHub
parent f386122633
commit 317709f469
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 82 additions and 84 deletions

View File

@ -42,14 +42,6 @@ as |item index|>
{{#if (can 'delete peer' item=item)}}
<Actions as |Action|>
<Action
data-test-edit-action
@href={{href-to 'dc.peers.edit' item.Name}}
>
<BlockSlot @name="label">
View
</BlockSlot>
</Action>
{{#if (can "write peer" item=item)}}
<Action
data-test-edit-action

View File

@ -2,56 +2,57 @@ import RepositoryService from 'consul-ui/services/repository';
import dataSource from 'consul-ui/decorators/data-source';
export default class PeerService extends RepositoryService {
getModelName() {
return 'peer';
}
@dataSource('/:partition/:ns/:dc/peering/token-for/:name')
async fetchToken({dc, ns, partition, name}, configuration, request) {
return (await request`
async fetchToken({ dc, ns, partition, name }, configuration, request) {
return (
await request`
POST /v1/peering/token
${{
PeerName: name,
Datacenter: dc,
Partition: partition || undefined,
}}
`)((headers, body, cache) => body)
`
)((headers, body, cache) => body);
}
@dataSource('/:partition/:ns/:dc/peers')
async fetchAll({ dc, ns, partition }, { uri }, request) {
return (await request`
return (
await request`
GET /v1/peerings
${{
partition,
}}
`)(
(headers, body, cache) => {
return {
meta: {
version: 2,
interval: 10000,
uri: uri,
},
body: body.map(item => {
return cache(
{
...item,
Datacenter: dc,
Partition: partition,
},
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
);
})
};
});
`
)((headers, body, cache) => {
return {
meta: {
version: 2,
interval: 10000,
uri: uri,
},
body: body.map(item => {
return cache(
{
...item,
Datacenter: dc,
Partition: partition,
},
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
);
}),
};
});
}
@dataSource('/:partition/:ns/:dc/peer/:name')
async fetchOne({partition, ns, dc, name}, { uri }, request) {
async fetchOne({ partition, ns, dc, name }, { uri }, request) {
if (name === '') {
return this.create({
Datacenter: dc,
@ -59,59 +60,62 @@ export default class PeerService extends RepositoryService {
Partition: partition,
});
}
return (await request`
return (
await request`
GET /v1/peering/${name}
${{
partition,
}}
`)((headers, body, cache) => {
return {
meta: {
version: 2,
interval: 10000,
uri: uri,
`
)((headers, body, cache) => {
return {
meta: {
version: 2,
interval: 10000,
uri: uri,
},
body: cache(
{
...body,
Datacenter: dc,
Partition: partition,
},
body: cache(
{
...body,
Datacenter: dc,
Partition: partition,
},
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${body.Name}`
)
};
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${body.Name}`
),
};
});
}
async persist(item, request) {
// mark it as ESTABLISHING ourselves as the request is successful
// and we don't have blocking queries here to get immediate updates
return (await request`
return (
await request`
POST /v1/peering/establish
${{
PeerName: item.Name,
PeeringToken: item.PeeringToken,
Datacenter: item.Datacenter,
Partition: item.Partition || undefined,
}}
`)((headers, body, cache) => {
const partition = item.Partition;
const ns = item.Namespace;
const dc = item.Datacenter;
return {
meta: {
version: 2,
`
)((headers, body, cache) => {
const partition = item.Partition;
const ns = item.Namespace;
const dc = item.Datacenter;
return {
meta: {
version: 2,
},
body: cache(
{
...item,
State: 'ESTABLISHING',
},
body: cache(
{
...item,
State: 'ESTABLISHING'
},
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
)
};
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
),
};
});
}
@ -120,24 +124,26 @@ export default class PeerService extends RepositoryService {
// we just return the item we want to delete
// but mark it as DELETING ourselves as the request is successful
// and we don't have blocking queries here to get immediate updates
return (await request`
return (
await request`
DELETE /v1/peering/${item.Name}
`)((headers, body, cache) => {
const partition = item.Partition;
const ns = item.Namespace;
const dc = item.Datacenter;
return {
meta: {
version: 2,
`
)((headers, body, cache) => {
const partition = item.Partition;
const ns = item.Namespace;
const dc = item.Datacenter;
return {
meta: {
version: 2,
},
body: cache(
{
...item,
State: 'DELETING',
},
body: cache(
{
...item,
State: 'DELETING'
},
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
)
};
uri => uri`peer:///${partition}/${ns}/${dc}/peer/${item.Name}`
),
};
});
}
}