UNPKG

@adpt/core

Version:
92 lines 4 kB
"use strict"; /* * 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