// Token: 0x060008BA RID: 2234 RVA: 0x00029FC4 File Offset: 0x000281C4 private static bool EvictDagClusterNodeInternal(HaTaskStringBuilderOutputHelper output, AmServerName convictedNode, out string verboseLog) { ExTraceGlobals.ClusterTracer.TraceDebug <AmServerName>(0L, "Going to EvictClusterNode( {0} ) on this machine.", convictedNode); try { using (IAmCluster amCluster = ClusterFactory.Instance.Open()) { amCluster.EvictNodeFromCluster(convictedNode); } } catch (ClusterException ex) { output.AppendLogMessage("EvictDagClusterNode got exception {0}", new object[] { ex }); AmClusterException exception = DagHelper.TranslateClusterExceptionForClient(ex); DagHelper.ThrowDagTaskOperationWrapper(exception); } catch (LocalizedException ex2) { output.AppendLogMessage("EvictDagClusterNode got exception {0}", new object[] { ex2 }); DagHelper.ThrowDagTaskOperationWrapper(ex2); } finally { verboseLog = output.ToString(); } return(true); }
// Token: 0x060008B6 RID: 2230 RVA: 0x00029CF0 File Offset: 0x00027EF0 internal static void InstallFailoverClustering(out string verboseLog) { HaTaskStringBuilderOutputHelper haTaskStringBuilderOutputHelper = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!InstallFailoverClustering"); ExTraceGlobals.ClusterTracer.TraceDebug(0L, "Going to InstallFailoverClustering() on this machine."); haTaskStringBuilderOutputHelper.WriteProgressSimple(ReplayStrings.DagTaskInstallingFailoverClustering(AmServerName.LocalComputerName.NetbiosName)); try { OsComponentManager osComponentManager = new OsComponentManager(null, haTaskStringBuilderOutputHelper); osComponentManager.AddWindowsFeature(OsComponent.ComponentRSATClustering); osComponentManager.AddWindowsFeature(OsComponent.ComponentFailoverClustering); } catch (DagTaskServerException ex) { ExTraceGlobals.ClusterTracer.TraceError <DagTaskServerException>(0L, "InstallFailoverClustering() failed: {0}", ex); haTaskStringBuilderOutputHelper.WriteErrorSimple(ex); throw ex; } catch (DagTaskServerTransientException ex2) { ExTraceGlobals.ClusterTracer.TraceError <DagTaskServerTransientException>(0L, "InstallFailoverClustering() failed: {0}", ex2); haTaskStringBuilderOutputHelper.WriteErrorSimple(ex2); throw ex2; } haTaskStringBuilderOutputHelper.WriteProgressSimple(ReplayStrings.DagTaskInstalledFailoverClustering); verboseLog = haTaskStringBuilderOutputHelper.ToString(); }
// Token: 0x060008B5 RID: 2229 RVA: 0x00029C34 File Offset: 0x00027E34 internal static void DestroyDagCluster(string clusterName, out string verboseLog) { HaTaskStringBuilderOutputHelper haTaskStringBuilderOutputHelper = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!DestroyDagCluster"); ExTraceGlobals.ClusterTracer.TraceDebug <string>(0L, "Going to DestroyCluster( {0} ) on this machine.", clusterName); GCHandle value = GCHandle.Alloc(haTaskStringBuilderOutputHelper); Exception ex = null; try { haTaskStringBuilderOutputHelper.LastException = null; haTaskStringBuilderOutputHelper.MaxPercentageDuringCallback = 0; using (IAmCluster amCluster = ClusterFactory.Instance.Open()) { amCluster.DestroyExchangeCluster(haTaskStringBuilderOutputHelper, GCHandle.ToIntPtr(value), out ex, true); } if (ex != null) { haTaskStringBuilderOutputHelper.WriteErrorSimple(ex); } } catch (LocalizedException exception) { DagHelper.ThrowDagTaskOperationWrapper(exception); } finally { verboseLog = haTaskStringBuilderOutputHelper.ToString(); value.Free(); } }
// Token: 0x060008B3 RID: 2227 RVA: 0x00029B08 File Offset: 0x00027D08 internal static IAmCluster CreateDagCluster(string clusterName, AmServerName firstNodeName, string[] ipAddresses, uint[] netmasks, out string verboseLog) { IAmCluster result = null; HaTaskStringBuilderOutputHelper haTaskStringBuilderOutputHelper = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!CreateDagCluster"); GCHandle value = GCHandle.Alloc(haTaskStringBuilderOutputHelper); Exception ex = null; try { haTaskStringBuilderOutputHelper.WriteProgressSimple(ReplayStrings.DagTaskFormingClusterProgress(clusterName, firstNodeName.NetbiosName)); haTaskStringBuilderOutputHelper.LastException = null; haTaskStringBuilderOutputHelper.MaxPercentageDuringCallback = 0; result = ClusterFactory.Instance.CreateExchangeCluster(clusterName, firstNodeName, ipAddresses, netmasks, haTaskStringBuilderOutputHelper, GCHandle.ToIntPtr(value), out ex, true); if (ex != null) { haTaskStringBuilderOutputHelper.WriteErrorSimple(ex); } } catch (LocalizedException exception) { DagHelper.ThrowDagTaskOperationWrapper(exception); } finally { verboseLog = haTaskStringBuilderOutputHelper.ToString(); value.Free(); } return(result); }
// Token: 0x060008B8 RID: 2232 RVA: 0x00029E34 File Offset: 0x00028034 private static void AddDagClusterNodeInternal(HaTaskStringBuilderOutputHelper output, AmServerName mailboxServerName, out string verboseLog) { try { Exception ex = null; output.AppendLogMessage("Opening a local AmCluster handle.", new object[0]); using (IAmCluster amCluster = ClusterFactory.Instance.Open()) { output.WriteProgressSimple(ReplayStrings.DagTaskAddingServerToDag(mailboxServerName.NetbiosName, amCluster.Name)); GCHandle value = GCHandle.Alloc(output); try { output.LastException = null; output.MaxPercentageDuringCallback = 0; amCluster.AddNodeToCluster(mailboxServerName, output, GCHandle.ToIntPtr(value), out ex, true); } finally { value.Free(); } } if (output.LastException != null) { output.WriteErrorSimple(output.LastException); } if (ex != null) { output.WriteErrorSimple(ex); } output.WriteProgressSimple(ReplayStrings.DagTaskJoinedNodeToCluster(mailboxServerName.NetbiosName)); } catch (LocalizedException exception) { DagHelper.ThrowDagTaskOperationWrapper(exception); } finally { verboseLog = output.ToString(); } }
// Token: 0x060008BC RID: 2236 RVA: 0x0002A100 File Offset: 0x00028300 internal static void ForceCleanupNode(out string verboseLog) { ExTraceGlobals.ClusterTracer.TraceDebug(0L, "ForceCleanupNode called"); HaTaskStringBuilderOutputHelper haTaskStringBuilderOutputHelper = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!ForceCleanupNode"); try { ManagementScope managementScope = new ManagementScope("\\\\.\\root\\MSCluster"); managementScope.Connect(); string path = "MSCluster_Cluster"; using (ManagementClass managementClass = new ManagementClass(managementScope, new ManagementPath(path), null)) { managementClass.Get(); using (ManagementObjectCollection instances = managementClass.GetInstances()) { if (instances == null) { throw new ManagementApiException("mgmtClass.GetInstances()"); } foreach (ManagementBaseObject managementBaseObject in instances) { ManagementObject managementObject = (ManagementObject)managementBaseObject; using (managementObject) { using (ManagementBaseObject methodParameters = managementObject.GetMethodParameters("ForceCleanup")) { if (methodParameters == null) { throw new ManagementApiException("clus.GetMethodParameters(\"ForceCleanup\")"); } methodParameters.SetPropertyValue("Timeout", 10000); methodParameters.SetPropertyValue("NodeName", Environment.MachineName); try { using (managementObject.InvokeMethod("ForceCleanup", methodParameters, null)) { } } catch (ManagementException ex) { ExTraceGlobals.ClusterTracer.TraceDebug <string>(0L, "ForceCleanup throws {0}", ex.Message); } } } } } } } catch (COMException exception) { DagHelper.ThrowDagTaskOperationWrapper(exception); } catch (ManagementApiException exception2) { DagHelper.ThrowDagTaskOperationWrapper(exception2); } catch (ManagementException exception3) { DagHelper.ThrowDagTaskOperationWrapper(exception3); } finally { verboseLog = haTaskStringBuilderOutputHelper.ToString(); } }