38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
|
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}`
|
||
|
)
|
||
|
})
|
||
|
);
|
||
|
}
|
||
|
}
|