public async Task ListAsync(string packageName = null) { try { var requestUriTemp = string.IsNullOrWhiteSpace(packageName) ? ClusterConnection.CreateUri($"/ImageStore") : ClusterConnection.CreateUri($"/ImageStore/{packageName}"); var queryParams = new Dictionary <string, string> { ["api-version"] = Constants.ApiVersion }; var requestUri = QueryHelpers.AddQueryString(requestUriTemp.ToString(), queryParams); var response = await ClusterConnection.HttpClient.GetAsync(requestUri).ConfigureAwait(false); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public async Task <bool> RegisterAsync(string packageName) { try { var requestUriTemp = ClusterConnection.CreateUri($"/ApplicationTypes/$/Provision").ToString(); var queryParams = new Dictionary <string, string> { ["api-version"] = Constants.ApiVersion }; var requestUri = QueryHelpers.AddQueryString(requestUriTemp, queryParams); var body = new Dictionary <string, object> { ["ApplicationTypeBuildPath"] = packageName }; var bodyContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); Logger.Log($"Registering {packageName}"); var response = await ClusterConnection.HttpClient.PostAsync(requestUri, bodyContent).ConfigureAwait(false); if (!response.IsSuccessStatusCode) { try { var errorBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false); Console.WriteLine("Things exploded..."); Console.WriteLine(errorBody); } catch (Exception ex) { return(false); } return(false); } return(true); } catch (Exception ex) { Logger.LogException(ex); return(false); } return(true); }
public async Task <bool> UploadAsync(FileInfo file, string fileInImageStore, string appPackagePathInStore) { try { var fileRelativePath = $"{appPackagePathInStore}\\{fileInImageStore}"; var requestUriTemp = ClusterConnection.CreateUri($"/ImageStore/{appPackagePathInStore}\\{fileInImageStore}").ToString(); var queryParams = new Dictionary <string, string> { ["api-version"] = Constants.ApiVersion }; var requestUri = QueryHelpers.AddQueryString(requestUriTemp, queryParams); ByteArrayContent byteContent; // Handle the _.dir marker files if (file.Name.Equals("_.dir", StringComparison.CurrentCultureIgnoreCase)) { byteContent = new ByteArrayContent(new byte[0]); } else { using ( var sourceStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.None) ) { var data = new byte[file.Length]; await sourceStream.ReadAsync(data, 0, data.Length).ConfigureAwait(false); byteContent = new ByteArrayContent(data); } } Logger.Log($"Uploading {file.FullName} as {fileRelativePath}"); var response = await retryPolicy .ExecuteAsync(() => ClusterConnection.HttpClient.PutAsync(requestUri, byteContent)) .ConfigureAwait(false); return(response.IsSuccessStatusCode); } catch (Exception ex) { Logger.LogException(ex); return(false); } }
public async Task <bool> UpgradeAsync(ApplicationUpgrade upgradeOptions) { try { var requestUriTemp = ClusterConnection.CreateUri($"/Applications/{upgradeOptions.ApplicationName}/$/Upgrade").ToString(); var queryParams = new Dictionary <string, string> { ["api-version"] = Constants.ApiVersion }; var requestUri = QueryHelpers.AddQueryString(requestUriTemp, queryParams); var body = new Dictionary <string, object> { ["Name"] = upgradeOptions.ApplicationName, ["TargetApplicationTypeVersion"] = upgradeOptions.TargetVersion, ["UpgradeKind"] = 1, ["RollingUpgradeMode"] = (int)upgradeOptions.RollingUpgradeMode, ["ForceRestart"] = upgradeOptions.ForceRestart, ["MonitoringPolicy"] = new Dictionary <string, object> { ["FailureAction"] = (int)upgradeOptions.FailureAction, ["HealthCheckWaitDurationInMilliseconds"] = upgradeOptions.HealthCheckWaitDuration.ToMilliSeconds().ToString(), ["HealthCheckStableDurationInMilliseconds"] = upgradeOptions.HealthCheckStableDuration.ToMilliSeconds().ToString(), ["HealthCheckRetryTimeoutInMilliseconds"] = upgradeOptions.HealthCheckRetryTimeout.ToMilliSeconds().ToString(), } }; var jsonContent = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); var response = await ClusterConnection.HttpClient .PostAsync(requestUri, jsonContent) .ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(true); } catch (Exception ex) { Console.WriteLine(ex); } return(false); }
public async Task DeleteAsync(string packageName) { try { var requestUriTemp = ClusterConnection.CreateUri($"/ImageStore/{packageName}").ToString(); var queryParams = new Dictionary <string, string> { ["api-version"] = Constants.ApiVersion }; var requestUri = QueryHelpers.AddQueryString(requestUriTemp, queryParams); var response = await ClusterConnection.HttpClient.DeleteAsync(requestUri).ConfigureAwait(false); response.EnsureSuccessStatusCode(); } catch (Exception ex) { Console.WriteLine(ex); } }