Exemple #1
0
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            DatabaseAvailabilityGroupNetwork dataObject                = this.DataObject;
            IConfigurationSession            configSession             = this.SetupAdSession();
            DatabaseAvailabilityGroup        databaseAvailabilityGroup = DagTaskHelper.DagIdParameterToDag(this.DatabaseAvailabilityGroup, configSession);

            DagTaskHelper.VerifyDagAndServersAreWithinScopes <DatabaseAvailabilityGroupNetwork>(this, databaseAvailabilityGroup, true);
            if (databaseAvailabilityGroup.IsDagEmpty())
            {
                base.WriteError(new DagNetworkEmptyDagException(databaseAvailabilityGroup.Name), ErrorCategory.InvalidArgument, null);
            }
            DagTaskHelper.PreventTaskWhenAutoNetConfigIsEnabled(databaseAvailabilityGroup, this);
            DagNetworkObjectId identity = new DagNetworkObjectId(databaseAvailabilityGroup.Name, dataObject.Name);

            dataObject.SetIdentity(identity);
            DagNetworkConfigDataProvider     dagNetworkConfigDataProvider     = (DagNetworkConfigDataProvider)base.DataSession;
            DagNetworkConfiguration          dagNetworkConfiguration          = dagNetworkConfigDataProvider.ReadNetConfig(databaseAvailabilityGroup);
            DatabaseAvailabilityGroupNetwork databaseAvailabilityGroupNetwork = dagNetworkConfiguration.FindNetwork(dataObject.Name);

            if (databaseAvailabilityGroupNetwork != null)
            {
                throw new DagNetworkManagementException(ServerStrings.DagNetworkCreateDupName(dataObject.Name));
            }
            DagNetworkValidation.ValidateSwitches(dataObject, new Task.TaskErrorLoggingDelegate(base.WriteError));
            if (base.Fields["Subnets"] != null)
            {
                DagNetworkValidation.ValidateSubnets(this.Subnets, dagNetworkConfiguration, this.Name, null, new Task.TaskErrorLoggingDelegate(base.WriteError), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
                dataObject.ReplaceSubnets(this.Subnets);
            }
            TaskLogger.LogExit();
        }
Exemple #2
0
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            DatabaseAvailabilityGroupNetwork dataObject = this.DataObject;
            DagNetworkObjectId dagNetworkObjectId       = (DagNetworkObjectId)dataObject.Identity;

            ExTraceGlobals.CmdletsTracer.TraceError <string>((long)this.GetHashCode(), "Validating SetDAGNetwork({0})", dagNetworkObjectId.FullName);
            IConfigurationSession     configSession = this.SetupAdSession();
            DatabaseAvailabilityGroup dag           = DagTaskHelper.ReadDagByName(dagNetworkObjectId.DagName, configSession);

            DagTaskHelper.VerifyDagAndServersAreWithinScopes <DatabaseAvailabilityGroupNetwork>(this, dag, true);
            DagTaskHelper.PreventTaskWhenAutoNetConfigIsEnabled(dag, this);
            DagNetworkConfigDataProvider     dagNetworkConfigDataProvider = (DagNetworkConfigDataProvider)base.DataSession;
            DagNetworkConfiguration          networkConfig = dagNetworkConfigDataProvider.NetworkConfig;
            DatabaseAvailabilityGroupNetwork databaseAvailabilityGroupNetwork = (DatabaseAvailabilityGroupNetwork)dataObject.GetOriginalObject();
            string name = databaseAvailabilityGroupNetwork.Name;
            DatabaseAvailabilityGroupNetwork networkBeingChanged = null;

            foreach (DatabaseAvailabilityGroupNetwork databaseAvailabilityGroupNetwork2 in networkConfig.Networks)
            {
                if (databaseAvailabilityGroupNetwork2 == dataObject)
                {
                    networkBeingChanged = databaseAvailabilityGroupNetwork2;
                }
                else if (DatabaseAvailabilityGroupNetwork.NameComparer.Equals(databaseAvailabilityGroupNetwork2.Name, dataObject.Name))
                {
                    throw new DagNetworkManagementException(ServerStrings.DagNetworkRenameDupName(name, dataObject.Name));
                }
            }
            DagNetworkValidation.ValidateSwitches(dataObject, new Task.TaskErrorLoggingDelegate(base.WriteError));
            if (base.Fields["Subnets"] != null)
            {
                DagNetworkValidation.ValidateSubnets(this.Subnets, networkConfig, dataObject.Name, networkBeingChanged, new Task.TaskErrorLoggingDelegate(base.WriteError), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
                dataObject.ReplaceSubnets(this.Subnets);
            }
            DagNetworkValidation.WarnIfAllNetsAreDisabled(networkConfig, new Task.TaskWarningLoggingDelegate(this.WriteWarning));
            TaskLogger.LogExit();
        }