示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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);
            }
        }