@adpt/core
Version:
AdaptJS core library
92 lines • 4 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 tslib_1 = require("tslib");
const utils_1 = require("@adpt/utils");
const error_1 = require("../error");
const server_1 = require("../server");
const deployment_1 = require("../server/deployment");
const history_1 = require("../server/history");
const buildAndDeploy_1 = require("./buildAndDeploy");
const common_1 = require("./common");
const fork_1 = require("./fork");
const defaultOptions = {
initLocalServer: false,
initialStateJson: "{}",
initialObservationsJson: "{}"
};
async function createDeployment(options) {
const finalOptions = Object.assign({}, common_1.defaultDeployCommonOptions, defaultOptions, options);
const { adaptUrl, client, deployID, initLocalServer, initialStateJson, initialObservationsJson, logger: _logger, loggerId, projectName } = finalOptions, buildOpts = tslib_1.__rest(finalOptions, ["adaptUrl", "client", "deployID", "initLocalServer", "initialStateJson", "initialObservationsJson", "logger", "loggerId", "projectName"]);
const setup = {
name: "createDeployment",
description: "Creating deployment",
client,
logger: _logger,
loggerId,
};
return common_1.withOpsSetup(setup, async (info) => {
const { logger, taskObserver } = info;
let ds;
let server = null;
let deployment = null;
try {
server = await server_1.adaptServer(adaptUrl, {
init: finalOptions.initLocalServer,
});
deployment = await deployment_1.createDeployment(server, projectName, finalOptions.stackName, {
deployID,
});
ds = await buildAndDeploy_1.buildAndDeploy(Object.assign({ deployment, prevStateJson: initialStateJson, observationsJson: initialObservationsJson, taskObserver }, buildOpts));
}
catch (err) {
const message = err instanceof error_1.ProjectRunError ?
`${err.message}:\n${err.projectStack}` :
utils_1.formatUserError(err);
logger.error(`Error creating deployment: ${message}`);
ds = {
type: "error",
messages: logger.messages,
summary: logger.summary,
domXml: err.domXml,
};
if (deployment) {
// NOTE(mark): TS 3.0.3 incorrectly narrows deployment to
// null within the catch
const dep = deployment;
// If there's a History entry, the deploy failed during act,
// which means there could be a partial deploy.
// Give the user the deployID so they can decide what to do.
if (await dep.lastEntry(history_1.HistoryStatus.complete)) {
ds.deployID = dep.deployID;
}
}
}
if (server && deployment && (finalOptions.dryRun || !ds.deployID)) {
try {
await deployment_1.destroyDeployment(server, deployment.deployID);
}
catch (err) {
logger.warning(`Error destroying deployment: ${err}`);
}
}
return ds;
});
}
exports.createDeployment = createDeployment;
fork_1.forkExports(module, "createDeployment");
//# sourceMappingURL=createDeployment.js.map