예제 #1
0
        /// <summary>
        /// Performs the request.
        /// </summary>
        /// <param name="arguments">The arguments.</param>
        /// <returns>The async <see cref="Task"/>.</returns>
        private static async Task PerformRequest(Dictionary <string, string> arguments)
        {
            try
            {
                var accountDetails = await CaasAuthentication.Authenticate(
                    arguments["username"],
                    arguments["password"],
                    arguments["region"]);

                var runtimeContext = new RuntimeContext
                {
                    AccountDetails = accountDetails,
                    LogProvider    = new ConsoleLogProvider()
                };

                var taskBuilder = new TaskBuilder();

                if (arguments["action"].ToLower() == "deploy")
                {
                    var parametersFile = arguments.ContainsKey("parameters") ? arguments["parameters"] : null;
                    var templateFile   = arguments["template"];

                    var taskExecutor = taskBuilder.BuildTasksFromDeploymentTemplate(templateFile, parametersFile);
                    var log          = await taskExecutor.Execute(runtimeContext);

                    Console.WriteLine($"Result: {log.Status}");

                    log.SaveToFile(arguments["deploymentlog"]);
                    Console.WriteLine($"Complete! Deployment log written to {arguments["deploymentlog"]}.");

                    if (taskExecutor.Context.OutputParameters != null)
                    {
                        Console.WriteLine("OUTPUT PARAMETERS:");

                        foreach (var param in taskExecutor.Context.OutputParameters)
                        {
                            Console.WriteLine($"{param.Key}: {param.Value}");
                        }
                    }
                }
                else if (arguments["action"].ToLower() == "delete")
                {
                    var deploymentLogFile = arguments["deploymentlog"];

                    var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(deploymentLogFile);
                    var log          = await taskExecutor.Execute(runtimeContext);

                    Console.WriteLine($"Result: {log.Status}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
예제 #2
0
        /// <summary>
        /// Begins the processing asynchronously.
        /// </summary>
        /// <returns>The async <see cref="Task"/>.</returns>
        private async Task BeginProcessingAsync()
        {
            var runtimeContext = new RuntimeContext
            {
                AccountDetails = await CaasAuthentication.Authenticate(UserName, Password, Region),
                LogProvider    = new ConsoleLogProvider()
            };

            var taskBuilder  = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(ResolvePath(DeploymentLog));
            var log          = await taskExecutor.Execute(runtimeContext);

            Console.WriteLine($"Result: {log.Status}");
        }
예제 #3
0
        public async Task ParseAndExecuteDeletionTasks_Failed()
        {
            var client = new FakeHttpClient();

            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "GenericError.json", HttpStatusCode.BadRequest);

            var logFile      = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder  = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log          = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Failed, log.Status);
            Assert.AreEqual(2, log.Resources.Count);
            Assert.AreEqual(ResourceLogStatus.Deleted, log.Resources[0].DeploymentStatus);
            Assert.AreEqual(ResourceLogStatus.Failed, log.Resources[1].DeploymentStatus);
            Assert.AreEqual("UNEXPECTED_ERROR", log.Resources[1].Error.ResponseCode);
        }
예제 #4
0
        public async Task ParseAndExecuteDeletionTasks_Success()
        {
            var client = new FakeHttpClient();

            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "PublicIpBlock_Delete.json");
            client.AddResponse("/network/publicIpBlock/996b066e-bdce-11e4-8c14-b8ca3a5d9ef8", "PublicIpBlock_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/server/deleteServer", "Server_Delete.json");
            client.AddResponse("/server/server/b42b40e1-351a-4df9-b726-2ccff01f2767", "Server_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/deleteVlan", "Vlan_Delete.json");
            client.AddResponse("/network/vlan/997e2084-00b1-4d1d-96ce-099946679c6f", "Vlan_Get_NotFound.json", HttpStatusCode.BadRequest);

            var logFile      = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder  = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log          = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Success, log.Status);
        }
        public async Task ParseAndExecuteDeletionTasks_Success()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "PublicIpBlock_Delete.json");
            client.AddResponse("/network/publicIpBlock/996b066e-bdce-11e4-8c14-b8ca3a5d9ef8", "PublicIpBlock_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/server/deleteServer", "Server_Delete.json");
            client.AddResponse("/server/server/b42b40e1-351a-4df9-b726-2ccff01f2767", "Server_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/deleteVlan", "Vlan_Delete.json");
            client.AddResponse("/network/vlan/997e2084-00b1-4d1d-96ce-099946679c6f", "Vlan_Get_NotFound.json", HttpStatusCode.BadRequest);

            var logFile = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Success, log.Status);
        }
        public async Task ParseAndExecuteDeletionTasks_Failed()
        {
            var client = new FakeHttpClient();
            client.AddResponse("/network/deleteNatRule", "NatRule_Delete.json");
            client.AddResponse("/network/natRule/a6b2e743-e330-4deb-a76e-0d9cb0b1d1bb", "NatRule_Get_NotFound.json", HttpStatusCode.BadRequest);
            client.AddResponse("/network/removePublicIpBlock", "GenericError.json", HttpStatusCode.BadRequest);

            var logFile = Path.Combine(_resourceFolder, "StandardTemplateLog.json");
            var taskBuilder = new TaskBuilder();
            var taskExecutor = taskBuilder.BuildTasksFromDeploymentLog(logFile);
            var log = await taskExecutor.Execute(_runtimeContext);

            Assert.AreEqual(DeploymentLogStatus.Failed, log.Status);
            Assert.AreEqual(2, log.Resources.Count);
            Assert.AreEqual(ResourceLogStatus.Deleted, log.Resources[0].DeploymentStatus);
            Assert.AreEqual(ResourceLogStatus.Failed, log.Resources[1].DeploymentStatus);
            Assert.AreEqual("UNEXPECTED_ERROR", log.Resources[1].Error.ResponseCode);
        }