/** * 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}` ), })); } }