protected override void ProcessRecord()
        {
            var sConfiguration = new ShardConfiguration
            {
                Port = Port,
                Name = Shard,
                NodeHeartbeatInterval = HeartBeat,
            };

            var serverNodes = new Dictionary <string, ServerNode>();

            var sNode = new ServerNode {
                Name = Server.Split('[', ']')[0]
            };

            int priority = 1;

            if (Server.Contains('['))
            {
                string priorityString = Server.Split('[', ']')[1];
                int.TryParse(priorityString, out priority);
                priority = priority > 3 ? 3 : priority;
            }

            sNode.Priority = priority < 1 ? 1 : priority;
            serverNodes.Add(sNode.Name, sNode);

            sConfiguration.Servers = new ServerNodes();
            if (serverNodes.Count > 0)
            {
                sConfiguration.Servers.Nodes = serverNodes;
            }

            ClusterConfiguration config = new ClusterConfiguration
            {
                Name        = Common.MiscUtil.CLUSTERED,
                DisplayName = Name,
                Deployment  = new DeploymentConfiguration()
            };

            config.Deployment.AddShard(sConfiguration);


            var current = new RemoteConfigurationManager();

            current.CreateCluster(config, new SSPIClientAuthenticationCredential());
            if (current.VerifyConfigurationCluster())
            {
                ConfigurationConnection.ConfigCluster        = current.GetConfigurationClusterConfiguration();
                ConfigurationConnection.ClusterConfiguration = current.GetDatabaseClusterConfig(true);
                ConfigurationConnection.Current = current;
                ConfigurationConnection.UpdateDatabaseClusterInfo();
            }
            SessionState.Path.SetLocation(ProviderUtil.DRIVE_ROOT + ":\\" + ConfigurationConnection.ClusterConfiguration.DisplayName);
        }
Example #2
0
        protected override void BeginProcessing()
        {
            if (string.IsNullOrEmpty(Server))
            {
                Server = ProviderUtil.GetLocalAddress();
            }

            var rcm = new RemoteConfigurationManager();

            rcm.Initilize(StandAlone?MiscUtil.LOCAL:MiscUtil.CLUSTERED, Server, Port, new ConfigurationChannelFormatter(), new SSPIClientAuthenticationCredential());

            if (!_standAlone)
            {
                if (rcm.VerifyConfigurationCluster())
                {
                    ConfigurationConnection.ConfigCluster        = rcm.GetConfigurationClusterConfiguration();
                    ConfigurationConnection.ClusterConfiguration = rcm.GetDatabaseClusterConfig(true);
                    ConfigurationConnection.Current = rcm;
                    ConfigurationConnection.UpdateDatabaseClusterInfo();
                }
                else
                {
                    throw new Exception("Database cluster does not exist on the specified server.");
                }
            }
            else
            {
                var localConfig = rcm.GetDatabaseClusterConfig(false);
                if (localConfig != null)
                {
                    var configCluster = new ConfigServerConfiguration
                    {
                        Name    = MiscUtil.STAND_ALONE,
                        Port    = Port,
                        Servers = new ServerNodes()
                    };
                    configCluster.Servers.AddNode(new ServerNode {
                        Name = Server, Priority = 1
                    });
                    ConfigurationConnection.ConfigCluster        = configCluster;
                    ConfigurationConnection.ClusterConfiguration = localConfig;
                    ConfigurationConnection.Current = rcm;
                    ConfigurationConnection.UpdateClusterConfiguration();
                    ConfigurationConnection.UpdateDatabaseClusterInfo();
                }
                else
                {
                    throw new Exception("Standalone database does not exist on the specified server.");
                }
            }
        }