Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit 09d2523

Browse files
authored
support endpoint via arg or cli config for luis and qnamaker build (#845)
* support endpoint via arg or cli config * add tests for override endpoint from config and fix one typo
1 parent f95fb98 commit 09d2523

File tree

8 files changed

+145
-17
lines changed

8 files changed

+145
-17
lines changed

packages/luis/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ OPTIONS
368368
--suffix=suffix Environment name as a suffix identifier to include in LUIS app name. Defaults to
369369
current logged in user alias
370370
371+
--endpoint Luis authoring endpoint for publishing
372+
371373
EXAMPLE
372374
373375
$ bf luis:build --in {INPUT_FILE_OR_FOLDER} --authoringKey {AUTHORING_KEY} --botName {BOT_NAME} --dialog

packages/luis/src/commands/luis/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export default class LuisBuild extends Command {
4141
luConfig: flags.string({description: 'Path to config for lu build which can contain switches for arguments'}),
4242
deleteOldVersion: flags.boolean({description: 'Delete old version of LUIS application after building new one.'}),
4343
log: flags.boolean({description: 'write out log messages to console', default: false}),
44+
endpoint: flags.string({description: 'Luis authoring endpoint for publishing'})
4445
}
4546

4647
async run() {
@@ -67,7 +68,6 @@ export default class LuisBuild extends Command {
6768

6869
// Flags override userConfig
6970
let luisBuildFlags = Object.keys(LuisBuild.flags)
70-
luisBuildFlags.push('endpoint')
7171

7272
let {inVal, authoringKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, luConfig, deleteOldVersion, log, endpoint}
7373
= await utils.processInputs(flags, luisBuildFlags, this.config.configDir)

packages/luis/test/commands/luis/build.test.ts

Lines changed: 63 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -653,30 +653,30 @@ describe('luis:build update application succeed with parameters set from luconfi
653653
before(async function () {
654654
await fs.ensureDir(path.join(__dirname, './../../../results/'))
655655

656-
nock('https://westus.api.cognitive.microsoft.com')
656+
nock('https://chinaeast2.api.cognitive.azure.cn')
657657
.get(uri => uri.includes('apps'))
658658
.reply(200, [{
659659
name: 'MyProject(development)-test.en-us.lu',
660660
id: 'f8c64e2a-8635-3a09-8f78-39d7adc76ec5'
661661
}])
662662

663-
nock('https://westus.api.cognitive.microsoft.com')
663+
nock('https://chinaeast2.api.cognitive.azure.cn')
664664
.get(uri => uri.includes('apps'))
665665
.reply(200, {
666666
name: 'MyProject(development)-test.en-us.lu',
667667
id: 'f8c64e2a-8635-3a09-8f78-39d7adc76ec5',
668668
activeVersion: '0.1'
669669
})
670670

671-
nock('https://westus.api.cognitive.microsoft.com')
671+
nock('https://chinaeast2.api.cognitive.azure.cn')
672672
.get(uri => uri.includes('export'))
673673
.reply(200, existingLuisApp)
674674

675-
nock('https://westus.api.cognitive.microsoft.com')
675+
nock('https://chinaeast2.api.cognitive.azure.cn')
676676
.post(uri => uri.includes('import'))
677677
.reply(201, '0.2')
678678

679-
nock('https://westus.api.cognitive.microsoft.com')
679+
nock('https://chinaeast2.api.cognitive.azure.cn')
680680
.get(uri => uri.includes('apps'))
681681
.reply(200, [
682682
{
@@ -687,18 +687,18 @@ describe('luis:build update application succeed with parameters set from luconfi
687687
}
688688
])
689689

690-
nock('https://westus.api.cognitive.microsoft.com')
690+
nock('https://chinaeast2.api.cognitive.azure.cn')
691691
.delete(uri => uri.includes('apps'))
692692
.reply(200)
693693

694-
nock('https://westus.api.cognitive.microsoft.com')
694+
nock('https://chinaeast2.api.cognitive.azure.cn')
695695
.post(uri => uri.includes('train'))
696696
.reply(202, {
697697
statusId: 2,
698698
status: 'UpToDate'
699699
})
700700

701-
nock('https://westus.api.cognitive.microsoft.com')
701+
nock('https://chinaeast2.api.cognitive.azure.cn')
702702
.get(uri => uri.includes('train'))
703703
.reply(200, [{
704704
modelId: '99999',
@@ -709,7 +709,7 @@ describe('luis:build update application succeed with parameters set from luconfi
709709
}
710710
}])
711711

712-
nock('https://westus.api.cognitive.microsoft.com')
712+
nock('https://chinaeast2.api.cognitive.azure.cn')
713713
.post(uri => uri.includes('publish'))
714714
.reply(201, {
715715
versionId: '0.2',
@@ -862,4 +862,58 @@ describe('luis:build update application succeed when activeVersion is null', ()
862862
expect(ctx.stdout).to.contain('publishing version=0.2')
863863
expect(ctx.stdout).to.contain('publishing finished')
864864
})
865+
})
866+
867+
describe('luis:build create a new application successfully with endpoint override', () => {
868+
before(function () {
869+
nock('https://chinaeast2.api.cognitive.azure.cn')
870+
.get(uri => uri.includes('apps'))
871+
.reply(200, [{
872+
name: 'test.en-us.lu',
873+
id: 'f8c64e2a-1111-3a09-8f78-39d7adc76ec5'
874+
}])
875+
876+
nock('https://chinaeast2.api.cognitive.azure.cn')
877+
.post(uri => uri.includes('import'))
878+
.reply(201, {
879+
appId: 'f8c64e2a-2222-3a09-8f78-39d7adc76ec5'
880+
})
881+
882+
nock('https://chinaeast2.api.cognitive.azure.cn')
883+
.post(uri => uri.includes('train'))
884+
.reply(202, {
885+
statusId: 2,
886+
status: 'UpToDate'
887+
})
888+
889+
nock('https://chinaeast2.api.cognitive.azure.cn')
890+
.get(uri => uri.includes('train'))
891+
.reply(200, [{
892+
modelId: '99999',
893+
details: {
894+
statusId: 0,
895+
status: 'Success',
896+
exampleCount: 0
897+
}
898+
}])
899+
900+
nock('https://chinaeast2.api.cognitive.azure.cn')
901+
.post(uri => uri.includes('publish'))
902+
.reply(201, {
903+
versionId: '0.2',
904+
isStaging: true
905+
})
906+
})
907+
908+
test
909+
.stdout()
910+
.command(['luis:build', '--in', './test/fixtures/testcases/lubuild/sandwich//lufiles/sandwich.en-us.lu', '--authoringKey', uuidv1(), '--botName', 'test', '--log', '--suffix', 'development', '--endpoint', 'https://chinaeast2.api.cognitive.azure.cn/'])
911+
.it('should create a new application successfully with endpoint override', ctx => {
912+
expect(ctx.stdout).to.contain('Handling applications...')
913+
expect(ctx.stdout).to.contain('Creating LUIS.ai application')
914+
expect(ctx.stdout).to.contain('training version=0.1')
915+
expect(ctx.stdout).to.contain('waiting for training for version=0.1')
916+
expect(ctx.stdout).to.contain('publishing version=0.1')
917+
expect(ctx.stdout).to.contain('publishing finished')
918+
})
865919
})

packages/luis/test/fixtures/testcases/lubuild/luconfig/lufiles/luconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"deleteOldVersion": true,
55
"out": "./../../../../../../results",
66
"dialog": "multiLanguage",
7+
"endpoint": "https://chinaeast2.api.cognitive.azure.cn",
78
"models": [
89
"./test.lu"
910
]

packages/qnamaker/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,16 @@ OPTIONS
140140
141141
--log write out log messages to console
142142
143-
--luConfig=luConfig Path to config for qnamaker build which can contain switches for arguments
143+
--qnaConfig=qnaConfig Path to config for qnamaker build which can contain switches for arguments
144144
145145
--region=region [default: westus] Overrides public endpoint
146146
https://<region>.api.cognitive.microsoft.com/qnamaker/v4.0/
147147
148148
--suffix=suffix Environment name as a suffix identifier to include in qnamaker kb name.
149149
Defaults to current logged in user alias
150150
151+
--endpoint=endpoint Qnamaker authoring endpoint for publishing
152+
151153
EXAMPLE
152154
153155
$ bf qnamaker:build --in {INPUT_FILE_OR_FOLDER} --subscriptionKey {SUBSCRIPTION_KEY} --botName {BOT_NAME}

packages/qnamaker/src/commands/qnamaker/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export default class QnamakerBuild extends Command {
4141
force: flags.boolean({char: 'f', description: 'If --out flag is provided, overwrites relevant dialog file', default: false}),
4242
qnaConfig: flags.string({description: 'Path to config for qna build which can contain switches for arguments'}),
4343
log: flags.boolean({description: 'write out log messages to console', default: false}),
44+
endpoint: flags.string({description: 'Qnamaker authoring endpoint for publishing'})
4445
}
4546

4647
async run() {
@@ -67,7 +68,6 @@ export default class QnamakerBuild extends Command {
6768

6869
// Flags override userConfig
6970
let qnamakerBuildFlags = Object.keys(QnamakerBuild.flags)
70-
qnamakerBuildFlags.push('endpoint')
7171

7272
let {inVal, subscriptionKey, botName, region, out, defaultCulture, fallbackLocale, suffix, dialog, force, log, endpoint}
7373
= await processFlags(flags, qnamakerBuildFlags, this.config.configDir)

packages/qnamaker/test/commands/qnamaker/build.test.ts

Lines changed: 73 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ describe('qnamaker:build update knowledge base successfully with parameters set
550550
before(async function () {
551551
await fs.ensureDir(path.join(__dirname, './../../../results/'))
552552

553-
nock('https://westus.api.cognitive.microsoft.com')
553+
nock('https://chinaeast2.api.cognitive.azure.cn')
554554
.get(uri => uri.includes('qnamaker'))
555555
.reply(200, {
556556
knowledgebases:
@@ -561,7 +561,7 @@ describe('qnamaker:build update knowledge base successfully with parameters set
561561
}]
562562
})
563563

564-
nock('https://westus.api.cognitive.microsoft.com')
564+
nock('https://chinaeast2.api.cognitive.azure.cn')
565565
.get(uri => uri.includes('knowledgebases'))
566566
.reply(200, {
567567
qnaDocuments: [{
@@ -573,15 +573,15 @@ describe('qnamaker:build update knowledge base successfully with parameters set
573573
}]
574574
})
575575

576-
nock('https://westus.api.cognitive.microsoft.com')
576+
nock('https://chinaeast2.api.cognitive.azure.cn')
577577
.put(uri => uri.includes('knowledgebases'))
578578
.reply(204)
579579

580-
nock('https://westus.api.cognitive.microsoft.com')
580+
nock('https://chinaeast2.api.cognitive.azure.cn')
581581
.post(uri => uri.includes('knowledgebases'))
582582
.reply(204)
583583

584-
nock('https://westus.api.cognitive.microsoft.com')
584+
nock('https://chinaeast2.api.cognitive.azure.cn')
585585
.get(uri => uri.includes('endpointkeys'))
586586
.reply(200, {
587587
primaryEndpointKey: 'xxxx',
@@ -606,4 +606,72 @@ describe('qnamaker:build update knowledge base successfully with parameters set
606606
expect(await compareFiles('./../../../results/test.en-us.qna.dialog', './../../fixtures/testcases/qnabuild/sandwich/dialogs/test.en-us.qna.dialog')).to.be.true
607607
expect(await compareFiles('./../../../results/test.qna.dialog', './../../fixtures/testcases/qnabuild/sandwich/dialogs/test.qna.dialog')).to.be.true
608608
})
609+
})
610+
611+
describe('qnamaker:build create a new knowledge base successfully with endpoint override', () => {
612+
before(function () {
613+
nock('https://chinaeast2.api.cognitive.azure.cn')
614+
.get(uri => uri.includes('qnamaker'))
615+
.reply(200, {
616+
knowledgebases:
617+
[{
618+
name: 'test.en-us.qna',
619+
id: 'f8c64e2a-1111-3a09-8f78-39d7adc76ec5',
620+
hostName: 'https://myqnamakerbot.azurewebsites.net'
621+
}]
622+
})
623+
624+
nock('https://chinaeast2.api.cognitive.azure.cn')
625+
.post(uri => uri.includes('createasync'))
626+
.reply(202, {
627+
operationId: 'f8c64e2a-aaaa-3a09-8f78-39d7adc76ec5'
628+
})
629+
630+
nock('https://chinaeast2.api.cognitive.azure.cn')
631+
.get(uri => uri.includes('operations'))
632+
.reply(200, {
633+
operationState: 'Succeeded',
634+
resourceLocation: 'a/b/f8c64e2a-2222-3a09-8f78-39d7adc76ec5'
635+
})
636+
637+
nock('https://chinaeast2.api.cognitive.azure.cn')
638+
.put(uri => uri.includes('knowledgebases'))
639+
.reply(204)
640+
641+
nock('https://chinaeast2.api.cognitive.azure.cn')
642+
.post(uri => uri.includes('knowledgebases'))
643+
.reply(204)
644+
645+
nock('https://chinaeast2.api.cognitive.azure.cn')
646+
.get(uri => uri.includes('knowledgebases'))
647+
.reply(200, {
648+
id: 'f8c64e2a-1111-3a09-8f78-39d7adc76ec5',
649+
hostName: 'https://myqnamakerbot.azurewebsites.net'
650+
})
651+
652+
nock('https://chinaeast2.api.cognitive.azure.cn')
653+
.put(uri => uri.includes('alterations'))
654+
.reply(204)
655+
656+
nock('https://chinaeast2.api.cognitive.azure.cn')
657+
.get(uri => uri.includes('endpointkeys'))
658+
.reply(200, {
659+
primaryEndpointKey: 'xxxx',
660+
secondaryEndpointKey: 'yyyy'
661+
})
662+
})
663+
664+
test
665+
.stdout()
666+
.command(['qnamaker:build', '--in', './test/fixtures/testcases/qnabuild/sandwich/qnafiles/sandwich.en-us.qna', '--subscriptionKey', uuidv1(), '--botName', 'test', '--log', '--suffix', 'development', '--endpoint', 'https://chinaeast2.api.cognitive.azure.cn/qnamaker/v4.0'])
667+
.it('should create a new knowledge base successfully with endpoint override', ctx => {
668+
expect(ctx.stdout).to.contain('Handling qnamaker knowledge bases...')
669+
expect(ctx.stdout).to.contain('Creating qnamaker KB: test(development).en-us.qna...')
670+
expect(ctx.stdout).to.contain('Creating finished')
671+
expect(ctx.stdout).to.contain('Publishing kb')
672+
expect(ctx.stdout).to.contain('Publishing finished')
673+
expect(ctx.stdout).to.contain('Replacing alterations...')
674+
expect(ctx.stdout).to.contain('xxxx')
675+
expect(ctx.stdout).to.contain('yyyy')
676+
})
609677
})

packages/qnamaker/test/fixtures/testcases/qnabuild/sandwich/qnafiles/qnaconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"dialog": "multiLanguage",
66
"suffix": "development",
77
"log": true,
8+
"endpoint": "https://chinaeast2.api.cognitive.azure.cn/qnamaker/v4.0",
89
"models": [
910
"./sandwich2.en-us.qna"
1011
]

0 commit comments

Comments
 (0)