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

T jackmonas/authentication #1533

Merged
merged 5 commits into from
Aug 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/VSCodeExtension/package-lock.json.v.template

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 11 additions & 5 deletions src/VSCodeExtension/package.json.v.template
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
"onCommand:quantum.openDocumentation",
"onCommand:quantum.installIQSharp",
"onCommand:quantum.connectToAzureAccount",
"onCommand:quantum.disconnectFromAzureAccount",
"onCommand:quantum.changeWorkspace",
"onCommand:quantum.submitJob",
"onCommand:quantum.getJob",
Expand Down Expand Up @@ -61,10 +60,6 @@
"command": "quantum.connectToAzureAccount",
"title": "Q#: Connect to Azure Account"
},
{
"command": "quantum.disconnectFromAzureAccount",
"title": "Q#: Disconnect from Azure Account"
},
{
"command": "quantum.changeWorkspace",
"title": "Q#: Change Workspace"
Expand Down Expand Up @@ -161,6 +156,16 @@
]
},
"menus": {
"commandPalette": [
{
"command": "quantum.changeAzureAccount",
"when": "showChangeAzureAccount == true"
},
{
"command": "quantum.connectToAzureAccount",
"when": "showChangeAzureAccount == false"
}
],
"view/title": [
{
"command": "quantum-jobs.clearJobs",
Expand Down Expand Up @@ -198,6 +203,7 @@
"decompress-zip": "^0.2.2",
"dotnet": "^1.1.4",
"edge-js": "^18.4.0",
"find-open-port": "^2.0.3",
"fs-extra": "^8.1.0",
"g": "^2.0.1",
"install": "^0.13.0",
Expand Down
51 changes: 20 additions & 31 deletions src/VSCodeExtension/src/commands.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

"use strict";
import * as vscode from "vscode";
import * as cp from "child_process";
Expand Down Expand Up @@ -216,12 +216,12 @@ export async function getAzureQuantumConfig():Promise<configFileInfo> {
}


async function getWorkspaceInfo(context: vscode.ExtensionContext, credential:InteractiveBrowserCredential | AzureCliCredential, workSpaceStatusBarItem: vscode.StatusBarItem, totalSteps:number){
export async function getWorkspaceInfo(context: vscode.ExtensionContext, credential:InteractiveBrowserCredential | AzureCliCredential, workspaceStatusBarItem: vscode.StatusBarItem, totalSteps:number){
let workspaceInfo:workspaceInfo|undefined;
// remove any previous account info
context.workspaceState.update("workspaceInfo", undefined);
try{
await getWorkspaceFromUser(context, credential, workSpaceStatusBarItem, totalSteps);
await getWorkspaceFromUser(context, credential, workspaceStatusBarItem, totalSteps);
workspaceInfo = context.workspaceState.get("workspaceInfo");
}
catch{
Expand All @@ -236,13 +236,6 @@ async function getWorkspaceInfo(context: vscode.ExtensionContext, credential:Int
}



export async function deleteAzureWorkspaceInfo(context: vscode.ExtensionContext) {
context.workspaceState.update("workspaceInfo", undefined);
vscode.window.showInformationMessage("Successfully Disconnected");
}


function getQuantumJobClient(workspaceInfo: workspaceInfo, credential: any) {
const endpoint = "https://" + workspaceInfo["location"] + ".quantum.azure.com";
return new QuantumJobClient(
Expand All @@ -263,13 +256,13 @@ export async function submitJob(
dotNetSdk: DotnetInfo,
jobsSubmittedProvider: LocalSubmissionsProvider,
credential: InteractiveBrowserCredential | AzureCliCredential,
workSpaceStatusBarItem: vscode.StatusBarItem,
workspaceStatusBarItem: vscode.StatusBarItem,
workspaceInfo:workspaceInfo|undefined,
projectFiles: any[],
totalSteps: number
) {
if (!workspaceInfo){
workspaceInfo = await getWorkspaceInfo(context, credential,workSpaceStatusBarItem, totalSteps);
workspaceInfo = await getWorkspaceInfo(context, credential,workspaceStatusBarItem, totalSteps);
}
if (!workspaceInfo){
return;
Expand Down Expand Up @@ -425,10 +418,6 @@ async function getJob(context: vscode.ExtensionContext,
{
let jobResponse:any;

let cachedJobs = context.workspaceState.get("cachedJobs") as any;
if (cachedJobs && cachedJobs[jobId]) {
return cachedJobs[jobId];
}
await vscode.window.withProgress(
{
location: vscode.ProgressLocation.Notification,
Expand All @@ -437,10 +426,6 @@ async function getJob(context: vscode.ExtensionContext,
},
async (progress, token2) => {

if (!cachedJobs) {
cachedJobs = {};
}


const quantumJobClient = getQuantumJobClient(workspaceInfo, credential);

Expand All @@ -459,12 +444,6 @@ async function getJob(context: vscode.ExtensionContext,
}
return;
}

// if job suceeded store output
if(jobResponse.status ==="Succeeded"){
cachedJobs[jobId]= jobResponse;
context.workspaceState.update("cachedJobs", cachedJobs);
}
}
);
return jobResponse;
Expand All @@ -476,7 +455,7 @@ async function getJob(context: vscode.ExtensionContext,
export async function getJobResults(
context: vscode.ExtensionContext,
credential: InteractiveBrowserCredential | AzureCliCredential,
workSpaceStatusBarItem: vscode.StatusBarItem,
workspaceStatusBarItem: vscode.StatusBarItem,
jobId?: string

) {
Expand All @@ -488,7 +467,7 @@ export async function getJobResults(
// if user needs to select a workspace, show steps in title
const inputTitle = workspaceInfo?"Enter a Job Id": "Enter Job Id (4/4)";
if(configIssue){
workspaceInfo = await getWorkspaceInfo(context, credential,workSpaceStatusBarItem, 4);
workspaceInfo = await getWorkspaceInfo(context, credential,workspaceStatusBarItem, 4);
}
if(!workspaceInfo){
return;
Expand Down Expand Up @@ -552,6 +531,16 @@ export async function getJobResults(
}
openReadOnlyJson({ label: `results-${job.name}`, fullId: jobId as string}, refinedJson);

}
else if(outputString.includes("Error"))
{
try{
const message = outputString.split("<Message>")[1].split("</Message>")[0];
vscode.window.showErrorMessage(message);
}
catch{
vscode.window.showErrorMessage("Error retrieving job.");
}
}
}).on("error", function (err) {
vscode.window.showErrorMessage(err.message);
Expand All @@ -563,15 +552,15 @@ export async function getJobResults(
export async function getJobDetails(
context: vscode.ExtensionContext,
credential: InteractiveBrowserCredential | AzureCliCredential,
jobId: string,
workSpaceStatusBarItem: vscode.StatusBarItem
workspaceStatusBarItem: vscode.StatusBarItem,
jobId: string
) {
let {workspaceInfo, configIssue} = await getAzureQuantumConfig();
if(configIssue===configIssueEnum.MULTIPLE_CONFIGS){
return;
}
if(configIssue){
workspaceInfo = await getWorkspaceInfo(context, credential,workSpaceStatusBarItem, 5);
workspaceInfo = await getWorkspaceInfo(context, credential,workspaceStatusBarItem, 5);
}
if(!workspaceInfo){
return;
Expand Down
Loading