internal static void ForSomeHosts(AsyncAction action, PIF pif, bool this_host, bool lock_pif, int hi, PIFMethod pif_method) { System.Diagnostics.Trace.Assert(pif != null); XenAPI.Network network = action.Connection.Resolve(pif.network); if (network == null) { log.Warn("Network has gone away"); return; } List <PIF> to_reconfigure = action.Connection.ResolveAll(network.PIFs).FindAll( (Predicate <PIF>) delegate(PIF p) { return(this_host == (p.host.opaque_ref == pif.host.opaque_ref)); }); if (to_reconfigure.Count == 0) { return; } int lo = action.PercentComplete; int inc = (hi - lo) / to_reconfigure.Count; foreach (PIF p in to_reconfigure) { if (lock_pif) { p.Locked = true; } try { lo += inc; pif_method(action, p, lo); } finally { if (lock_pif) { p.Locked = false; } } } }
internal static void ForSomeHosts(AsyncAction action, PIF pif, bool this_host, bool lock_pif, int hi, PIFMethod pif_method) { System.Diagnostics.Trace.Assert(pif != null); XenAPI.Network network = action.Connection.Resolve(pif.network); if (network == null) { log.Warn("Network has gone away"); return; } List<PIF> to_reconfigure = action.Connection.ResolveAll(network.PIFs).FindAll( (Predicate<PIF>)delegate(PIF p) { return this_host == (p.host.opaque_ref == pif.host.opaque_ref); }); if (to_reconfigure.Count == 0) return; int lo = action.PercentComplete; int inc = (hi - lo) / to_reconfigure.Count; foreach (PIF p in to_reconfigure) { if (lock_pif) p.Locked = true; try { lo += inc; pif_method(action, p, lo); } finally { if (lock_pif) p.Locked = false; } } }