Beispiel #1
0
        private void DestroyPBDs(ref int inc)
        {
            if (SR.PBDs.Count < 1)
            {
                return;
            }

            foreach (XenRef <PBD> pbd in SR.PBDs)
            {
                RelatedTask = PBD.async_destroy(Session, pbd.opaque_ref);
                PollToCompletion(PercentComplete, PercentComplete + inc);
            }
        }
Beispiel #2
0
        protected override void Run()
        {
            foreach (XenRef <PBD> pbd in sr.PBDs)
            {
                RelatedTask = PBD.async_destroy(Session, pbd.opaque_ref);
                PollToCompletion();
            }

            Description = Messages.ACTION_SR_ATTACHING;

            // Now repair the SR with new PBDs for each host in the pool
            PBD pbdTemplate = new PBD();

            pbdTemplate.currently_attached = false;
            pbdTemplate.device_config      = dconf;
            pbdTemplate.SR = new XenRef <SR>(sr.opaque_ref);

            int         delta     = 100 / (Connection.Cache.HostCount * 2);
            List <Host> _listHost = new List <Host>(Connection.Cache.Hosts);

            masterFirst(_listHost);
            foreach (Host host in _listHost)
            {
                // Create the PBD
                log.DebugFormat("Creating PBD for host {0}", host.Name);
                this.Description = String.Format(Messages.ACTION_SR_REPAIR_CREATE_PBD, Helpers.GetName(host));
                pbdTemplate.host = new XenRef <Host>(host.opaque_ref);
                RelatedTask      = PBD.async_create(this.Session, pbdTemplate);
                PollToCompletion(PercentComplete, PercentComplete + delta);
                XenRef <PBD> pbdRef = new XenRef <PBD>(this.Result);

                // Now plug the PBD
                log.DebugFormat("Plugging PBD for host {0}", host.Name);
                this.Description = String.Format(Messages.ACTION_SR_REPAIR_PLUGGING_PBD, Helpers.GetName(host));
                RelatedTask      = PBD.async_plug(this.Session, pbdRef);
                PollToCompletion(PercentComplete, PercentComplete + delta);
            }

            Description = Messages.ACTION_SR_ATTACH_SUCCESSFUL;
        }