@adpt/cloud
Version:
AdaptJS cloud component library
64 lines • 2.64 kB
JavaScript
;
/*
* Copyright 2018-2019 Unbounded Systems, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@adpt/core");
const common_1 = require("../common");
const Resource_1 = require("./Resource");
const resourceInfo = new Map();
function getResourceInfo(kind) {
const info = resourceInfo.get(kind);
if (!info)
throw new Error(`Request for ResourceInfo for unknown kind: ${kind}`);
return info;
}
exports.getResourceInfo = getResourceInfo;
function registerResourceKind(info) {
const old = resourceInfo.get(info.kind);
if (old !== undefined)
throw new Error(`Attempt to register duplicate kind "${info.kind}"`);
resourceInfo.set(info.kind, info);
}
exports.registerResourceKind = registerResourceKind;
exports.resourceIdToName = common_1.makeResourceName(/[^a-z-]/g, 63);
function resourceElementToName(elem, deployID) {
if (!Resource_1.isResourceFinalElement(elem))
throw new Error("Can only compute name of Resource elements");
if (!core_1.isMountedElement(elem))
throw new Error("Can only compute name of mounted elements");
return exports.resourceIdToName(elem.props.key, elem.id, deployID);
}
exports.resourceElementToName = resourceElementToName;
function makeManifest(elem, deployID) {
if (!core_1.isMountedElement(elem))
throw new Error("Can only create manifest for mounted elements!");
const name = resourceElementToName(elem, deployID);
const ret = {
apiVersion: "v1",
kind: elem.props.kind,
metadata: Object.assign({}, elem.props.metadata, { name }),
spec: elem.props.spec
};
if (ret.metadata.annotations === undefined)
ret.metadata.annotations = {};
const labels = ret.metadata.labels;
ret.metadata.labels = Object.assign({}, (labels ? labels : {}), { adaptName: name });
ret.metadata.annotations.adaptName = elem.id;
ret.metadata.annotations.adaptDeployID = deployID;
return ret;
}
exports.makeManifest = makeManifest;
//# sourceMappingURL=manifest_support.js.map