diff --git a/Ardvark/Aardvark.csproj b/Ardvark/Aardvark.csproj index 00ea8d4..67bd4e3 100644 --- a/Ardvark/Aardvark.csproj +++ b/Ardvark/Aardvark.csproj @@ -56,15 +56,20 @@ Ardvark_TemporaryKey.pfx - true + false false + + LocalIntranet + + + Properties\app.manifest + - - ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll - True + + ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll @@ -92,6 +97,7 @@ + @@ -100,14 +106,11 @@ Always Designer - - App.config - - - App.config - - + + Designer + + diff --git a/Ardvark/Domain/Processes.cs b/Ardvark/Domain/Processes.cs index 5ce65cd..109d404 100644 --- a/Ardvark/Domain/Processes.cs +++ b/Ardvark/Domain/Processes.cs @@ -135,10 +135,11 @@ namespace Aardvark.Domain { importViewModel.ImportResponseViewModel = result; importViewModel.Success = true; - importViewModel.Message = "Import succeeded for '" + zipPath + "'"; + importViewModel.Message = "Import succeeded for '" + zipPath + "'"; + importViewModel.PromoteJobId = result.promoteJobId; } else - { + { importViewModel.ImportResponseViewModel = null; importViewModel.Success = false; importViewModel.Message = response.ReasonPhrase; @@ -183,5 +184,34 @@ namespace Aardvark.Domain return response; } } + + /// + /// get the promote status of specific promote job id + /// + /// + /// PromoteStatusViewModel + public PromoteStatusViewModel GetPromoteStatus(string promoteJobId) + { + PromoteStatusViewModel vm = null; + + using (var client = new HttpClient()) + { + client.BaseAddress = new Uri(_apiurl); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _login); + + HttpResponseMessage response = client.GetAsync("_apis/work/processAdmin/processes/status/" + promoteJobId).Result; + + if (response.IsSuccessStatusCode) + { + vm = response.Content.ReadAsAsync().Result; + } + + response.Dispose(); + + return vm; + } + } } } diff --git a/Ardvark/Program.cs b/Ardvark/Program.cs index e4365e8..fabd389 100644 --- a/Ardvark/Program.cs +++ b/Ardvark/Program.cs @@ -8,6 +8,7 @@ using System.IO; using System.IO.Compression; using Aardvark.ViewModels; using Aardvark.Domain; +using System.Threading; namespace ImportExportProcessExamples { @@ -118,7 +119,7 @@ namespace ImportExportProcessExamples Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Importing Project"); - ImportSingle(_source); + var i = ImportSingle(_source); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Done"); @@ -433,30 +434,15 @@ namespace ImportExportProcessExamples else { return; - } - + } + + var status = 0; + foreach (var item in list) { - Console.ForegroundColor = ConsoleColor.White; - Console.Write("Importing process '" + item.ZipFilePath + "': "); + status = ImportSingle(item.ZipFilePath); - ImportViewModel vm = process.ImportSingleProcessRESTCall(item.ZipFilePath); - - if (!vm.Success) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Error: " + vm.Message); - - foreach (var result in vm.validationResults) - { - Console.WriteLine("Line " + result.line + " : " + result.description); - } - } - else - { - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine("Success"); - } + if (status == 0) break; } process = null; @@ -511,29 +497,29 @@ namespace ImportExportProcessExamples process = null; } - private static void ImportSingle(string zipFile) + private static int ImportSingle(string zipFile) { if (!File.Exists(zipFile)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: Invlaid argument, zip file not found"); - return; + return 0; } Processes process = new Processes(_appConfig); Console.ForegroundColor = ConsoleColor.White; - Console.Write("Importing process '" + zipFile + "': "); + Console.Write("importing process '" + zipFile + "': "); - ImportViewModel vm = process.ImportSingleProcessRESTCall(zipFile); + ImportViewModel importVm = process.ImportSingleProcessRESTCall(zipFile); - if (!vm.Success) + if (!importVm.Success) { Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Error: " + vm.Message); + Console.WriteLine("Error: " + importVm.Message); Console.WriteLine(""); - foreach (var item in vm.validationResults) + foreach (var item in importVm.validationResults) { Console.WriteLine("Line " + item.line + " : " + item.description); } @@ -543,10 +529,46 @@ namespace ImportExportProcessExamples Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Success"); - - } + Console.ForegroundColor = ConsoleColor.White; + Console.Write("checking promote status..."); + + PromoteStatusViewModel promoteStatusVm = new PromoteStatusViewModel() { complete = 0 }; + + do + { + //check the status of the promote job + promoteStatusVm = process.GetPromoteStatus(importVm.PromoteJobId); + + Console.Write("."); + + if (promoteStatusVm == null) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("Error: promote json package is empty"); + break; + } + + Thread.Sleep(10000); + } + while (promoteStatusVm.complete == 0); + + Thread.Sleep(10000); + + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("Success"); + + Console.ForegroundColor = ConsoleColor.White; + Console.Write("adding a buffer to promote process (this may take a couple minutes): "); + + Thread.Sleep(120000); + + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("Success"); + } process = null; + + return 1; } public static void ShowHelp() diff --git a/Ardvark/ViewModels/ImportViewModel.cs b/Ardvark/ViewModels/ImportViewModel.cs index 02166d7..9abcbe1 100644 --- a/Ardvark/ViewModels/ImportViewModel.cs +++ b/Ardvark/ViewModels/ImportViewModel.cs @@ -11,6 +11,7 @@ namespace Aardvark.ViewModels public ImportResponseViewModel ImportResponseViewModel { get; set; } = null; public string Message { get; set; } public bool Success { get; set; } = false; + public string PromoteJobId { get; set; } = "0"; public Validationresult[] validationResults { get; set; } } } diff --git a/Ardvark/ViewModels/PromoteStatusViewModel.cs b/Ardvark/ViewModels/PromoteStatusViewModel.cs new file mode 100644 index 0000000..d0e3555 --- /dev/null +++ b/Ardvark/ViewModels/PromoteStatusViewModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Aardvark.ViewModels +{ + public class PromoteStatusViewModel + { + public string id { get; set; } + public int complete { get; set; } + public int pending { get; set; } + public int remainingRetries { get; set; } + public bool successful { get; set; } + public string message { get; set; } + } +} diff --git a/Ardvark/packages.config b/Ardvark/packages.config index ba19ad6..6e7da69 100644 --- a/Ardvark/packages.config +++ b/Ardvark/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file