@devmn/cloud-cli
Version:
CLI tool for Intelligo Cloud.
292 lines • 10.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const HttpClient_1 = require("./HttpClient");
class ApiManager {
constructor(baseUrl, appToken, authTokenSaver) {
this.appToken = appToken;
this.authTokenSaver = authTokenSaver;
const self = this;
this.http = new HttpClient_1.default(baseUrl, appToken, ApiManager.authToken, function () {
return self.getAuthToken(ApiManager.lastKnownPassword);
});
}
callApi(path, method /*| 'POST_DATA' Not used */, data) {
const http = this.http;
return Promise.resolve().then(http.fetch(method, path, data));
}
destroy() {
this.http.destroy();
}
setAuthToken(authToken) {
ApiManager.authToken = authToken;
this.http.setAuthToken(authToken);
}
static isLoggedIn() {
return !!ApiManager.authToken;
}
getAuthToken(password) {
const http = this.http;
ApiManager.lastKnownPassword = password;
let authTokenFetched = '';
const self = this;
return Promise.resolve() //
.then(http.fetch(http.POST, '/login', { password }))
.then(function (data) {
authTokenFetched = data.token;
self.setAuthToken(authTokenFetched);
return authTokenFetched;
})
.then(self.authTokenSaver)
.then(function () {
return authTokenFetched;
});
}
getCaptainInfo() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/info', {}));
}
updateRootDomain(rootDomain) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/changerootdomain', {
rootDomain
}));
}
enableRootSsl(emailAddress) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/enablessl', {
emailAddress
}));
}
forceSsl(isEnabled) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/forcessl', { isEnabled }));
}
getAllApps() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/apps/appDefinitions', {}));
}
fetchBuildLogs(appName) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/apps/appData/' + appName, {}));
}
uploadAppData(appName, file, gitHash) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST_DATA, '/user/apps/appData/' + appName + '?detached=1', { sourceFile: file, gitHash }));
}
uploadCaptainDefinitionContent(appName, captainDefinition, gitHash, detached) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appData/' +
appName +
(detached ? '?detached=1' : ''), {
captainDefinitionContent: JSON.stringify(captainDefinition),
gitHash
}));
}
updateConfigAndSave(appName, appDefinition) {
const instanceCount = appDefinition.instanceCount;
const envVars = appDefinition.envVars;
const notExposeAsWebApp = appDefinition.notExposeAsWebApp;
const forceSsl = appDefinition.forceSsl;
const volumes = appDefinition.volumes;
const ports = appDefinition.ports;
const nodeId = appDefinition.nodeId;
const appPushWebhook = appDefinition.appPushWebhook;
const customNginxConfig = appDefinition.customNginxConfig;
const preDeployFunction = appDefinition.preDeployFunction;
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/update', {
appName,
instanceCount,
notExposeAsWebApp,
forceSsl,
volumes,
ports,
customNginxConfig,
appPushWebhook,
nodeId,
preDeployFunction,
envVars
}));
}
registerNewApp(appName, hasPersistentData) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/register', {
appName,
hasPersistentData
}));
}
deleteApp(appName) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/delete', {
appName
}));
}
enableSslForBaseDomain(appName) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/enablebasedomainssl', {
appName
}));
}
attachNewCustomDomainToApp(appName, customDomain) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/customdomain', {
appName,
customDomain
}));
}
enableSslForCustomDomain(appName, customDomain) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/enablecustomdomainssl', {
appName,
customDomain
}));
}
removeCustomDomain(appName, customDomain) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/removecustomdomain', {
appName,
customDomain
}));
}
getLoadBalancerInfo() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/loadbalancerinfo', {}));
}
getNetDataInfo() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/netdata', {}));
}
updateNetDataInfo(netDataInfo) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/netdata', { netDataInfo }));
}
changePass(oldPassword, newPassword) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/changepassword', {
oldPassword,
newPassword
}));
}
getVersionInfo() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/versioninfo', {}));
}
performUpdate(latestVersion) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/versioninfo', {
latestVersion
}));
}
getNginxConfig() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/nginxconfig', {}));
}
setNginxConfig(customBase, customCaptain) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/nginxconfig', {
baseConfig: { customValue: customBase },
captainConfig: { customValue: customCaptain }
}));
}
getUnusedImages(mostRecentLimit) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/apps/appDefinitions/unusedImages', {
mostRecentLimit: mostRecentLimit + ''
}));
}
deleteImages(imageIds) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/apps/appDefinitions/deleteImages', {
imageIds
}));
}
getDockerRegistries() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/registries', {}));
}
enableSelfHostedDockerRegistry() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/selfhostregistry/enableregistry', {}));
}
disableSelfHostedDockerRegistry() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/selfhostregistry/disableregistry', {}));
}
addDockerRegistry(dockerRegistry) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/registries/insert', Object.assign({}, dockerRegistry)));
}
updateDockerRegistry(dockerRegistry) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/registries/update', Object.assign({}, dockerRegistry)));
}
deleteDockerRegistry(registryId) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/registries/delete', {
registryId
}));
}
setDefaultPushDockerRegistry(registryId) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/registries/setpush', {
registryId
}));
}
getAllNodes() {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.GET, '/user/system/nodes', {}));
}
addDockerNode(nodeType, privateKey, remoteNodeIpAddress, captainIpAddress) {
const http = this.http;
return Promise.resolve() //
.then(http.fetch(http.POST, '/user/system/nodes', {
nodeType,
privateKey,
remoteNodeIpAddress,
captainIpAddress
}));
}
}
ApiManager.lastKnownPassword = process.env
.REACT_APP_DEFAULT_PASSWORD
? process.env.REACT_APP_DEFAULT_PASSWORD + ''
: 'captain42';
ApiManager.authToken = !!process.env.REACT_APP_IS_DEBUG
? // tslint:disable-next-line: max-line-length
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7Im5hbWVzcGFjZSI6ImNhcHRhaW4iLCJ0b2tlblZlcnNpb24iOiI5NmRjM2U1MC00ZDk3LTRkNmItYTIzMS04MmNiZjY0ZTA2NTYifSwiaWF0IjoxNTQ1OTg0MDQwLCJleHAiOjE1ODE5ODQwNDB9.uGJyhb2JYsdw9toyMKX28bLVuB0PhnS2POwEjKpchww'
: '';
exports.default = ApiManager;
//# sourceMappingURL=ApiManager.js.map