Пример #1
0
        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));
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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));
        }