43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import RepositoryService from 'consul-ui/services/repository';
|
|
import dataSource from 'consul-ui/decorators/data-source';
|
|
|
|
const MODEL_NAME = 'license';
|
|
|
|
const bucket = function (item, { dc, ns = 'default', partition = 'default' }) {
|
|
return {
|
|
...item,
|
|
Datacenter: dc,
|
|
Namespace: typeof item.Namespace === 'undefined' ? ns : item.Namespace,
|
|
Partition: typeof item.Partition === 'undefined' ? partition : item.Partition,
|
|
};
|
|
};
|
|
|
|
const SECONDS = 1000;
|
|
|
|
export default class LicenseService extends RepositoryService {
|
|
@dataSource('/:partition/:ns/:dc/license')
|
|
async find({ partition, ns, dc }, { uri }, request) {
|
|
return (
|
|
await request`
|
|
GET /v1/operator/license?${{ dc }}
|
|
X-Request-ID: ${uri}
|
|
`
|
|
)((headers, body, cache) => ({
|
|
meta: {
|
|
version: 2,
|
|
uri: uri,
|
|
interval: 30 * SECONDS,
|
|
},
|
|
body: cache(
|
|
bucket(body, { dc }),
|
|
(uri) => uri`${MODEL_NAME}:///${partition}/${ns}/${dc}/license/${body.License.license_id}`
|
|
),
|
|
}));
|
|
}
|
|
}
|