protected override void ProcessRecord() { ProgressRecord pr = new ProgressRecord(1, "Deploy Web Service", "Predictive Experiment Name: "); pr.CurrentOperation = "Getting Predictive Experiment..."; pr.PercentComplete = 1; WriteProgress(pr); string rawJson = string.Empty; Experiment exp = Sdk.GetExperimentById(GetWorkspaceSetting(), PredictiveExperimentId, out rawJson); pr.StatusDescription += exp.Description; pr.CurrentOperation = "Deploying web service"; pr.PercentComplete = 2; WriteProgress(pr); WebServiceCreationStatus status = Sdk.DeployWebServiceFromPredictiveExperiment(GetWorkspaceSetting(), PredictiveExperimentId, Update.IsPresent); while (status.Status != "Completed") { if (pr.PercentComplete == 100) { pr.PercentComplete = 1; } pr.PercentComplete++; WriteProgress(pr); status = Sdk.GetWebServiceCreationStatus(GetWorkspaceSetting(), status.ActivityId); } pr.PercentComplete = 100; WriteProgress(pr); WriteObject(Sdk.GetWebServicesById(GetWorkspaceSetting(), status.WebServiceGroupId)); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var azureToken = request.DataStore.GetJson("AzureToken")["access_token"].ToString(); var subscription = request.DataStore.GetJson("SelectedSubscription")["SubscriptionId"].ToString(); var workspaceName = request.DataStore.GetValue("WorkspaceName"); var experimentName = request.DataStore.GetValue("ExperimentName"); var webserviceJson = request.DataStore.GetValue("AzureMLWebService"); ManagementSDK azuremlClient = new ManagementSDK(); var workspaces = azuremlClient.GetWorkspacesFromRdfe(azureToken, subscription); var workspace = workspaces.SingleOrDefault(p => p.Name.ToLowerInvariant() == workspaceName.ToLowerInvariant()); if (workspace == null) { return(new ActionResponse(ActionStatus.Failure, null, null, string.Empty, "Workspace not found")); } var workspaceSettings = new WorkspaceSetting() { AuthorizationToken = workspace.AuthorizationToken.PrimaryToken, Location = workspace.Region, WorkspaceId = workspace.Id }; var experiments = azuremlClient.GetExperiments(workspaceSettings); var experiment = experiments.LastOrDefault(p => p.Description.ToLowerInvariant() == experimentName.ToLowerInvariant()); if (experiment == null) { return(new ActionResponse(ActionStatus.Failure, null, null, string.Empty, "Experiment not found")); } WebServiceCreationStatus webservice = JsonConvert.DeserializeObject <WebServiceCreationStatus>(webserviceJson); while (true) { await Task.Delay(5000); webservice = azuremlClient.GetWebServiceCreationStatus(workspaceSettings, webservice.ActivityId); if ("Completed" == webservice.Status) { return(new ActionResponse(ActionStatus.Success)); } else if ("Pending" == webservice.Status) { continue; } return(new ActionResponse(ActionStatus.Failure, webservice)); } }
public WebServiceCreationStatus GetWebServiceCreationStatus(WorkspaceSetting setting, string activityId) { ValidateWorkspaceSetting(setting); Util.AuthorizationToken = setting.AuthorizationToken; string queryUrl = StudioApi + string.Format("workspaces/{0}/experiments/{1}/webservice", setting.WorkspaceId, activityId); HttpResult hr = Util.HttpGet(queryUrl).Result; if (hr.IsSuccess) { WebServiceCreationStatus status = jss.Deserialize <WebServiceCreationStatus>(hr.Payload); return(status); } else { throw new AmlRestApiException(hr); } }
public WebServiceCreationStatus DeployWebServiceFromPredictiveExperiment(WorkspaceSetting setting, string predictiveExperimentId, bool updateExistingWebServiceDefaultEndpoint) { ValidateWorkspaceSetting(setting); Util.AuthorizationToken = setting.AuthorizationToken; string queryUrl = StudioApi + string.Format("workspaces/{0}/experiments/{1}/webservice?generateNewPortNames=false{2}", setting.WorkspaceId, predictiveExperimentId, updateExistingWebServiceDefaultEndpoint ? "&updateExistingWebService=true" : ""); HttpResult hr = Util.HttpPost(queryUrl, string.Empty).Result; if (hr.IsSuccess) { WebServiceCreationStatus status = jss.Deserialize <WebServiceCreationStatus>(hr.Payload); return(status); } else { throw new AmlRestApiException(hr); } }
protected override void ProcessRecord() { ProgressRecord pr = new ProgressRecord(1, "Deploy Web Service", "Predictive Experiment Name: "); pr.CurrentOperation = "Getting Predictive Experiment..."; pr.PercentComplete = 1; WriteProgress(pr); string rawJson = string.Empty; Experiment exp = Sdk.GetExperimentById(GetWorkspaceSetting(), PredictiveExperimentId, out rawJson); if (exp.Status.StatusCode != "Finished") { // if (exp.Status.StatusCode == "InDraft") // WriteWarning("Experiment is in draft mode. You should run the experiment first before deploying the web service."); // else //throw new Exception(string.Format("Experiment status is {0}. Web service cannot be created.", exp.Status.StatusCode)); throw new Exception("Experiment must be in Finished state. The current state is: " + exp.Status.StatusCode); } pr.StatusDescription += exp.Description; pr.CurrentOperation = "Deploying web service"; pr.PercentComplete = 2; WriteProgress(pr); WebServiceCreationStatus status = Sdk.DeployWebServiceFromPredictiveExperiment(GetWorkspaceSetting(), PredictiveExperimentId, Update.IsPresent); while (status.Status != "Completed") { if (pr.PercentComplete == 100) { pr.PercentComplete = 1; } pr.PercentComplete++; WriteProgress(pr); status = Sdk.GetWebServiceCreationStatus(GetWorkspaceSetting(), status.ActivityId); } pr.PercentComplete = 100; WriteProgress(pr); WriteObject(Sdk.GetWebServicesById(GetWorkspaceSetting(), status.WebServiceGroupId)); }