public StandAloneInstallerJSONModelOctober2017(IUserConfig config, IClusterTopology topology, string configurationVersion) : base(config, topology, configurationVersion) { this.ApiVersion = StandAloneInstallerJSONModelOctober2017.ModelApiVersion; this.Properties = new PropertyOctober2017(); this.Properties.UpdateFromUserConfig(config); }
protected override ClusterManifestTypeInfrastructure OnGetInfrastructure(IClusterTopology topology, IEnumerable <NodeDescription> seedNodes, IEnumerable <ClusterManifestTypeNodeType> nodeTypes) { var serverInfra = new ClusterManifestTypeInfrastructureWindowsServer { NodeList = new FabricNodeType[topology.Nodes.Count] }; int index = 0; var distinctIpAddreses = new HashSet <string>(); foreach (var node in topology.Nodes.Values) { serverInfra.NodeList[index] = new FabricNodeType() { NodeName = node.NodeName, FaultDomain = node.FaultDomain, UpgradeDomain = node.UpgradeDomain, IPAddressOrFQDN = node.IPAddress, IsSeedNode = seedNodes.Any(seedNode => string.Equals(seedNode.NodeName, node.NodeName, StringComparison.OrdinalIgnoreCase)), NodeTypeRef = node.NodeTypeRef }; distinctIpAddreses.Add(node.IPAddress); index++; } if (distinctIpAddreses.Count < topology.Nodes.Count) { serverInfra.IsScaleMin = true; } return(new ClusterManifestTypeInfrastructure() { Item = serverInfra }); }
public MockupCluster(IAdminConfig adminConfig, IUserConfig userConfig, IClusterTopology topology, ITraceLogger traceLogger) { this.TargetWrpConfig = adminConfig; this.TargetCsmConfig = userConfig; this.Topology = topology; this.ClusterManifestVersion = 0; this.SeedNodeSelector = new SeedNodeSelector(new TimeSpan(0, 1, 0), new MockupTraceLogger()); this.SetStateMachine(traceLogger); this.SetGeneratorSettings(); this.fabricSettingsActivator = new Lazy <IFabricSettingsActivator>(() => { return(new MockupFabricSettingsActivator()); }); this.NodeTypeNodeStatusList = new Dictionary <string, SortedList <string, NodeStatus> >(); this.TargetCsmConfig.NodeTypes.ForEach(nodeType => this.NodeTypeNodeStatusList.Add(nodeType.Name, new SortedList <string, NodeStatus>())); foreach (var node in this.Topology.Nodes) { this.NodeTypeNodeStatusList[node.Value.NodeTypeRef].Add( node.Key, new NodeStatus() { NodeName = node.Value.NodeName, InstanceId = 0, NodeDeactivationIntent = WrpNodeDeactivationIntent.Invalid, NodeState = NodeState.Enabled, NodeType = node.Value.NodeTypeRef }); } }
internal static StandAloneInstallerJsonModelBase ConstructByApiVersion( IUserConfig config, IClusterTopology topology, string configurationVersion, string apiVersion) { Type modelType; if (string.IsNullOrWhiteSpace(apiVersion)) { // backward compatibility: // At powershell layer, apiVersion is not required. // At REST layer, apiVersion is not required for api-version prior to 6.0. modelType = StandAloneInstallerJsonModelBase.apiVersionTable.Last().Item2; } else { var entry = StandAloneInstallerJsonModelBase.apiVersionTable.FirstOrDefault(p => p.Item1 == apiVersion); if (entry != null) { modelType = entry.Item2; } else { throw new NotSupportedException(apiVersion + " is not supported!"); } } return((StandAloneInstallerJsonModelBase)Activator.CreateInstance(modelType, config, topology, configurationVersion)); }
internal override void FromInternal( IClusterTopology clusterTopology, IUserConfig userConfig, string apiVersion) { base.FromInternal(clusterTopology, userConfig, apiVersion); this.Properties = new PropertyOctober2017(); this.Properties.UpdateFromUserConfig(userConfig); }
// Ensure all overriden implementations of FromInternal cover all newly added properties. internal virtual void FromInternal( IClusterTopology clusterTopology, IUserConfig userConfig, string apiVersion) { this.Nodes = new List <NodeDescriptionGA>( clusterTopology.Nodes.Values.Select <NodeDescription, NodeDescriptionGA>( node => NodeDescriptionGA.ReadFromInternal(node))); this.ApiVersion = apiVersion; this.ClusterConfigurationVersion = userConfig.Version.Version; this.Name = userConfig.ClusterName; }
public MockupClusterManifestBuilder( IClusterTopology topology, SeedNodeSelector seedNodeSelector, IUserConfig targetCsmConfig, IAdminConfig targetWrpConfig, ClusterNodeConfig targetNodeConfig, IManifestVersionGenerator versionGenerator, IFabricSettingsActivator fabricSettingsActivator, ClusterManifestGeneratorSettings clusterManifestGeneratorSettings, ITraceLogger traceLogger) : base(topology, seedNodeSelector, targetCsmConfig, targetWrpConfig, targetNodeConfig, versionGenerator, fabricSettingsActivator, clusterManifestGeneratorSettings, traceLogger) { }
protected virtual ClusterManifestTypeInfrastructure OnGetInfrastructure(IClusterTopology inputTopology, IEnumerable <NodeDescription> seedNodes, IEnumerable <ClusterManifestTypeNodeType> nodeTypes) { IEnumerable <PaaSRoleType> roles = this.TargetCsmConfig.NodeTypes.Select(nodeType => nodeType.ToPaaSRoleType()); IEnumerable <PaaSVoteType> votes = seedNodes.Select(seedNode => this.ToPaaSVoteType(seedNode, nodeTypes)); var infra = new ClusterManifestTypeInfrastructurePaaS() { Roles = roles.ToArray(), Votes = votes.ToArray() }; return(new ClusterManifestTypeInfrastructure() { Item = infra }); }
internal static ClusterNodeConfig GetTargetNodeConfigRemoveNode(IClusterTopology topology, List <NodeDescription> removedNodes, long version) { UpgradeOrchestrationTrace.TraceSource.WriteInfo(TraceType, "Creating TargetNodeConfig"); List <Microsoft.ServiceFabric.ClusterManagementCommon.NodeStatus> nodeStatus = new List <Microsoft.ServiceFabric.ClusterManagementCommon.NodeStatus>(); foreach (var nodeName in topology.Nodes.Keys) { if (removedNodes.Any(removedNode => removedNode.NodeName == nodeName)) { nodeStatus.Add( new Microsoft.ServiceFabric.ClusterManagementCommon.NodeStatus { NodeName = nodeName, NodeType = topology.Nodes[nodeName].NodeTypeRef, NodeState = NodeState.Disabling, NodeDeactivationIntent = WrpNodeDeactivationIntent.RemoveNode, InstanceId = 0 }); } else { nodeStatus.Add( new Microsoft.ServiceFabric.ClusterManagementCommon.NodeStatus { NodeName = nodeName, NodeType = topology.Nodes[nodeName].NodeTypeRef, NodeState = NodeState.Enabled, NodeDeactivationIntent = WrpNodeDeactivationIntent.Invalid, InstanceId = 0 }); } } UpgradeOrchestrationTrace.TraceSource.WriteInfo(TraceType, "Setting NodeStatus for nodes {0}", string.Join(", ", nodeStatus.Select(node => node.NodeName).ToArray())); return(new ClusterNodeConfig { Version = version + 1, NodesStatus = nodeStatus, IsUserSet = true }); }
protected ClusterManifestBuilder( IClusterTopology topology, SeedNodeSelector seedNodeSelector, IUserConfig targetCsmConfig, IAdminConfig targetWrpConfig, ClusterNodeConfig targetNodeConfig, IManifestVersionGenerator versionGenerator, IFabricSettingsActivator fabricSettingsActivator, ClusterManifestGeneratorSettings clusterManifestGeneratorSettings, ITraceLogger traceLogger) { this.Topology = topology; this.SeedNodeSelector = seedNodeSelector; this.TargetCsmConfig = targetCsmConfig; this.TargetWrpConfig = targetWrpConfig; this.TargetNodeConfig = targetNodeConfig; this.VersionGenerator = versionGenerator; this.FabricSettingsActivator = fabricSettingsActivator; this.ClusterManifestGeneratorSettings = clusterManifestGeneratorSettings; this.TraceLogger = traceLogger; }
public ClusterManifestBuilder CreateClusterManifestBuilder( IClusterTopology topology, SeedNodeSelector seedNodeSelector, IUserConfig targetCsmConfig, IAdminConfig targetWrpConfig, ClusterNodeConfig targetNodeConfig, IManifestVersionGenerator versionGenerator, IFabricSettingsActivator fabricSettingsActivator, ClusterManifestGeneratorSettings clusterManifestGeneratorSettings, ITraceLogger traceLogger) { return(new StandAloneClusterManifestBuilder( topology, seedNodeSelector, targetCsmConfig, targetWrpConfig, targetNodeConfig, versionGenerator, fabricSettingsActivator, clusterManifestGeneratorSettings, traceLogger)); }
public StandAloneCluster(IAdminConfig adminConfig, IUserConfig userConfig, IClusterTopology topology, string clusterId, ITraceLogger traceLogger) { this.TargetWrpConfig = adminConfig; this.TargetCsmConfig = userConfig; this.Topology = topology; this.ClusterManifestVersion = 0; // TODO: This is an workaround for bug 8874388: SimpleClusterUpgradeState shouldn't reselect seednode. It should use the exisiting ones. this.SeedNodeSelector = new SeedNodeSelector(new TimeSpan(0, 0, 0), new StandAloneTraceLogger("StandAloneDeploymentManager")); this.SetStateMachine(traceLogger); this.SetGeneratorSettings(); this.clusterId = clusterId; this.fabricSettingsActivator = new Lazy <IFabricSettingsActivator>(() => { this.clusterId.MustNotBeNullOrWhiteSpace("clusterId"); return(new StandAloneFabricSettingsActivator(this.clusterId)); }); this.NodeTypeNodeStatusList = new Dictionary <string, SortedList <string, NodeStatus> >(); this.TargetCsmConfig.NodeTypes.ForEach(nodeType => this.NodeTypeNodeStatusList.Add(nodeType.Name, new SortedList <string, NodeStatus>())); foreach (var node in this.Topology.Nodes) { this.NodeTypeNodeStatusList[node.Value.NodeTypeRef].Add( node.Key, new NodeStatus() { NodeName = node.Value.NodeName, InstanceId = 0, NodeDeactivationIntent = WrpNodeDeactivationIntent.Invalid, NodeState = NodeState.Enabled, NodeType = node.Value.NodeTypeRef }); } }
public static ClusterManifestGeneratorSettings GenerateSettings(SettingsType wrpSettings, IClusterTopology topology) { var systemServicesForScale = new Dictionary <string, string>(); var section = wrpSettings.Section.FirstOrDefault(item => item.Name == "SystemServicesForScale"); if (section != null) { foreach (var parameter in section.Parameter) { systemServicesForScale.Add(parameter.Name, parameter.Value); } } HashSet <string> uds = new HashSet <string>(); HashSet <string> fds = new HashSet <string>(); foreach (var node in topology.Nodes.Values) { uds.Add(node.FaultDomain); fds.Add(node.FaultDomain); } return(new ClusterManifestGeneratorSettings() { AllowUnprotectedDiagnosticsStorageAccountKeys = false, ClusterConnectionEndpointPort = GetIntConfigurationSetting(wrpSettings, "ClusterConnectionEndpointPort", 9025), DataDeletionAgeInDaysForDiagnosticsDisabledClusters = GetIntConfigurationSetting(wrpSettings, "DataDeletionAgeInDaysForDiagnosticsDisabledClusters", 7), EndReservedPortNumber = 1000, StartReservedPortNumber = 2000, FDCount = fds.Count, UDCount = uds.Count, LeaseDriverEndpointPort = GetIntConfigurationSetting(wrpSettings, "LeaseDriverEndpointPort", 9026), MaxAllowedPortNumber = 65535, MaxClusterSize = 1000, MinAllowedPortNumber = 1, MinClusterSize = GetIntConfigurationSetting(wrpSettings, "MinClusterSize", 3), MinDynamicPortCount = GetIntConfigurationSetting(wrpSettings, "MinDynamicPortCount", 1), // Needs to be 255 or higher to actually change ephemeral port range ServiceConnectionEndpointPort = GetIntConfigurationSetting(wrpSettings, "ServiceConnectionEndpointPort", 9027), SystemServicesForScale = systemServicesForScale }); }
public StandAloneInstallerJsonModelBase(IUserConfig config, IClusterTopology topology, string configurationVersion) { this.ClusterConfigurationVersion = configurationVersion; this.Name = config.ClusterName; this.Nodes = new List <NodeDescription>(topology.Nodes.Values).ConvertAll <NodeDescriptionGA>(node => NodeDescriptionGA.ReadFromInternal(node)); }