Beispiel #1
0
    public string RegisterHarvester(List <string> args)
    {
        string    type              = args[0];
        string    id                = args[1];
        double    oreOutput         = double.Parse(args[2]);
        double    energyRequirement = double.Parse(args[3]);
        Harvester harvester         = null;
        int       sonicFactor       = 0;
        string    result            = string.Empty;

        try
        {
            IOManager.IsRegisterHarvesterValid(type, id, oreOutput, energyRequirement, sonicFactor);

            if (type == "Sonic")
            {
                sonicFactor = int.Parse(args[4]);
            }

            harvester = HarvesterFactory.GetHarvester(type, id, oreOutput, energyRequirement, sonicFactor);
            result    = $"Successfully registered {type} Harvester - {id}";

            harvesters.Add(harvester);
        }
        catch (Exception e)
        {
            result = e.Message;
        }

        return(result);
    }
        public static ConDepExecutionResult ExecuteFromAssembly(ConDepSettings conDepSettings, CancellationToken token)
        {
            try
            {
                if (conDepSettings.Options.Assembly == null)
                {
                    throw new ArgumentException("assembly");
                }

                var lbLookup = new LoadBalancerLookup(conDepSettings.Config.LoadBalancer);
                var runbookConfigurationHandler = new RunbookConfigurationHandler(new RunbookHandler(), new RunbookDependencyHandler(), lbLookup.GetLoadBalancer());
                //var sequenceManager = artifactConfigHandler.CreateExecutionSequence(conDepSettings);

                var clientValidator = new ClientValidator();

                var serverInfoHarvester = HarvesterFactory.GetHarvester(conDepSettings);
                var serverValidator     = new RemoteServerValidator(conDepSettings.Config.Servers,
                                                                    serverInfoHarvester, new PowerShellExecutor());


                //if (conDepSettings.Options.DryRun)
                //{
                //    Logger.Warn("Showing execution sequence from dry run:");
                //    sequenceManager.DryRun(conDepSettings);
                //    return new ConDepExecutionResult(true);
                //}

                return(new ConDepConfigurationExecutor().Execute(conDepSettings, clientValidator, serverValidator, runbookConfigurationHandler.GetRunbooksToExecute(conDepSettings), new ServerHandler(), token));
            }
            catch (Exception ex)
            {
                Logger.Error("An error sneaked by.", ex);
                throw;
            }
        }
Beispiel #3
0
        public override Result Execute(ConDepSettings settings, CancellationToken token)
        {
            LoadOptionsFromConfig(settings);
            ValidateMandatoryOptions(_options);
            var starter      = new Ec2Starter(_options, settings);
            var ec2instances = starter.Start();

            var instances = new List <Ec2Instance>();
            var servers   = new List <ServerConfig>();

            foreach (var instance in ec2instances)
            {
                instances.Add(instance);
                var server = new ServerConfig
                {
                    DeploymentUser = new DeploymentUserConfig
                    {
                        UserName = instance.UserName,
                        Password = instance.Password
                    },
                    Name       = instance.ManagementAddress,
                    PowerShell = new PowerShellConfig()
                    {
                        HttpPort = 5985, HttpsPort = 5986
                    },
                    Node = new NodeConfig()
                    {
                        Port = 4444, TimeoutInSeconds = 100
                    }
                };
                settings.Config.Servers.Add(server);
                servers.Add(server);
            }

            Logger.Verbose("Waiting for WinRM to succeed");
            foreach (var server in servers)
            {
                Logger.Verbose($"Waiting for WinRM to succeed on {server.Name}");
                WaitForWinRm(WaitForStatus.Success, server);
            }
            var serverValidator = new RemoteServerValidator(servers, HarvesterFactory.GetHarvester(settings), new PowerShellExecutor());

            if (!serverValidator.Validate())
            {
                throw new ConDepValidationException("Not all servers fulfill ConDep's requirements. Aborting execution.");
            }

            ConDepConfigurationExecutor.ExecutePreOps(settings, token);

            var result = Result.SuccessChanged();

            result.Data.Instances = instances;
            return(result);
        }
Beispiel #4
0
 public string RegisterHarvester(List <string> arguments)
 {
     try
     {
         this.harvesters.Add(HarvesterFactory.GetHarvester(arguments));
         return($"Successfully registered {arguments[0]} Harvester - {arguments[1]}");
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
 }
Beispiel #5
0
    public string RegisterHarvester(List <string> arguments)
    {
        try
        {
            var currentHarvester = HarvesterFactory.GetHarvester(arguments);
            harvesters.Add(currentHarvester);
            return(currentHarvester.ToString());
        }

        catch (Exception e)
        {
            return(e.Message);
        }
    }
Beispiel #6
0
    public string RegisterHarvester(List <string> arguments)
    {
        try
        {
            var harvester = HarvesterFactory.GetHarvester(arguments);
            this.harvesters[harvester.Id] = harvester;

            return($"Successfully registered {arguments[0]} Harvester - {harvester.Id}");
        }
        catch (ArgumentException e)
        {
            return(e.Message);
        }
    }
Beispiel #7
0
        public override Result Execute(ConDepSettings settings, CancellationToken token)
        {
            var client = GetAwsClient(settings, _awsOptions);

            var searchFilter = GetSearchFilters(_tags).ToList();
            var request      = new DescribeInstancesRequest {
                Filters = searchFilter
            };
            var response = client.DescribeInstances(request);

            var resultInstances = new List <dynamic>();

            foreach (var reservation in response.Reservations)
            {
                foreach (var instance in reservation.Instances.Where(x => x.State.Name == "Running"))
                {
                    var serverAddress = GetManagementAddress(_awsOptions.RemoteManagementAddressType, instance);
                    resultInstances.Add(new
                    {
                        Server = serverAddress
                    });
                    settings.Config.AddServer(serverAddress);
                }
            }

            var serverInfoHarvester = HarvesterFactory.GetHarvester(settings);
            var serverValidator     = new RemoteServerValidator(settings.Config.Servers, serverInfoHarvester, new PowerShellExecutor());

            if (!serverValidator.Validate())
            {
                throw new ConDepValidationException("Not all servers fulfill ConDep's requirements. Aborting execution.");
            }

            ConDepConfigurationExecutor.ExecutePreOps(settings, token);
            var result = Result.SuccessUnChanged();

            result.Data.Instances      = resultInstances;
            result.Data.HttpStatusCode = response.HttpStatusCode;
            return(result);
        }
    public string RegisterHarvester(List <string> arguments)
    {
        var       factory         = new HarvesterFactory();
        Harvester harvester       = factory.GetHarvester(arguments);
        var       typeOfHarvester = arguments[0];
        var       idOfHarvester   = arguments[1];

        if (!harvesters.ContainsKey(idOfHarvester))
        {
            harvesters[idOfHarvester] = harvester;
            return($"Successfully registered {typeOfHarvester} Harvester - {idOfHarvester}");
        }
        return("Harvester is not registered, because of it's Id");

        //var result = "";

        //var typeOfHarvester = arguments[0];
        //var idOfHarvester = arguments[1];
        //var oreOutput = double.Parse(arguments[2]);
        //var energyRequirement = double.Parse(arguments[3]);

        //switch (typeOfHarvester)
        //{
        //    case "Sonic":
        //        var sonicFactor = int.Parse(arguments[4]);
        //        Harvester sonicHarvester = new SonicHarvester(idOfHarvester, oreOutput, energyRequirement, sonicFactor);
        //        this.harvesters[idOfHarvester] = sonicHarvester;
        //        result = $"Successfully registered {typeOfHarvester} Harvester - {idOfHarvester}";
        //        break;

        //    case "Hammer":
        //        Harvester hammeHarvester = new HammerHarvester(idOfHarvester, oreOutput, energyRequirement);
        //        this.harvesters[idOfHarvester] = hammeHarvester;
        //        result = $"Successfully registered {typeOfHarvester} Harvester - {idOfHarvester}";
        //        break;
        //}

        //return result;
    }