예제 #1
0
        private static string GetActionName(IMacroAction macroAction)
        {
            Group       group       = null;
            Application application = null;

            switch (macroAction.Type)
            {
            case MacroActionType.Start:
            case MacroActionType.Stop:
            case MacroActionType.Restart:
                MacroProcessAction macroProcessAction = (MacroProcessAction)macroAction;
                Machine            machine            = Settings.Client.Machines.FirstOrDefault(x => x.ID == macroProcessAction.MachineID);
                if (machine != null && ConnectionStore.ConnectionCreated(machine))
                {
                    group       = ConnectionStore.Connections[machine].Configuration.Groups.FirstOrDefault(x => x.ID == macroProcessAction.GroupID);
                    application = ConnectionStore.Connections[machine].Configuration.Applications.FirstOrDefault(x => x.ID == macroProcessAction.ApplicationID);
                }
                return(machine == null || group == null || application == null
                                                ? null
                                                : $"{group.Name} / {application.Name}");

            case MacroActionType.Distribute:
                MacroDistributionAction macroDistributionAction = (MacroDistributionAction)macroAction;
                Machine destinationMachine = Settings.Client.Machines.FirstOrDefault(x => x.ID == macroDistributionAction.DestinationMachineID);
                if (destinationMachine == null || !ConnectionStore.ConnectionCreated(destinationMachine))
                {
                    return(null);
                }
                Machine sourceMachine = Settings.Client.Machines.FirstOrDefault(x => x.ID == macroDistributionAction.SourceMachineID);
                if (sourceMachine != null && ConnectionStore.ConnectionCreated(sourceMachine))
                {
                    group       = ConnectionStore.Connections[sourceMachine].Configuration.Groups.FirstOrDefault(x => x.ID == macroDistributionAction.GroupID);
                    application = ConnectionStore.Connections[sourceMachine].Configuration.Applications.FirstOrDefault(x => x.ID == macroDistributionAction.ApplicationID);
                }
                return(sourceMachine == null || group == null || application == null
                                                ? null
                                                : $"{sourceMachine.HostName} / {group.Name} / {application.Name}");

            case MacroActionType.Wait:
                MacroWaitAction macroWaitAction = (MacroWaitAction)macroAction;
                if (!macroWaitAction.IsValid)
                {
                    throw new InvalidOperationException();
                }
                switch (macroWaitAction.WaitForEvent)
                {
                case MacroActionWaitForEvent.Timeout:
                    return($"{macroWaitAction.Type} for timeout, {macroWaitAction.TimeoutMilliseconds} ms");

                case MacroActionWaitForEvent.PreviousActionsCompleted:
                    return($"{macroWaitAction.Type} for previous actions completed");

                default:
                    throw new InvalidOperationException();
                }

            default:
                throw new InvalidOperationException();
            }
        }
예제 #2
0
 public ProcessApplicationNode(Application application, Guid groupID, Guid machineID)
 {
     InitializeComponent();
     Application = application;
     GroupID     = groupID;
     MachineID   = machineID;
     _id         = MakeID(MachineID, GroupID, Application.ID);
     _status     = ProcessStatusValue.Unknown;
     _message    = null;
     //BackColor = Color.FromArgb(255, 192, 128);
 }
예제 #3
0
        public DistributionSourcesForm(Machine machine, Application application, Func <IEnumerable <Group> > getAllGroups)
        {
            InitializeComponent();

            Machine                    = machine;
            Application                = application;
            DistributionSources        = new List <DistributionSource>(application.Sources.Select(source => source.Clone()));
            DistributionSourcesChanged = false;
            _getAllGroups              = getAllGroups;
            _machineAvailable          = ConnectionStore.ConnectionCreated(Machine);
            _selectedSource            = null;
            _disableStateChangedEvents = false;
        }
        private void UpdateMacroActionBundle()
        {
            ActionBundle.Actions.Clear();
            if (HasValidSelections)
            {
                ActionBundle.Actions.AddRange(SelectedMachines.SelectMany(machine => SelectedApplications
                                                                          .Select(application =>
                {
                    Configuration configuration   = ConnectionStore.Connections[machine].Configuration;
                    Group actualGroup             = configuration.Groups.FirstOrDefault(x => Comparer.GroupsEqual(x, SelectedGroup));
                    Application actualApplication = configuration.Applications.FirstOrDefault(x => Comparer.ApplicationsEqual(x, application));
                    return(actualGroup != null && actualApplication != null ? new MacroProcessAction(ActionBundle.Type, machine.ID, actualGroup.ID, actualApplication.ID) : null);
                })
                                                                          .Where(action => action != null)));
            }

            RaiseMacroActionItemChangedEvent();
        }