예제 #1
0
        public static PSNetAppFilesActiveDirectory ConvertToPs(this Management.NetApp.Models.ActiveDirectory activeDirectory, string resourceGroupName, string accountName)
        {
            var psActiveDirectory = new PSNetAppFilesActiveDirectory
            {
                ResourceGroupName = resourceGroupName,
                AccountName       = accountName,
                ActiveDirectoryId = activeDirectory.ActiveDirectoryId,
                Username          = activeDirectory.Username,
                Password          = activeDirectory.Password,
                Domain            = activeDirectory.Domain,
                Dns                        = activeDirectory.Dns,
                Status                     = activeDirectory.Status,
                StatusDetails              = activeDirectory.StatusDetails,
                SmbServerName              = activeDirectory.SmbServerName,
                OrganizationalUnit         = activeDirectory.OrganizationalUnit,
                Site                       = activeDirectory.Site,
                BackupOperators            = activeDirectory.BackupOperators,
                KdcIP                      = activeDirectory.KdcIP,
                AdName                     = activeDirectory.AdName,
                ServerRootCACertificate    = activeDirectory.ServerRootCACertificate,
                AesEncryption              = activeDirectory.AesEncryption,
                LdapSigning                = activeDirectory.LdapSigning,
                SecurityOperators          = activeDirectory.SecurityOperators,
                LdapOverTLS                = activeDirectory.LdapOverTLS,
                AllowLocalNfsUsersWithLdap = activeDirectory.AllowLocalNfsUsersWithLdap
            };

            return(psActiveDirectory);
        }
        public override void ExecuteCmdlet()
        {
            if (ParameterSetName == ParentObjectParameterSet)
            {
                ResourceGroupName = AccountObject.ResourceGroupName;
                var NameParts = AccountObject.Name.Split('/');
                AccountName = NameParts[0];
            }

            if (ShouldProcess($"{AccountName}.ActiveDirectory", string.Format(PowerShell.Cmdlets.NetAppFiles.Properties.Resources.CreateResourceMessage, ResourceGroupName)))
            {
                var anfAccount = AzureNetAppFilesManagementClient.Accounts.Get(ResourceGroupName, AccountName);
                if (anfAccount == null)
                {
                    throw new ArgumentException($"Specified NetAppAccount with name '{this.AccountName}' does not extist in Resource Group '{this.ResourceGroupName}'");
                }

                var activeDirectory = new Management.NetApp.Models.ActiveDirectory
                {
                    AdName                     = AdName,
                    Dns                        = string.Join(",", Dns),
                    Domain                     = Domain,
                    SmbServerName              = SmbServerName,
                    Username                   = Username,
                    Password                   = Password.ConvertToString(),
                    Site                       = Site,
                    OrganizationalUnit         = OrganizationalUnit,
                    BackupOperators            = BackupOperator,
                    KdcIP                      = KdcIP,
                    ServerRootCACertificate    = ServerRootCACertificate,
                    SecurityOperators          = SecurityOperator,
                    AesEncryption              = AesEncryption,
                    LdapSigning                = LdapSigning,
                    LdapOverTLS                = LdapOverTLS,
                    AllowLocalNfsUsersWithLdap = AllowLocalNfsUsersWithLdap,
                    Administrators             = Administrator,
                    EncryptDCConnections       = EncryptDCConnection
                };
                if (anfAccount.ActiveDirectories == null)
                {
                    anfAccount.ActiveDirectories = new List <Management.NetApp.Models.ActiveDirectory>();
                }
                anfAccount.ActiveDirectories.Add(activeDirectory);
                var netAppAccountBody = new NetAppAccountPatch()
                {
                    ActiveDirectories = anfAccount.ActiveDirectories
                };
                var updatedAnfAccount      = AzureNetAppFilesManagementClient.Accounts.Update(netAppAccountBody, ResourceGroupName, AccountName);
                var updatedActiveDirectory = updatedAnfAccount.ActiveDirectories.FirstOrDefault <Management.NetApp.Models.ActiveDirectory>(e => e.SmbServerName == SmbServerName);
                WriteObject(updatedActiveDirectory.ConvertToPs(ResourceGroupName, AccountName));
            }
        }
        public override void ExecuteCmdlet()
        {
            if (ParameterSetName == ParentObjectParameterSet)
            {
                ResourceGroupName = AccountObject.ResourceGroupName;
                var NameParts = AccountObject.Name.Split('/');
                AccountName = NameParts[0];
            }
            else if (ParameterSetName == ObjectParameterSet)
            {
                ResourceGroupName = InputObject.ResourceGroupName;
                AccountName       = InputObject.AccountName;
                ActiveDirectoryId = InputObject.ActiveDirectoryId;
            }

            if (ShouldProcess(ActiveDirectoryId, string.Format(PowerShell.Cmdlets.NetAppFiles.Properties.Resources.CreateResourceMessage, ResourceGroupName)))
            {
                var anfAccount = AzureNetAppFilesManagementClient.Accounts.Get(ResourceGroupName, AccountName);
                if (anfAccount == null)
                {
                    throw new ArgumentException($"Specified NetAppAccount with name '{this.AccountName}' does not extist in Resource Group '{this.ResourceGroupName}'");
                }
                string dnsStr = null;
                if (Dns != null)
                {
                    dnsStr = string.Join(",", Dns);
                }
                Management.NetApp.Models.ActiveDirectory anfADConfig = null;
                if (string.IsNullOrWhiteSpace(ActiveDirectoryId))
                {
                    anfADConfig = new Management.NetApp.Models.ActiveDirectory();
                }
                else
                {
                    anfADConfig = anfAccount.ActiveDirectories?.FirstOrDefault(a => a.ActiveDirectoryId == ActiveDirectoryId);
                    if (anfADConfig == null)
                    {
                        throw new ArgumentException($"ActiveDirectory configuration with ID '{this.ActiveDirectoryId}' in account '{this.AccountName}' is not found. Please use New-AzNetAppFilesActiveDirectory to Create a new ActiveDirectory configuration.");
                    }
                }

                anfADConfig.AdName                  = AdName ?? anfADConfig.AdName;
                anfADConfig.Dns                     = dnsStr ?? anfADConfig.Dns;
                anfADConfig.Domain                  = Domain ?? anfADConfig.Domain;
                anfADConfig.SmbServerName           = SmbServerName ?? anfADConfig.SmbServerName;
                anfADConfig.Username                = Username ?? anfADConfig.Username;
                anfADConfig.Password                = Password.ConvertToString();
                anfADConfig.Site                    = Site ?? anfADConfig.Site;
                anfADConfig.OrganizationalUnit      = OrganizationalUnit ?? anfADConfig.Site;
                anfADConfig.BackupOperators         = BackupOperator ?? anfADConfig.BackupOperators;
                anfADConfig.KdcIP                   = KdcIP ?? anfADConfig.KdcIP;
                anfADConfig.ServerRootCACertificate = ServerRootCACertificate ?? anfADConfig.ServerRootCACertificate;
                anfADConfig.SecurityOperators       = SecurityOperator ?? anfADConfig.SecurityOperators;
                if (AesEncryption)
                {
                    anfADConfig.AesEncryption = AesEncryption;
                }
                if (LdapSigning)
                {
                    anfADConfig.LdapSigning = LdapSigning;
                }
                if (LdapOverTLS)
                {
                    anfADConfig.LdapOverTLS = LdapOverTLS;
                }
                if (AllowLocalNfsUsersWithLdap)
                {
                    anfADConfig.AllowLocalNfsUsersWithLdap = AllowLocalNfsUsersWithLdap;
                }
                anfADConfig.Administrators = Administrator ?? anfADConfig.Administrators;
                if (EncryptDCConnection)
                {
                    anfADConfig.EncryptDCConnections = EncryptDCConnection;
                }

                var netAppAccountBody = new NetAppAccountPatch()
                {
                    ActiveDirectories = anfAccount.ActiveDirectories
                };

                var updatedAnfAccount      = AzureNetAppFilesManagementClient.Accounts.Update(netAppAccountBody, ResourceGroupName, AccountName);
                var updatedActiveDirectory = updatedAnfAccount.ActiveDirectories.FirstOrDefault <Management.NetApp.Models.ActiveDirectory>(e => e.ActiveDirectoryId == ActiveDirectoryId);
                WriteObject(updatedActiveDirectory.ConvertToPs(ResourceGroupName, AccountName));
            }
        }