Free cookie consent management tool by TermsFeed Policy Generator

Changeset 8957 for trunk/sources


Ignore:
Timestamp:
11/28/12 09:57:35 (11 years ago)
Author:
ascheibe
Message:

#1986 merged SlaveShutdown branch back into trunk

Location:
trunk/sources
Files:
24 edited
5 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj

    r8645 r8957  
    104104  <ItemGroup>
    105105    <Compile Include="HiveRoles.cs" />
     106    <Compile Include="Views\AppointmentTypeDialog.cs">
     107      <SubType>Form</SubType>
     108    </Compile>
     109    <Compile Include="Views\AppointmentTypeDialog.Designer.cs">
     110      <DependentUpon>AppointmentTypeDialog.cs</DependentUpon>
     111    </Compile>
     112    <Compile Include="Views\AppointmentTypeView.cs">
     113      <SubType>UserControl</SubType>
     114    </Compile>
     115    <Compile Include="Views\AppointmentTypeView.Designer.cs">
     116      <DependentUpon>AppointmentTypeView.cs</DependentUpon>
     117    </Compile>
    106118    <Compile Include="Views\HiveAdministratorView.cs">
    107119      <SubType>UserControl</SubType>
  • trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs

    r7259 r8957  
    2727    public DateTime DateFrom { get; set; }
    2828    public DateTime DateTo { get; set; }
    29     public bool AllDay { get; set; }   
     29    public bool AllDay { get; set; }
    3030    public HashSet<DayOfWeek> WeekDays { get; set; }
     31    public DowntimeType AppointmentType { get; set; }
    3132  }
    3233}
  • trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.Designer.cs

    r8924 r8957  
    6363      this.cbTuesday = new System.Windows.Forms.CheckBox();
    6464      this.cbMonday = new System.Windows.Forms.CheckBox();
     65      this.appointmentTypeView = new HeuristicLab.Clients.Hive.Administrator.Views.AppointmentTypeView();
     66      this.gbDowntimeType = new System.Windows.Forms.GroupBox();
    6567      this.gbAppointment.SuspendLayout();
    6668      this.gbWeekly.SuspendLayout();
     69      this.gbDowntimeType.SuspendLayout();
    6770      this.SuspendLayout();
    6871      //
     
    149152      // btSaveRecurrence
    150153      //
    151       this.btSaveRecurrence.Location = new System.Drawing.Point(2, 217);
     154      this.btSaveRecurrence.Location = new System.Drawing.Point(2, 298);
    152155      this.btSaveRecurrence.Name = "btSaveRecurrence";
    153156      this.btSaveRecurrence.Size = new System.Drawing.Size(147, 23);
     
    159162      // btCancelRecurrence
    160163      //
    161       this.btCancelRecurrence.Location = new System.Drawing.Point(241, 217);
     164      this.btCancelRecurrence.Location = new System.Drawing.Point(241, 298);
    162165      this.btCancelRecurrence.Name = "btCancelRecurrence";
    163166      this.btCancelRecurrence.Size = new System.Drawing.Size(147, 23);
     
    253256      this.cbMonday.UseVisualStyleBackColor = true;
    254257      //
     258      // appointmentTypeView
     259      //
     260      this.appointmentTypeView.AppointmentType = HeuristicLab.Clients.Hive.DowntimeType.Offline;
     261      this.appointmentTypeView.Location = new System.Drawing.Point(10, 19);
     262      this.appointmentTypeView.Name = "appointmentTypeView";
     263      this.appointmentTypeView.Size = new System.Drawing.Size(120, 50);
     264      this.appointmentTypeView.TabIndex = 45;
     265      //
     266      // gbDowntimeType
     267      //
     268      this.gbDowntimeType.Controls.Add(this.appointmentTypeView);
     269      this.gbDowntimeType.Location = new System.Drawing.Point(2, 217);
     270      this.gbDowntimeType.Name = "gbDowntimeType";
     271      this.gbDowntimeType.Size = new System.Drawing.Size(386, 75);
     272      this.gbDowntimeType.TabIndex = 46;
     273      this.gbDowntimeType.TabStop = false;
     274      this.gbDowntimeType.Text = "Type of Downtime";
     275      //
    255276      // Recurrence
    256277      //
    257       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    258278      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
    259       this.ClientSize = new System.Drawing.Size(393, 243);
     279      this.ClientSize = new System.Drawing.Size(393, 332);
     280      this.Controls.Add(this.gbDowntimeType);
    260281      this.Controls.Add(this.gbWeekly);
    261282      this.Controls.Add(this.btCancelRecurrence);
     
    263284      this.Controls.Add(this.gbAppointment);
    264285      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
    265       this.Icon = HeuristicLab.Common.Resources.HeuristicLab.Icon;
    266286      this.Name = "Recurrence";
     287      this.ShowIcon = false;
     288      this.ShowInTaskbar = false;
    267289      this.Text = "Recurrence";
     290      this.TopMost = true;
    268291      this.gbAppointment.ResumeLayout(false);
    269292      this.gbAppointment.PerformLayout();
    270293      this.gbWeekly.ResumeLayout(false);
    271294      this.gbWeekly.PerformLayout();
     295      this.gbDowntimeType.ResumeLayout(false);
    272296      this.ResumeLayout(false);
    273297
     
    294318    private System.Windows.Forms.CheckBox cbTuesday;
    295319    private System.Windows.Forms.CheckBox cbMonday;
     320    private AppointmentTypeView appointmentTypeView;
     321    private System.Windows.Forms.GroupBox gbDowntimeType;
    296322  }
    297323}
  • trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.cs

    r7259 r8957  
    5353          DateTo = dateTo,
    5454          AllDay = chbade.Checked,
    55           WeekDays = days
     55          WeekDays = days,
     56          AppointmentType = appointmentTypeView.AppointmentType
    5657        };
    5758
  • trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs

    r8075 r8957  
    9191    }
    9292
    93     private bool CreateAppointment() {
     93    private bool CreateAppointment(DowntimeType dtType) {
    9494      DateTime from, to;
    9595
     
    9898          //whole day appointment, only dates are visible
    9999          if (DateTime.TryParse(dtpFrom.Text, out from) && DateTime.TryParse(dtpTo.Text, out to) && from <= to)
    100             offlineTimes.Add(CreateAppointment(from, to.AddDays(1), true));
     100            offlineTimes.Add(CreateAppointment(from, to.AddDays(1), true, dtType));
    101101          else
    102102            MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     
    105105          if (DateTime.TryParse(dtpFrom.Text + " " + txttimeFrom.Text, out from) && DateTime.TryParse(dtpTo.Text + " " + txttimeTo.Text, out to) && from < to) {
    106106            if (from.Date == to.Date)
    107               offlineTimes.Add(CreateAppointment(from, to, false));
     107              offlineTimes.Add(CreateAppointment(from, to, false, dtType));
    108108            else {
    109109              //more than 1 day selected
    110110              while (from.Date != to.Date) {
    111                 offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
     111                offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false, dtType));
    112112                from = from.AddDays(1);
    113113              }
    114               offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
     114              offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false, dtType));
    115115            }
    116116          } else
     
    125125    }
    126126
    127     private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay) {
     127    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, DowntimeType downtimeType) {
    128128      HiveAppointment app = new HiveAppointment();
    129129      app.StartDate = startDate;
     
    132132      app.BorderColor = Color.Red;
    133133      app.Locked = true;
    134       app.Subject = "Offline";
     134      app.Subject = downtimeType.ToString();
    135135      app.Recurring = false;
    136136      return app;
    137137    }
    138138
    139     private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId) {
     139    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId, DowntimeType downtimeType) {
    140140      HiveAppointment app = new HiveAppointment();
    141141      app.StartDate = startDate;
     
    144144      app.BorderColor = Color.Red;
    145145      app.Locked = true;
    146       app.Subject = "Offline";
     146      app.Subject = downtimeType.ToString();
    147147      app.Recurring = recurring;
    148148      app.RecurringId = recurringId;
     
    164164      recurringAppointments.ForEach(appointment => appointment.StartDate = new DateTime(appointment.StartDate.Year, appointment.StartDate.Month, appointment.StartDate.Day, hourfrom, 0, 0));
    165165      recurringAppointments.ForEach(appointment => appointment.EndDate = new DateTime(appointment.EndDate.Year, appointment.EndDate.Month, appointment.EndDate.Day, hourTo, 0, 0));
    166 
    167       DeleteRecurringAppointment(recurringId);
    168       offlineTimes.AddRange(recurringAppointments);
    169166    }
    170167
    171168    public void DialogClosed(RecurrentEvent e) {
    172       CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.WeekDays);
    173     }
    174 
    175     private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, HashSet<DayOfWeek> daysOfWeek) {
     169      CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.WeekDays, e.AppointmentType);
     170    }
     171
     172    private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, HashSet<DayOfWeek> daysOfWeek, DowntimeType appointmentType) {
    176173      DateTime incDate = dateFrom;
    177174      Guid guid = Guid.NewGuid();
     
    179176      while (incDate.Date <= dateTo.Date) {
    180177        if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
    181           offlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
     178          offlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid, appointmentType));
    182179        incDate = incDate.AddDays(1);
    183180      }
     
    284281    private void btCreate_Click(object sender, EventArgs e) {
    285282      if (dvOnline.Selection != SelectionType.Appointment) {
    286         CreateAppointment();
     283        DowntimeType dtType;
     284        DialogResult result;
     285        AppointmentTypeDialog dialog = new AppointmentTypeDialog();
     286        result = dialog.ShowDialog(this);
     287        dtType = dialog.AppointmentType;
     288        dialog.Dispose();
     289        if (result == DialogResult.Cancel) return;
     290        CreateAppointment(dtType);
    287291      } else {
    288292        //now we want to change an existing appointment
    289293        if (!dvOnline.SelectedAppointment.Recurring) {
    290           if (CreateAppointment())
     294          if (CreateAppointment(GetDowntimeTypeOfSelectedAppointment()))
    291295            DeleteAppointment();
    292296        } else {
     
    295299          DialogResult res = MessageBox.Show("Change all events in this series?", "Change recurrences", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    296300          if (res != DialogResult.Yes) {
    297             if (CreateAppointment())
     301            if (CreateAppointment(GetDowntimeTypeOfSelectedAppointment()))
    298302              DeleteAppointment();
    299303          } else
     
    339343        BorderColor = Color.Red,
    340344        Locked = true,
    341         Subject = "Offline",
     345        Subject = downtime.DowntimeType.ToString(),
    342346        Changed = downtime.Modified,
    343347        Id = downtime.Id
     
    354358        RecurringId = app.RecurringId,
    355359        ResourceId = HiveAdminClient.Instance.DowntimeForResourceId,
    356         Id = app.Id
     360        Id = app.Id,
     361        DowntimeType = (DowntimeType)Enum.Parse(typeof(DowntimeType), app.Subject)
    357362      };
    358363      return downtime;
    359364    }
     365
     366    private DowntimeType GetDowntimeTypeOfSelectedAppointment() {
     367      return (DowntimeType)Enum.Parse(typeof(DowntimeType), ((HiveAppointment)dvOnline.SelectedAppointment).Subject);
     368    }
    360369  }
    361370}
  • trunk/sources/HeuristicLab.Clients.Hive.Slave.ConsoleClient/3.3/app.config

    r7777 r8957  
    126126        <value>2</value>
    127127      </setting>
     128      <setting name="ShutdownCommand" serializeAs="String">
     129        <value>shutdown.exe</value>
     130      </setting>
    128131   </HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    129132  </userSettings>
  • trunk/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/HeuristicLab.Clients.Hive.Slave.Views-3.3.csproj

    r8600 r8957  
    291291  </PropertyGroup>
    292292  <PropertyGroup>
    293    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     293    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    294294set ProjectDir=$(ProjectDir)
    295295set SolutionDir=$(SolutionDir)
     
    297297
    298298call PreBuildEvent.cmd</PreBuildEvent>
    299 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     299    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    300300export ProjectDir=$(ProjectDir)
    301301export SolutionDir=$(SolutionDir)
  • trunk/sources/HeuristicLab.Clients.Hive.Slave.WindowsService/3.3/app.config

    r7777 r8957  
    119119        <value>-1</value>
    120120      </setting>
     121      <setting name="ShutdownCommand" serializeAs="String">
     122        <value>shutdown.exe</value>
     123      </setting>
    121124    </HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    122125  </userSettings>
  • trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs

    r7259 r8957  
    2525using System.Threading;
    2626using System.Threading.Tasks;
    27 using HeuristicLab.Clients.Hive.SlaveCore.Properties;
    28 using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
    2927using HeuristicLab.Common;
    3028using HeuristicLab.Core;
     
    5452
    5553    public Core() {
    56       var log = new ThreadSafeLog(Settings.Default.MaxLogCount);
     54      var log = new ThreadSafeLog(SlaveCore.Properties.Settings.Default.MaxLogCount);
    5755      this.pluginManager = new PluginManager(WcfService.Instance, log);
    5856      this.taskManager = new TaskManager(pluginManager, log);
     
    7674        slaveComm = new ServiceHost(typeof(SlaveCommunicationService));
    7775        slaveComm.Open();
    78        
     76
    7977        // delete all left over task directories
    8078        pluginManager.CleanPluginTemp();
     
    9694        }
    9795        ShutdownCore();
    98       } finally {
     96      }
     97      finally {
    9998        DeregisterServiceEvents();
    10099        waitShutdownSem.Release();
     
    185184            HeartbeatManager.Interval = TimeSpan.FromSeconds(interval);
    186185          }
     186          break;
     187        case MessageContainer.MessageType.ShutdownComputer:
     188          ShutdownComputer();
    187189          break;
    188190      }
     
    450452    }
    451453
     454    private void ShutdownComputer() {
     455      var t = TS.Task.Factory.StartNew(new Action(Shutdown));
     456      t.ContinueWith(c => {
     457        try {
     458          Process.Start(SlaveCore.Properties.Settings.Default.ShutdownCommand);
     459        }
     460        catch (Exception ex) {
     461          if (ServiceEventLog != null) {
     462            EventLogManager.LogException(ex);
     463          } else
     464            throw ex;
     465        }
     466      });
     467    }
     468
    452469    /// <summary>
    453470    /// complete shutdown, should be called before the the application is exited
  • trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.Designer.cs

    r7777 r8957  
    22// <auto-generated>
    33//     This code was generated by a tool.
    4 //     Runtime Version:4.0.30319.530
     4//     Runtime Version:4.0.30319.586
    55//
    66//     Changes to this file may cause incorrect behavior and will be lost if
     
    311311            }
    312312        }
     313       
     314        [global::System.Configuration.UserScopedSettingAttribute()]
     315        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     316        [global::System.Configuration.DefaultSettingValueAttribute("shutdown.exe")]
     317        public string ShutdownCommand {
     318            get {
     319                return ((string)(this["ShutdownCommand"]));
     320            }
     321            set {
     322                this["ShutdownCommand"] = value;
     323            }
     324        }
    313325    }
    314326}
  • trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.settings

    r7777 r8957  
    7575      <Value Profile="(Default)">-1</Value>
    7676    </Setting>
     77    <Setting Name="ShutdownCommand" Type="System.String" Scope="User">
     78      <Value Profile="(Default)">shutdown.exe</Value>
     79    </Setting>
    7780  </Settings>
    7881</SettingsFile>
  • trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/app.config

    r7777 r8957  
    122122        <value>-1</value>
    123123      </setting>
     124      <setting name="ShutdownCommand" serializeAs="String">
     125        <value>shutdown.exe</value>
     126      </setting>
    124127    </HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
    125128  </userSettings>
  • trunk/sources/HeuristicLab.Clients.Hive/3.3/ServiceClients/Downtime.cs

    r7259 r8957  
    4040      this.ResourceId = original.ResourceId;
    4141      this.StartDate = original.StartDate;
     42      this.DowntimeType = original.DowntimeType;
    4243    }
    4344
  • trunk/sources/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs

    r8071 r8957  
    22// <auto-generated>
    33//     This code was generated by a tool.
    4 //     Runtime Version:4.0.30319.17379
     4//     Runtime Version:4.0.30319.586
    55//
    66//     Changes to this file may cause incorrect behavior and will be lost if
     
    629629
    630630    [System.Runtime.Serialization.OptionalFieldAttribute()]
     631    private HeuristicLab.Clients.Hive.DowntimeType DowntimeTypeField;
     632
     633    [System.Runtime.Serialization.OptionalFieldAttribute()]
    631634    private System.DateTime EndDateField;
    632635
     
    652655          this.AllDayEventField = value;
    653656          this.RaisePropertyChanged("AllDayEvent");
     657        }
     658      }
     659    }
     660
     661    [System.Runtime.Serialization.DataMemberAttribute()]
     662    public HeuristicLab.Clients.Hive.DowntimeType DowntimeType {
     663      get {
     664        return this.DowntimeTypeField;
     665      }
     666      set {
     667        if ((this.DowntimeTypeField.Equals(value) != true)) {
     668          this.DowntimeTypeField = value;
     669          this.RaisePropertyChanged("DowntimeType");
    654670        }
    655671      }
     
    12861302
    12871303  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     1304  [System.Runtime.Serialization.DataContractAttribute(Name = "DowntimeType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataAccess")]
     1305  public enum DowntimeType : int {
     1306
     1307    [System.Runtime.Serialization.EnumMemberAttribute()]
     1308    Offline = 0,
     1309
     1310    [System.Runtime.Serialization.EnumMemberAttribute()]
     1311    Shutdown = 1,
     1312  }
     1313
     1314  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    12881315  [System.Runtime.Serialization.DataContractAttribute(Name = "Permission", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
    12891316  public enum Permission : int {
     
    16131640      [System.Runtime.Serialization.EnumMemberAttribute()]
    16141641      NewHBInterval = 11,
     1642
     1643      [System.Runtime.Serialization.EnumMemberAttribute()]
     1644      ShutdownComputer = 12,
    16151645    }
    16161646  }
  • trunk/sources/HeuristicLab.Clients.Hive/3.3/Settings.Designer.cs

    r7249 r8957  
    22// <auto-generated>
    33//     This code was generated by a tool.
    4 //     Runtime Version:4.0.30319.239
     4//     Runtime Version:4.0.30319.586
    55//
    66//     Changes to this file may cause incorrect behavior and will be lost if
  • trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HeuristicLab.Services.Hive.DataAccess-3.3.csproj

    r8600 r8957  
    9999    <None Include="Plugin.cs.frame" />
    100100    <Compile Include="Enums\Command.cs" />
     101    <Compile Include="Enums\DowntimeType.cs" />
    101102    <Compile Include="Enums\CpuArchitecture.cs" />
    102103    <Compile Include="Plugin.cs" />
     
    156157  </PropertyGroup>
    157158  <PropertyGroup>
    158    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     159    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    159160set ProjectDir=$(ProjectDir)
    160161set SolutionDir=$(SolutionDir)
     
    162163
    163164call PreBuildEvent.cmd</PreBuildEvent>
    164 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     165    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    165166export ProjectDir=$(ProjectDir)
    166167export SolutionDir=$(SolutionDir)
  • trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.dbml

    r7916 r8957  
    9595      <Column Name="Recurring" Type="System.Boolean" DbType="Bit" CanBeNull="false" />
    9696      <Column Name="RecurringId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="false" />
     97      <Column Name="DowntimeType" Storage="_Type" Type="global::HeuristicLab.Services.Hive.DataAccess.DowntimeType" DbType="VarChar(MAX)" CanBeNull="false" />
    9798      <Association Name="Resource_Downtime" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" />
    9899    </Type>
  • trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.designer.cs

    r7916 r8957  
    33// <auto-generated>
    44//     This code was generated by a tool.
    5 //     Runtime Version:4.0.30319.269
     5//     Runtime Version:4.0.30319.17929
    66//
    77//     Changes to this file may cause incorrect behavior and will be lost if
     
    21532153    private System.Guid _RecurringId;
    21542154   
     2155    private global::HeuristicLab.Services.Hive.DataAccess.DowntimeType _Type;
     2156   
    21552157    private EntityRef<Resource> _Resource;
    21562158   
     
    21732175    partial void OnRecurringIdChanging(System.Guid value);
    21742176    partial void OnRecurringIdChanged();
     2177    partial void OnDowntimeTypeChanging(global::HeuristicLab.Services.Hive.DataAccess.DowntimeType value);
     2178    partial void OnDowntimeTypeChanged();
    21752179    #endregion
    21762180   
     
    23212325          this.SendPropertyChanged("RecurringId");
    23222326          this.OnRecurringIdChanged();
     2327        }
     2328      }
     2329    }
     2330   
     2331    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Type", DbType="VarChar(MAX)", CanBeNull=false)]
     2332    public global::HeuristicLab.Services.Hive.DataAccess.DowntimeType DowntimeType
     2333    {
     2334      get
     2335      {
     2336        return this._Type;
     2337      }
     2338      set
     2339      {
     2340        if ((this._Type != value))
     2341        {
     2342          this.OnDowntimeTypeChanging(value);
     2343          this.SendPropertyChanging();
     2344          this._Type = value;
     2345          this.SendPropertyChanged("DowntimeType");
     2346          this.OnDowntimeTypeChanged();
    23232347        }
    23242348      }
  • trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Initialize Hive Database.sql

    r7916 r8957  
    7575  [Recurring] Bit NOT NULL,
    7676  [RecurringId] UniqueIdentifier NOT NULL,
     77  [DowntimeType] VarChar(MAX) NOT NULL,
    7778  CONSTRAINT [PK_dbo.Downtime] PRIMARY KEY ([DowntimeId])
    7879  )
  • trunk/sources/HeuristicLab.Services.Hive/3.3/Convert.cs

    r7916 r8957  
    118118    public static DT.Downtime ToDto(DB.Downtime source) {
    119119      if (source == null) return null;
    120       return new DT.Downtime { Id = source.DowntimeId, AllDayEvent = source.AllDayEvent, EndDate = source.EndDate, Recurring = source.Recurring, RecurringId = source.RecurringId, ResourceId = source.ResourceId, StartDate = source.StartDate };
     120      return new DT.Downtime { Id = source.DowntimeId, AllDayEvent = source.AllDayEvent, EndDate = source.EndDate, Recurring = source.Recurring, RecurringId = source.RecurringId, ResourceId = source.ResourceId, StartDate = source.StartDate, DowntimeType = source.DowntimeType };
    121121    }
    122122    public static DB.Downtime ToEntity(DT.Downtime source) {
     
    127127    public static void ToEntity(DT.Downtime source, DB.Downtime target) {
    128128      if ((source != null) && (target != null)) {
    129         target.DowntimeId = source.Id; target.AllDayEvent = source.AllDayEvent; target.EndDate = source.EndDate; target.Recurring = source.Recurring; target.RecurringId = source.RecurringId; target.ResourceId = source.ResourceId; target.StartDate = source.StartDate;
     129        target.DowntimeId = source.Id; target.AllDayEvent = source.AllDayEvent; target.EndDate = source.EndDate; target.Recurring = source.Recurring; target.RecurringId = source.RecurringId; target.ResourceId = source.ResourceId; target.StartDate = source.StartDate; target.DowntimeType = source.DowntimeType;
    130130      }
    131131    }
  • trunk/sources/HeuristicLab.Services.Hive/3.3/DataTransfer/Downtime.cs

    r7259 r8957  
    2222using System;
    2323using System.Runtime.Serialization;
     24using HeuristicLab.Services.Hive.DataAccess;
    2425
    2526namespace HeuristicLab.Services.Hive.DataTransfer {
     
    3839    [DataMember]
    3940    public Guid ResourceId { get; set; }
     41    [DataMember]
     42    public DowntimeType DowntimeType { get; set; }
    4043  }
    4144}
  • trunk/sources/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs

    r7723 r8957  
    4747        if (heartbeat.HbInterval != slave.HbInterval) {
    4848          actions.Add(new MessageContainer(MessageContainer.MessageType.NewHBInterval));
     49        }
     50        if (ShutdownSlaveComputer(slave.Id)) {
     51          actions.Add(new MessageContainer(MessageContainer.MessageType.ShutdownComputer));
    4952        }
    5053
     
    147150    private bool SlaveIsAllowedToCalculate(Guid slaveId) {
    148151      // the slave may only calculate if there is no downtime right now. this needs to be checked for every parent resource also
    149       return dao.GetParentResources(slaveId).All(r => dao.GetDowntimes(x => x.ResourceId == r.Id && (DateTime.Now >= x.StartDate) && (DateTime.Now <= x.EndDate)).Count() == 0);
     152      return dao.GetParentResources(slaveId).All(r => dao.GetDowntimes(x => x.ResourceId == r.Id && x.DowntimeType == DA.DowntimeType.Offline && (DateTime.Now >= x.StartDate) && (DateTime.Now <= x.EndDate)).Count() == 0);
     153    }
     154
     155    private bool ShutdownSlaveComputer(Guid slaveId) {
     156      return dao.GetParentResources(slaveId).Any(r => dao.GetDowntimes(x => x.ResourceId == r.Id && x.DowntimeType == DA.DowntimeType.Shutdown && (DateTime.Now >= x.StartDate) && (DateTime.Now <= x.EndDate)).Count() != 0);
    150157    }
    151158  }
  • trunk/sources/HeuristicLab.Services.Hive/3.3/MessageContainer.cs

    r7259 r8957  
    4848      ShutdownSlave,  // slave should shutdown immediately without submitting results
    4949      SayHello,  // Slave should say hello, because job is unknown to the server
    50       NewHBInterval,
     50      NewHBInterval, // change the polling to a new interval
     51      ShutdownComputer, // shutdown the computer the slave runs on
    5152    };
    5253
Note: See TracChangeset for help on using the changeset viewer.