More testing and adjustments on automation.
This commit is contained in:
parent
b7f256b01f
commit
d3e82b5806
4 changed files with 74 additions and 74 deletions
|
@ -249,7 +249,7 @@ export class AzureDeployerService extends GBService {
|
|||
// No .env so asks for cloud credentials to start a new farm.
|
||||
if (!username || !password || !subscriptionId || !location || !botId) {
|
||||
process.stdout.write(
|
||||
"A empty enviroment is detected. Please, enter details:"
|
||||
"A empty enviroment is detected. To start automatic deploy, please enter some information:\n"
|
||||
);
|
||||
}
|
||||
let retriveUsername = () => {
|
||||
|
@ -366,22 +366,19 @@ export class AzureDeployerService extends GBService {
|
|||
|
||||
public async deployBootBot(
|
||||
instance,
|
||||
name,
|
||||
botId,
|
||||
endpoint,
|
||||
nlpAppId,
|
||||
nlpKey,
|
||||
subscriptionId,
|
||||
appId
|
||||
) {
|
||||
let botId = name + AzureDeployerService.getRndBotId();
|
||||
[
|
||||
instance.marketplacePassword,
|
||||
instance.webchatKey
|
||||
] = await this.internalDeployBot(
|
||||
await this.internalDeployBot(
|
||||
instance,
|
||||
this.accessToken,
|
||||
botId,
|
||||
name,
|
||||
name,
|
||||
botId,
|
||||
botId,
|
||||
"General BootBot",
|
||||
endpoint,
|
||||
"global",
|
||||
|
@ -396,10 +393,6 @@ export class AzureDeployerService extends GBService {
|
|||
return instance;
|
||||
}
|
||||
|
||||
private async dangerouslyDeleteDeploy(name) {
|
||||
return await this.resourceClient.resourceGroups.deleteMethod(name);
|
||||
}
|
||||
|
||||
private async createStorageServer(
|
||||
group,
|
||||
name,
|
||||
|
@ -440,7 +433,7 @@ export class AzureDeployerService extends GBService {
|
|||
/**
|
||||
* @see https://github.com/Azure/azure-rest-api-specs/blob/master/specification/botservice/resource-manager/Microsoft.BotService/preview/2017-12-01/botservice.json
|
||||
*/
|
||||
private async internalDeployBot(
|
||||
private async internalDeployBot(instance,
|
||||
accessToken,
|
||||
botId,
|
||||
name,
|
||||
|
@ -453,56 +446,67 @@ export class AzureDeployerService extends GBService {
|
|||
subscriptionId,
|
||||
appId
|
||||
) {
|
||||
let baseUrl = `https://management.azure.com/`;
|
||||
await this.registerProviders(subscriptionId, baseUrl, accessToken);
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let baseUrl = `https://management.azure.com/`;
|
||||
await this.registerProviders(subscriptionId, baseUrl, accessToken);
|
||||
|
||||
let appPassword = AzureDeployerService.getRndPassword();
|
||||
let appPassword = AzureDeployerService.getRndPassword();
|
||||
|
||||
let parameters = {
|
||||
location: location,
|
||||
sku: {
|
||||
name: "F0"
|
||||
},
|
||||
name: botId,
|
||||
kind: "sdk",
|
||||
properties: {
|
||||
description: description,
|
||||
displayName: name,
|
||||
endpoint: endpoint,
|
||||
iconUrl: iconUrl,
|
||||
luisAppIds: [nlpAppId],
|
||||
luisKey: nlpKey,
|
||||
msaAppId: appId,
|
||||
msaAppPassword: appPassword
|
||||
}
|
||||
};
|
||||
let parameters = {
|
||||
location: location,
|
||||
sku: {
|
||||
name: "F0"
|
||||
},
|
||||
name: botId,
|
||||
kind: "sdk",
|
||||
properties: {
|
||||
description: description,
|
||||
displayName: name,
|
||||
endpoint: endpoint,
|
||||
iconUrl: iconUrl,
|
||||
luisAppIds: [nlpAppId],
|
||||
luisKey: nlpKey,
|
||||
msaAppId: appId,
|
||||
msaAppPassword: appPassword
|
||||
}
|
||||
};
|
||||
|
||||
let httpClient = new ServiceClient();
|
||||
let httpClient = new ServiceClient();
|
||||
|
||||
let query = `subscriptions/${subscriptionId}/resourceGroups/${group}/providers/${
|
||||
this.provider
|
||||
}/botServices/${botId}?api-version=${AzureDeployerService.apiVersion}`;
|
||||
let url = UrlJoin(baseUrl, query);
|
||||
let req = this.createRequestObject(
|
||||
url,
|
||||
accessToken,
|
||||
JSON.stringify(parameters)
|
||||
);
|
||||
let res = await httpClient.sendRequest(req);
|
||||
let query = `subscriptions/${subscriptionId}/resourceGroups/${group}/providers/${
|
||||
this.provider
|
||||
}/botServices/${botId}?api-version=${AzureDeployerService.apiVersion}`;
|
||||
let url = UrlJoin(baseUrl, query);
|
||||
let req = this.createRequestObject(
|
||||
url,
|
||||
accessToken,
|
||||
JSON.stringify(parameters)
|
||||
);
|
||||
let res = await httpClient.sendRequest(req);
|
||||
|
||||
query = `subscriptions/${subscriptionId}/resourceGroups/${group}/providers/Microsoft.BotService/botServices/${botId}/channels/WebChatChannel/listChannelWithKeys?api-version=${
|
||||
AzureDeployerService.apiVersion
|
||||
}`;
|
||||
url = UrlJoin(baseUrl, query);
|
||||
req = this.createRequestObject(
|
||||
url,
|
||||
accessToken,
|
||||
JSON.stringify(parameters)
|
||||
);
|
||||
let resChannel = await httpClient.sendRequest(req);
|
||||
setTimeout(async () => {
|
||||
query = `subscriptions/${subscriptionId}/resourceGroups/${group}/providers/Microsoft.BotService/botServices/${botId}/channels/WebChatChannel/listChannelWithKeys?api-version=${
|
||||
AzureDeployerService.apiVersion
|
||||
}`;
|
||||
url = UrlJoin(baseUrl, query);
|
||||
req = this.createRequestObject(
|
||||
url,
|
||||
accessToken,
|
||||
JSON.stringify(parameters)
|
||||
);
|
||||
let resChannel = await httpClient.sendRequest(req);
|
||||
|
||||
let key = (resChannel.bodyAsJson as any).properties.properties.sites[0].key;
|
||||
return [appPassword, key];
|
||||
console.log(resChannel.bodyAsText);
|
||||
let key = (resChannel.bodyAsJson as any).properties.properties.sites[0]
|
||||
.key;
|
||||
|
||||
instance.marketplacePassword = appPassword
|
||||
instance.webchatKey = key
|
||||
|
||||
resolve(instance)
|
||||
|
||||
}, 10000);
|
||||
});
|
||||
}
|
||||
|
||||
private createRequestObject(url: string, accessToken: string, body) {
|
||||
|
@ -735,20 +739,6 @@ export class AzureDeployerService extends GBService {
|
|||
return `sa${generated}`;
|
||||
}
|
||||
|
||||
private static getRndBotId() {
|
||||
const passwordGenerator = new PasswordGenerator();
|
||||
const options = {
|
||||
upperCaseAlpha: false,
|
||||
lowerCaseAlpha: true,
|
||||
number: true,
|
||||
specialCharacter: false,
|
||||
minimumLength: 8,
|
||||
maximumLength: 8
|
||||
};
|
||||
let generated = passwordGenerator.generatePassword(options);
|
||||
return `${generated}`;
|
||||
}
|
||||
|
||||
private static getRndPassword() {
|
||||
const passwordGenerator = new PasswordGenerator();
|
||||
const options = {
|
||||
|
@ -760,6 +750,7 @@ export class AzureDeployerService extends GBService {
|
|||
maximumLength: 14
|
||||
};
|
||||
let password = passwordGenerator.generatePassword(options);
|
||||
password = password.replace("=", "");
|
||||
return password;
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,9 @@ export class GBConfigService {
|
|||
case "CLOUD_USERNAME":
|
||||
value = undefined;
|
||||
break;
|
||||
case "BOT_ID":
|
||||
value = undefined;
|
||||
break;
|
||||
case "CLOUD_PASSWORD":
|
||||
value = undefined;
|
||||
break;
|
||||
|
|
|
@ -307,6 +307,7 @@ export class GBCoreService implements IGBCoreService {
|
|||
`STORAGE_NAME=${instance.storageName}\n` +
|
||||
`STORAGE_USERNAME=${instance.storageUsername}\n` +
|
||||
`STORAGE_PASSWORD=${instance.storagePassword}\n`+
|
||||
`STORAGE_SYNC=true\n`+
|
||||
`CLOUD_USERNAME=${instance.cloudUsername}\n` +
|
||||
`CLOUD_PASSWORD=${instance.cloudPassword}\n` +
|
||||
`CLOUD_SUBSCRIPTIONID=${instance.cloudSubscriptionId}\n` +
|
||||
|
|
|
@ -102,8 +102,13 @@ export class GBServer {
|
|||
await core.initDatabase();
|
||||
} catch (error) {
|
||||
logger.info(`Deploying cognitive infrastructure...`);
|
||||
let azureDeployer = new AzureDeployerService();
|
||||
bootInstance = await azureDeployer.deployFarm(proxyAddress);
|
||||
try {
|
||||
let azureDeployer = new AzureDeployerService();
|
||||
bootInstance = await azureDeployer.deployFarm(proxyAddress);
|
||||
} catch (error) {
|
||||
logger.warn("Error while deploying to the cloud, please, cleanup any objects created before running again.")
|
||||
throw error;
|
||||
}
|
||||
core.writeEnv(bootInstance);
|
||||
logger.info(`File .env written, starting...`);
|
||||
GBConfigService.init();
|
||||
|
|
Loading…
Add table
Reference in a new issue