示例#1
0
 public void EditReplicationInitJobSet(BackupRestoreConfig.BrSchedule schedule)
 {
     try
     {
         string[] details = schedule.details.Split('|');
         this._choice_sr_ip            = details[0];
         this.DestUsernameTextbox.Text = details[1];
         this.DestPasswordTextbox.Text = details[2];
         if (!details[3].Equals(""))
         {
             this.VMNameCheckBox.Checked = true;
             this.VMNameTextBox.Text     = details[3];
         }
         this._choice_sr_uuid = details[4];
         if (details[5].Equals("1"))
         {
             this.NewMacAddressCheckBox.Checked = true;
         }
         NetworkItem item = new NetworkItem();
         item.text  = "";
         item.value = details[6];
         this.NetworkComboBox.Items.Add(item);
         this.NetworkComboBox.SelectedIndex = 0;
     }
     catch (Exception e)
     {
         throw e;
     }
 }
示例#2
0
        public void EditBackupInitButton(BackupRestoreConfig.BrSchedule schedule)
        {
            this.NowRadioButton.Enabled = false;

            switch (schedule.scheduleType)
            {
            case 1: this.OnceRadioButton.Checked = true; break;

            case 2: this.DailyRadioButton.Checked = true; break;

            case 3: this.WeeklyRadioButton.Checked = true; break;

            case 4: this.CircleRadioButton.Checked = true; break;

            case 5: this.OnceRadioButton.Checked = true; this.radioButtonFull.Checked = true; break;
            }
            this.StartDatePicker.Text = schedule.scheduleDate;
            this.StartTimePicker.Text = schedule.scheduleTime;
            this.RecurTextBox.Text    = schedule.recur + "";
            if (schedule.expect_full_count > 0)
            {
                this.expectFullCheckBox.Checked  = true;
                this.expectFullCountTextBox.Text = schedule.expect_full_count + "";
            }

            this.SundayCheckBox.Checked    = false;
            this.MondayCheckBox.Checked    = false;
            this.TuesdayCheckBox.Checked   = false;
            this.WednesdayCheckBox.Checked = false;
            this.ThursdayCheckBox.Checked  = false;
            this.FridayCheckBox.Checked    = false;
            this.SaturdayCheckBox.Checked  = false;
            if (schedule.scheduleType == 3)
            {
                foreach (var weeklyDay in schedule.weeklyDays)
                {
                    switch (weeklyDay)
                    {
                    case 0: this.SundayCheckBox.Checked = true; break;

                    case 1: this.MondayCheckBox.Checked = true; break;

                    case 2: this.TuesdayCheckBox.Checked = true; break;

                    case 3: this.WednesdayCheckBox.Checked = true; break;

                    case 4: this.ThursdayCheckBox.Checked = true; break;

                    case 5: this.FridayCheckBox.Checked = true; break;

                    case 6: this.SaturdayCheckBox.Checked = true; break;
                    }
                }
            }
        }
示例#3
0
        public static string ToJson(BackupRestoreConfig.BrSchedule schedule)
        {
            DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(BackupRestoreConfig.BrSchedule));
            MemoryStream ms = new MemoryStream();

            ds.WriteObject(ms, schedule);
            string strReturn = Encoding.UTF8.GetString(ms.ToArray());

            ms.Close();
            return(strReturn);
        }
示例#4
0
 public static string ToJson(BackupRestoreConfig.BrSchedule schedule, String str)
 {
     if (schedule.scheduleType == 0 || schedule.scheduleType == 1 || schedule.expect_full_count == 0)
     {
         String   rs            = "{";
         String   tempstr       = str.Substring(1, str.Length - 2);
         String[] rulesParament = tempstr.Split(',');
         foreach (var rp in rulesParament)
         {
             if (rp.IndexOf("current_full_count") > -1 || rp.IndexOf("expect_full_count") > -1)
             {
             }
             else
             {
                 rs += rp + ",";
             }
         }
         str = rs.Substring(0, rs.Length - 1) + "}";
     }
     return(str);
 }
示例#5
0
        public void ReplicationEditWizard()
        {
            VM vm = this._xenModelObject as VM;

            this.repChoseVmPage.VmCheckedList.Add(vm);
            BackupRestoreConfig.BrSchedule schedule = (BackupRestoreConfig.BrSchedule)HalsignUtil.JsonToObject(vm.other_config["halsign_rep_rules"], typeof(BackupRestoreConfig.BrSchedule));
            jobs = (BackupRestoreConfig.Job)HalsignUtil.JsonToObject(vm.other_config["halsign_br_job_r"], typeof(BackupRestoreConfig.Job));
            base.RemovePage(this.repChoseVmPage);
            base.RemovePage(this.repJobSettingPage);
            base.RemovePage(this.synchronizationPage);
            base.RemovePage(this.vmSettingsPage);
            base.RemovePage(this.completePage);

            this.repJobSettingPage.JobNameText = schedule.jobName;
            string tmpvdistr = "";

            if (schedule.details.EndsWith("halsign_vdi_all"))
            {
                foreach (VBD vbd in vm.Connection.ResolveAll <VBD>(vm.VBDs))
                {
                    if (HalsignHelpers.IsCDROM(vbd))
                    {
                        continue;
                    }
                    if (vbd.type.Equals(XenAPI.vbd_type.Disk))
                    {
                        tmpvdistr += vm.Connection.Resolve <VDI>(vbd.VDI).uuid + "@";;
                    }
                }
                tmpvdistr = tmpvdistr.Substring(0, tmpvdistr.Length - 1);
                this.repChoseVmPage.vdi_expand_list.Add(vm.uuid, tmpvdistr);
            }
            else
            {
                this.repChoseVmPage.vdi_expand_list.Add(vm.uuid, schedule.details);
            }
            this.schedulePage.EditReplicationInitButton(schedule);
            this.repJobSettingPage.EditReplicationInitJobSet(schedule);
            scheduleDetails = schedule.details.Replace("|halsign_vdi_all", "");
        }
示例#6
0
        public void BackupEditWizard()
        {
            VM vm = this._xenModelObject as VM;

            this.vmCheckedList.Add(vm);
            BackupRestoreConfig.BrSchedule schedule = (BackupRestoreConfig.BrSchedule)HalsignUtil.JsonToObject(vm.other_config["halsign_br_rules"], typeof(BackupRestoreConfig.BrSchedule));
            BackupRestoreConfig.Job        job      = (BackupRestoreConfig.Job)HalsignUtil.JsonToObject(vm.other_config["halsign_br_job_s"], typeof(BackupRestoreConfig.Job));
            base.RemovePage(this.xenChoseVmBackupPage);
            base.RemovePage(this.optionsBackupPage);
            base.RemovePage(this.summaryBackupPage);
            base.RemovePage(this.completeBackupPage);

            this.optionsBackupPage._JobNameTextBox = schedule.jobName;
            string tmpvdistr = "";

            if (schedule.details.Equals("halsign_vdi_all"))
            {
                foreach (VBD vbd in vm.Connection.ResolveAll <VBD>(vm.VBDs))
                {
                    if (HalsignHelpers.IsCDROM(vbd))
                    {
                        continue;
                    }
                    if (vbd.type.Equals(XenAPI.vbd_type.Disk))
                    {
                        tmpvdistr += vm.Connection.Resolve <VDI>(vbd.VDI).uuid + "@";;
                    }
                }
                tmpvdistr = tmpvdistr.Substring(0, tmpvdistr.Length - 1);
                this.vdi_dictionary.Add(vm.uuid, tmpvdistr);
            }
            else
            {
                this.vdi_dictionary.Add(vm.uuid, schedule.details);
            }
            this.scheduleBackupPage.EditBackupInitButton(schedule);
        }
示例#7
0
        protected override void FinishWizard()
        {
            List <Dictionary <string, string> >         listParam     = new List <Dictionary <string, string> >();
            List <Dictionary <string, List <string> > > listParamTemp = new List <Dictionary <string, List <string> > >();

            BackupRestoreConfig.BrSchedule schedule = new BackupRestoreConfig.BrSchedule();
            BackupRestoreConfig.Job        job      = new BackupRestoreConfig.Job();
            string str_rules   = "";
            String str_job     = "";
            string str_command = "";

            schedule.jobName = this.repJobSettingPage.JobNameText;
            job.job_name     = this.repJobSettingPage.JobNameText;
            if (this.schedulePage.NowChecked)
            {
                str_command           = "f";
                schedule.scheduleType = 0;
                job.schedule_type     = 0;
                schedule.scheduleDate = "";
            }
            if (this.schedulePage.OnceChecked)
            {
                str_command           = "y";
                schedule.scheduleType = 1;
                job.schedule_type     = 1;
                schedule.scheduleDate = this.schedulePage.StartDateText;
                schedule.scheduleTime = this.schedulePage.StartTimeText;
            }
            if (this.schedulePage.DailyChecked)
            {
                str_command           = "a";
                schedule.scheduleType = 2;
                job.schedule_type     = 2;
                schedule.scheduleDate = this.schedulePage.StartDateText;
                schedule.scheduleTime = this.schedulePage.StartTimeText;
                schedule.recur        = this.schedulePage.RecurText;
            }
            if (this.schedulePage.CircleChecked)
            {
                str_command           = "u";
                schedule.scheduleType = 4;
                job.schedule_type     = 4;
                schedule.scheduleDate = this.schedulePage.StartDateText;
                schedule.scheduleTime = this.schedulePage.StartTimeText;
                schedule.recur        = this.schedulePage.RecurText;
            }
            if (this.schedulePage.WeeklyChecked)
            {
                str_command           = "z";
                schedule.scheduleType = 3;
                job.schedule_type     = 3;
                schedule.scheduleDate = this.schedulePage.StartDateText;
                schedule.scheduleTime = this.schedulePage.StartTimeText;
                schedule.recur        = this.schedulePage.RecurText;
                List <int> listDays = new List <int>();
                if (this.schedulePage.MondayChecked)
                {
                    listDays.Add(1);
                }
                if (this.schedulePage.TuesdayChecked)
                {
                    listDays.Add(2);
                }
                if (this.schedulePage.WednesdayChecked)
                {
                    listDays.Add(3);
                }
                if (this.schedulePage.ThursdayChecked)
                {
                    listDays.Add(4);
                }
                if (this.schedulePage.FridayChecked)
                {
                    listDays.Add(5);
                }
                if (this.schedulePage.SaturdayChecked)
                {
                    listDays.Add(6);
                }
                if (this.schedulePage.SundayChecked)
                {
                    listDays.Add(0);
                }
                schedule.weeklyDays = listDays;
            }
            if (scheduleDetails != null && !scheduleDetails.Equals(""))
            {
                schedule.details = scheduleDetails;
            }
            else
            {
                schedule.details = this.repJobSettingPage.Choice_sr_ip + "|"
                                   + this.repJobSettingPage.DestUsernameText + "|" + this.repJobSettingPage.DestPasswordText + "|"
                                   + this.repJobSettingPage.VMNameText + "|" + this.repJobSettingPage.Choice_sr_uuid + "|0|"
                                   + this.repJobSettingPage.MacText + "|" + this.repJobSettingPage.NetworkValue + "|"
                                   + Helpers.GetMaster(this.repJobSettingPage.Selected_xenConnection).address + "|" + this.repJobSettingPage.Selected_xenConnection.Username + "|"
                                   + this.repJobSettingPage.Selected_xenConnection.Password + "|" + this.repJobSettingPage.Selected_host.uuid;
            }
            str_rules = HalsignUtil.ToJson(schedule);
            str_rules = str_rules.Replace("\\/", "/");


            job.host    = "";
            job.key     = "halsign_br_job_r";
            job.request = str_command + this.repJobSettingPage.JobNameText.TrimEnd().TrimStart() + "|";
            TimeSpan ts = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0));

            ts = new DateTime(this.schedulePage.StartDateValue.Year, this.schedulePage.StartDateValue.Month,
                              this.schedulePage.StartDateValue.Day, this.schedulePage.StartTimeValue.Hour, this.schedulePage.StartTimeValue.Minute,
                              this.schedulePage.StartTimeValue.Second).Subtract(new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime());
            if (jobs != null)
            {
                jobs.request       = str_command + jobs.request.Substring(1, jobs.request.Length - 1);
                jobs.schedule_type = job.schedule_type;
                str_job            = HalsignUtil.ToJson(jobs);
            }
            else
            {
                job.start_time         = "";
                job.progress           = -1;
                job.total_storage      = -1;
                job.modify_time        = "";
                job.pid                = -1;
                job.retry              = -1;
                job.speed              = -1;
                job.status             = 0;
                job.current_full_count = 0;
                job.expect_full_count  = 0;//this.scheduleBackupPage.IsFullBackup ? 0 : (this.scheduleBackupPage._expectFullCheckBox ? this.scheduleBackupPage._expectFullCountTextBox : 0);
                str_job                = HalsignUtil.ToJson(job);
            }


            //string a = this.repJobSettingPage.Selected_xenConnection.Hostname;

            Dictionary <string, string> _dconf = new Dictionary <string, string>();

            _dconf.Add("command", str_command);
            _dconf.Add("is_now", this.schedulePage.NowChecked.ToString());
            _dconf.Add("replication_rules", str_rules);
            _dconf.Add("replication_job", str_job);
            if (jobs != null)
            {
                _dconf.Add("replication_editjob", "true");
            }
            else
            {
                _dconf.Add("replication_editjob", "false");
            }

            foreach (VM item in this.repChoseVmPage.VmCheckedList)
            {
                Dictionary <string, string>         _dconf_param      = new Dictionary <string, string>();
                Dictionary <string, List <string> > _dconf_param_temp = new Dictionary <string, List <string> >();
                string host_ip = " ";
                if (!HalsignHelpers.VMHome(item).address.Equals(this.repJobSettingPage.Choice_sr_ip))
                {
                    host_ip = this.repJobSettingPage.Choice_sr_ip;
                }
                List <string> syncCheckedList = new List <string>();
                foreach (Dictionary <string, string> dRepChecked in this.synchronizationPage.RepCheckedList)
                {
                    if (dRepChecked.ContainsKey(item.uuid))
                    {
                        string request_expend = "";
                        if (this.repChoseVmPage.vdi_expand_list.ContainsKey(item.uuid))
                        {
                            int vdiNo = 0;
                            foreach (VBD vbd in item.Connection.ResolveAll <VBD>(item.VBDs))
                            {
                                if (HalsignHelpers.IsCDROM(vbd))
                                {
                                    continue;
                                }

                                if (vbd.type.Equals(XenAPI.vbd_type.Disk))
                                {
                                    vdiNo++;
                                }
                            }
                            if (vdiNo == this.repChoseVmPage.vdi_expand_list[item.uuid].Split('@').Length)
                            {
                                request_expend = "|" + "halsign_vdi_all";
                            }
                            else
                            {
                                request_expend = "|" + this.repChoseVmPage.vdi_expand_list[item.uuid];
                            }
                        }
                        if ("new".Equals(dRepChecked[item.uuid]))
                        {
                            syncCheckedList.Add(this.repJobSettingPage.JobNameText + "|" + item.uuid + "|" + host_ip + "|"
                                                + this.repJobSettingPage.DestUsernameText + "|" + this.repJobSettingPage.DestPasswordText + "|"
                                                + this.repJobSettingPage.VMNameText + "|" + this.repJobSettingPage.Choice_sr_uuid + "|0|"
                                                + this.repJobSettingPage.MacText + "|" + this.repJobSettingPage.NetworkValue + "|"
                                                + Helpers.GetMaster(this.repJobSettingPage.Selected_xenConnection).address + "|" + this.repJobSettingPage.Selected_xenConnection.Username + "|"
                                                + this.repJobSettingPage.Selected_xenConnection.Password + "|" + this.repJobSettingPage.Selected_host.uuid + request_expend);
                        }
                        else
                        {
                            syncCheckedList.Add(this.repJobSettingPage.JobNameText + "|" + item.uuid + "|" + host_ip + "|"
                                                + this.repJobSettingPage.DestUsernameText + "|" + this.repJobSettingPage.DestPasswordText + "|"
                                                + dRepChecked[item.uuid] + "|" + Helpers.GetMaster(this.repJobSettingPage.Selected_xenConnection).address + "|"
                                                + this.repJobSettingPage.Selected_xenConnection.Username + "|" + this.repJobSettingPage.Selected_xenConnection.Password + request_expend);
                        }
                    }
                }
                _dconf_param_temp.Add(item.uuid, syncCheckedList);
                listParamTemp.Add(_dconf_param_temp);
            }

            BackupAction action = new BackupAction(Messages.COPY_VM, BackupRestoreConfig.BackupActionKind.Replication, this._xenModelObject, this.repChoseVmPage.VmCheckedList, _dconf, listParamTemp, this.repChoseVmPage.vdi_expand_list);

            if (action != null)
            {
                ProgressBarStyle     progressBarStyle = ProgressBarStyle.Marquee;
                ActionProgressDialog dialog           = new ActionProgressDialog(action, progressBarStyle);
                dialog.ShowCancel = false;
                dialog.ShowDialog(this);
                if (!action.Succeeded || !string.IsNullOrEmpty(action.Result))
                {
                    base.FinishCanceled();
                    //Program.MainWindow.BringToFront();
                    //e.PageIndex = e.PageIndex - 1;
                }
                else
                {
                    base.FinishWizard();
                }

                if (!(this._xenModelObject is Host))
                {
                    // todo Program.MainWindow.SwitchToTab(MainWindow.Tab.BR);
                    if (this._xenModelObject is VM)
                    {
                        VM vm = this._xenModelObject as VM;
                        vm.NotifyPropertyChanged("other_config");
                    }
                }
            }
        }
示例#8
0
        public void InitReplicationViewData()
        {
            BackupRestoreConfig.BrSchedule schedule = (BackupRestoreConfig.BrSchedule)HalsignUtil.JsonToObject(other_config["halsign_rep_rules"], typeof(BackupRestoreConfig.BrSchedule));
            BackupRestoreConfig.Job        job      = (BackupRestoreConfig.Job)HalsignUtil.JsonToObject(other_config["halsign_br_job_r"], typeof(BackupRestoreConfig.Job));
            this.Text = schedule.jobName + this.Text;
            string[] details = schedule.details.Split('|');
            VMNameDetailLabel.Text = vm_name;

            if (job.request.StartsWith(BackupRestoreConfig.REPLICATION_ONCE))
            {
                JobScheduleTypeDetailLabel.Text = Messages.REPLICATION_ONCE;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.REPLICATION_DAILY))
            {
                JobScheduleTypeDetailLabel.Text = Messages.REPLICATION_DAILY;
                RecurDetailLabel.Text           = schedule.recur + Messages.BACKUP_RECUR_TEXT_DAYS;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.REPLICATION_WEEKLY))
            {
                JobScheduleTypeDetailLabel.Text = Messages.REPLICATION_WEEKLY;
                List <int> WeeklyDays = schedule.weeklyDays;
                WeeklyDays.Sort();
                string WeeklyDayStr = "";
                if (WeeklyDays != null && WeeklyDays.Count > 0)
                {
                    foreach (var weeklyDay in WeeklyDays)
                    {
                        switch (weeklyDay)
                        {
                        case 0: WeeklyDayStr += Messages.SUNDAY + ","; break;

                        case 1: WeeklyDayStr += Messages.MONDAY + ","; break;

                        case 2: WeeklyDayStr += Messages.TUESDAY + ","; break;

                        case 3: WeeklyDayStr += Messages.WEDNESDAY + ","; break;

                        case 4: WeeklyDayStr += Messages.THURSDAY + ","; break;

                        case 5: WeeklyDayStr += Messages.FRIDAY + ","; break;

                        case 6: WeeklyDayStr += Messages.SATURDAY + ","; break;
                        }
                    }
                }
                WeeklyDaysDetailLabel.Text += WeeklyDayStr.Substring(0, WeeklyDayStr.Length - 1);
                RecurDetailLabel.Text       = schedule.recur + Messages.BACKUP_RECUR_TEXT_WEEKS;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.REPLICATION_CIRCLE))
            {
                JobScheduleTypeDetailLabel.Text = Messages.REPLICATION_CIRCLE;
                RecurDetailLabel.Text           = schedule.recur + Messages.BACKUP_RECUR_TEXT_HOURS;
            }

            JobNameDetailLable.Text    = schedule.jobName;
            StartDateDetailLabel.Text  = schedule.scheduleDate;
            StartTimeDetailLabel.Text  = schedule.scheduleTime;
            AppendDetailLabel.Text     = details[3];
            DestServerDetailLabel.Text = details[0];
            DestSRDetailLabel.Text     = details[4];
            NetworkDetailLabel.Text    = details[7];
            string hostname = details[0];
            //int port = 80; // default
            string  user     = details[1];
            string  password = details[2];
            Session session  = null;

            try
            {
                XenConnection XenConnection = new XenConnection(hostname, "");
                session = SessionFactory.CreateSession(connection, hostname, 443);
                session.login_with_password(user, password, API_Version.LATEST);

                /*XenRef<SR> sr = SR.get_by_uuid(session, details[4]);
                 * DestSRDetailLabel.Text = SR.get_name_label(session, sr);
                 * XenRef<XenAPI.Network> network = XenAPI.Network.get_by_uuid(session, details[7]);
                 * NetworkDetailLabel.Text = XenAPI.Network.get_name_label(session, network).Replace("Pool-wide network associated with eth", Messages.NETWORK);
                 */
                setSrNetwork(session, details);
            }catch (Failure exn)
            {
                if ("HOST_IS_SLAVE".Equals(exn.ErrorDescription[0]))
                {
                    session = SessionFactory.CreateSession(connection, exn.ErrorDescription[1], 443);
                    session.login_with_password(user, password, API_Version.LATEST);
                    setSrNetwork(session, details);
                }
            }

            /*catch (Failure f)
             * {
             *  if (f.ErrorDescription.Count > 0)
             *      throw new CancelledException();
             * }*/
            finally
            {
                if (session != null)
                {
                    session.logout();
                }
            }

            OptionDetailLabel.Text = "";
        }
示例#9
0
        public void InitBackupViewData()
        {
            BackupRestoreConfig.BrSchedule schedule = (BackupRestoreConfig.BrSchedule)HalsignUtil.JsonToObject(other_config["halsign_br_rules"], typeof(BackupRestoreConfig.BrSchedule));
            BackupRestoreConfig.Job        job      = (BackupRestoreConfig.Job)HalsignUtil.JsonToObject(other_config["halsign_br_job_s"], typeof(BackupRestoreConfig.Job));
            VMNameDetailLabel.Text = vm_name;
            this.Text = schedule.jobName + this.Text;
            if (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP_ONCE) ||
                (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP) && schedule.scheduleType == 1))
            {
                JobScheduleTypeDetailLabel.Text = Messages.FULL_BACKUP_NOW;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.BACKUP_ONCE) ||
                     (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP) && schedule.scheduleType == 1))
            {
                JobScheduleTypeDetailLabel.Text = Messages.BACKUP_ONCE;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.BACKUP_DAILY) ||
                     (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP) && schedule.scheduleType == 2))
            {
                JobScheduleTypeDetailLabel.Text = Messages.BACKUP_DAILY;
                RecurDetailLabel.Text           = schedule.recur + Messages.BACKUP_RECUR_TEXT_DAYS;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.BACKUP_WEEKLY) ||
                     (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP) && schedule.scheduleType == 3))
            {
                JobScheduleTypeDetailLabel.Text = Messages.BACKUP_WEEKLY;
                List <int> WeeklyDays = schedule.weeklyDays;
                WeeklyDays.Sort();
                string WeeklyDayStr = "";
                if (WeeklyDays != null && WeeklyDays.Count > 0)
                {
                    foreach (var weeklyDay in WeeklyDays)
                    {
                        switch (weeklyDay)
                        {
                        case 0: WeeklyDayStr += Messages.SUNDAY + ","; break;

                        case 1: WeeklyDayStr += Messages.MONDAY + ","; break;

                        case 2: WeeklyDayStr += Messages.TUESDAY + ","; break;

                        case 3: WeeklyDayStr += Messages.WEDNESDAY + ","; break;

                        case 4: WeeklyDayStr += Messages.THURSDAY + ","; break;

                        case 5: WeeklyDayStr += Messages.FRIDAY + ","; break;

                        case 6: WeeklyDayStr += Messages.SATURDAY + ","; break;
                        }
                    }
                }
                WeeklyDaysDetailLabel.Text += WeeklyDayStr.Substring(0, WeeklyDayStr.Length - 1);
                RecurDetailLabel.Text       = schedule.recur + Messages.BACKUP_RECUR_TEXT_WEEKS;
            }
            else if (job.request.StartsWith(BackupRestoreConfig.BACKUP_CIRCLE) ||
                     (job.request.StartsWith(BackupRestoreConfig.FULL_BACKUP) && schedule.scheduleType == 4))
            {
                JobScheduleTypeDetailLabel.Text = Messages.BACKUP_CIRCLE;
                RecurDetailLabel.Text           = schedule.recur + Messages.BACKUP_RECUR_TEXT_HOURS;
            }

            JobNameDetailLable.Text   = schedule.jobName;
            StartDateDetailLabel.Text = schedule.scheduleDate;
            StartTimeDetailLabel.Text = schedule.scheduleTime;
            OptionDetailLabel.Text    = schedule.expect_full_count == -1 ? "" : string.Format(Messages.FULL_BACKUP_RECURS_EVERY, schedule.expect_full_count);
        }
示例#10
0
        private void SummeryInfoCheck()
        {
            String str_rules = "";
            String str_job   = "";
            String c         = "";

            BackupRestoreConfig.BrSchedule schedule = new BackupRestoreConfig.BrSchedule();
            schedule.current_full_count = 0;
            if (this.scheduleBackupPage.NowRadioButtonIsChecked())
            {
                schedule.jobName      = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType = 0;
                schedule.scheduleDate = "";
                str_rules             = HalsignUtil.ToJson(schedule);
            }
            if (this.scheduleBackupPage.OnceRadioButtonIsChecked() && !this.scheduleBackupPage.IsFullBackup)
            {
                schedule.jobName      = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType = 1;
                schedule.scheduleDate = this.scheduleBackupPage.StartDatePickerText;
                schedule.scheduleTime = this.scheduleBackupPage.StartTimePickerText;
                str_rules             = HalsignUtil.ToJson(schedule);
                c = "s";
            }

            if (this.scheduleBackupPage.OnceRadioButtonIsChecked() && this.scheduleBackupPage.IsFullBackup)
            {
                schedule.jobName      = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType = 5;
                schedule.scheduleDate = this.scheduleBackupPage.StartDatePickerText;
                schedule.scheduleTime = this.scheduleBackupPage.StartTimePickerText;
                str_rules             = HalsignUtil.ToJson(schedule);
                c = "q";
            }

            if (this.scheduleBackupPage.DailyRadioButtonIsChecked())
            {
                schedule.jobName           = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType      = 2;
                schedule.scheduleDate      = this.scheduleBackupPage.StartDatePickerText;
                schedule.scheduleTime      = this.scheduleBackupPage.StartTimePickerText;
                schedule.recur             = this.scheduleBackupPage._RecurTextBox == "" ? 0 : Int32.Parse(this.scheduleBackupPage._RecurTextBox);
                schedule.expect_full_count = this.scheduleBackupPage._expectFullCheckBox?this.scheduleBackupPage._expectFullCountTextBox:0;
                str_rules = HalsignUtil.ToJson(schedule);
                c         = "t";
            }
            if (this.scheduleBackupPage.CircleRadioButtonIsChecked())
            {
                schedule.jobName           = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType      = 4;
                schedule.scheduleDate      = this.scheduleBackupPage.StartDatePickerText;
                schedule.scheduleTime      = this.scheduleBackupPage.StartTimePickerText;
                schedule.recur             = this.scheduleBackupPage._RecurTextBox == "" ? 1 : Int32.Parse(this.scheduleBackupPage._RecurTextBox);
                schedule.expect_full_count = this.scheduleBackupPage._expectFullCheckBox ? this.scheduleBackupPage._expectFullCountTextBox : 0;
                str_rules = HalsignUtil.ToJson(schedule);
                c         = "h";
            }
            if (this.scheduleBackupPage.WeeklyRadioButtonIsChecked())
            {
                schedule.jobName      = this.optionsBackupPage._JobNameTextBox;
                schedule.scheduleType = 3;
                schedule.scheduleDate = this.scheduleBackupPage.StartDatePickerText;
                schedule.scheduleTime = this.scheduleBackupPage.StartTimePickerText;
                c = "w";
                schedule.recur             = this.scheduleBackupPage._RecurTextBox == "" ? 0 : Int32.Parse(this.scheduleBackupPage._RecurTextBox);
                schedule.expect_full_count = this.scheduleBackupPage._expectFullCheckBox ? this.scheduleBackupPage._expectFullCountTextBox : 0;
                List <int> list = new List <int>();
                if (this.scheduleBackupPage._MondayCheckBoxIsChecked())
                {
                    list.Add(1);
                }
                if (this.scheduleBackupPage._TuesdayCheckBoxIsChecked())
                {
                    list.Add(2);
                }
                if (this.scheduleBackupPage._WednesdayCheckBoxIsChecked())
                {
                    list.Add(3);
                }
                if (this.scheduleBackupPage._ThursdayCheckBoxIsChecked())
                {
                    list.Add(4);
                }
                if (this.scheduleBackupPage._FridayCheckBoxIsChecked())
                {
                    list.Add(5);
                }
                if (this.scheduleBackupPage._SaturdayCheckBoxIsChecked())
                {
                    list.Add(6);
                }
                if (this.scheduleBackupPage._SundayCheckBoxIsChecked())
                {
                    list.Add(0);
                }
                schedule.weeklyDays = list;
                str_rules           = HalsignUtil.ToJson(schedule);
            }
            str_rules = str_rules.Replace("\\/", "/");

            if (!c.Equals(""))
            {
                BackupRestoreConfig.Job job = new BackupRestoreConfig.Job();
                job.job_name = this.optionsBackupPage._JobNameTextBox;
                job.host     = "";
                job.key      = "halsign_br_job_s";
                job.request  = c + this.optionsBackupPage._JobNameTextBox.TrimEnd().TrimStart() + "|";
                TimeSpan ts = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0));
                ts = new DateTime(this.scheduleBackupPage.StartDatePickerValue.Year, this.scheduleBackupPage.StartDatePickerValue.Month,
                                  this.scheduleBackupPage.StartDatePickerValue.Day, this.scheduleBackupPage.StartTimePickerValue.Hour, this.scheduleBackupPage.StartTimePickerValue.Minute,
                                  this.scheduleBackupPage.StartTimePickerValue.Second).Subtract(new DateTime(1970, 1, 1, 0, 0, 0).ToLocalTime());
                job.start_time         = "";
                job.progress           = -1;
                job.total_storage      = -1;
                job.modify_time        = "";
                job.pid                = -1;
                job.retry              = -1;
                job.speed              = -1;
                job.status             = 0;
                job.current_full_count = 0;
                if (c.Equals("s"))
                {
                    job.schedule_type = 1;
                }
                else if (c.Equals("q"))
                {
                    job.schedule_type = 5;
                }
                else if (c.Equals("t"))
                {
                    job.schedule_type = 2;
                }
                else if (c.Equals("h"))
                {
                    job.schedule_type = 4;
                }
                else if (c.Equals("w"))
                {
                    job.schedule_type = 3;
                }
                job.expect_full_count = this.scheduleBackupPage.IsFullBackup ? 0 : (this.scheduleBackupPage._expectFullCheckBox ? this.scheduleBackupPage._expectFullCountTextBox : 0);
                str_job = HalsignUtil.ToJson(job);
            }
            Dictionary <string, string> _dconf = new Dictionary <string, string>();

            _dconf.Add("job_name", this.optionsBackupPage._JobNameTextBox.TrimEnd().TrimStart());
            //_dconf.Add("command", this.optionsBackupPage.IsFullBackup ? "b" : "i");
            _dconf.Add("command", this.scheduleBackupPage.IsFullBackup ? "b" : "i");
            _dconf.Add("is_now", this.scheduleBackupPage.NowRadioButtonIsChecked().ToString());
            _dconf.Add("backup_rules", str_rules);
            _dconf.Add("backup_job", str_job);

            BackupAction action = new BackupAction(Messages.BACKUP_VM, BackupRestoreConfig.BackupActionKind.Backup, this._xenModelObject, this.vmCheckedList, _dconf, this.vdi_dictionary);

            if (action != null)
            {
                ProgressBarStyle     progressBarStyle = ProgressBarStyle.Marquee;
                ActionProgressDialog dialog           = new ActionProgressDialog(action, progressBarStyle);
                dialog.ShowCancel = false;
                dialog.ShowDialog(this);
                if (!action.Succeeded || !string.IsNullOrEmpty(action.Result))
                {
                    base.FinishCanceled();
                }
                else
                {
                    base.FinishWizard();
                }
            }

            if (!(this._xenModelObject is Host))
            {
                // todo Program.MainWindow.SwitchToTab(MainWindow.Tab.BR);
                if (this._xenModelObject is VM)
                {
                    VM vm = this._xenModelObject as VM;
                    vm.NotifyPropertyChanged("other_config");
                }
            }
        }