Пример #1
0
        // 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();
        }
Пример #2
0
 // 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);
 }
Пример #3
0
        // 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();
            }
        }
Пример #4
0
        // 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: 0x06000B3E RID: 2878 RVA: 0x000316CF File Offset: 0x0002F8CF
 internal OsComponentManager(string machineName, HaTaskStringBuilderOutputHelper output)
 {
     if (machineName != null && !Cluster.StringIEquals(machineName, Environment.MachineName))
     {
         throw new NotImplementedException("OsComponentManager is not remoteable yet.");
     }
     this.m_output = output;
 }
Пример #6
0
        // Token: 0x060008B7 RID: 2231 RVA: 0x00029DD4 File Offset: 0x00027FD4
        internal static void AddDagClusterNode(AmServerName mailboxServerName, out string verboseLog)
        {
            string tmpVerboseLog = string.Empty;
            HaTaskStringBuilderOutputHelper output = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!AddDagClusterNode");

            DagHelper.nodeActionTracker.PerformNodeAction(output, mailboxServerName, NodeAction.Add, delegate
            {
                DagHelper.AddDagClusterNodeInternal(output, mailboxServerName, out tmpVerboseLog);
            });
            verboseLog = tmpVerboseLog;
        }
Пример #7
0
        // Token: 0x060008B9 RID: 2233 RVA: 0x00029F54 File Offset: 0x00028154
        internal static bool EvictDagClusterNode(AmServerName convictedNode, out string verboseLog)
        {
            string tmpVerboseLog = string.Empty;
            bool   isSuccess     = false;
            HaTaskStringBuilderOutputHelper output = new HaTaskStringBuilderOutputHelper("m.e.cluster.replay.dll!EvictDagClusterNode");

            DagHelper.nodeActionTracker.PerformNodeAction(output, convictedNode, NodeAction.Evict, delegate
            {
                isSuccess = DagHelper.EvictDagClusterNodeInternal(output, convictedNode, out tmpVerboseLog);
            });
            verboseLog = tmpVerboseLog;
            return(isSuccess);
        }
Пример #8
0
 // 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();
     }
 }
Пример #9
0
        // 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();
            }
        }