public AzureStorageInfoValue(string id, AzureStorageType type, string accountName, string shareName,
                              string accessKey, string mountPath)
 {
     Id          = id;
     Type        = type;
     AccountName = accountName;
     ShareName   = shareName;
     AccessKey   = accessKey;
     MountPath   = mountPath;
 }
Ejemplo n.º 2
0
        internal static string ToSerializedValue(this AzureStorageType value)
        {
            switch (value)
            {
            case AzureStorageType.AzureFiles:
                return("AzureFiles");

            case AzureStorageType.AzureBlob:
                return("AzureBlob");
            }
            return(null);
        }
        internal static string ToSerializedValue(this AzureStorageType value)
        {
            switch (value)
            {
            case AzureStorageType.Blob:
                return("Blob");

            case AzureStorageType.FileShare:
                return("FileShare");
            }
            return(null);
        }
 /// <summary>
 /// Converts the <see cref="sourceValue" /> parameter to the <see cref="destinationType" /> parameter using <see cref="formatProvider"
 /// /> and <see cref="ignoreCase" />
 /// </summary>
 /// <param name="sourceValue">the <see cref="System.Object"/> to convert from</param>
 /// <param name="destinationType">the <see cref="System.Type" /> to convert to</param>
 /// <param name="formatProvider">not used by this TypeConverter.</param>
 /// <param name="ignoreCase">when set to <c>true</c>, will ignore the case when converting.</param>
 /// <returns>
 /// an instance of <see cref="AzureStorageType" />, or <c>null</c> if there is no suitable conversion.
 /// </returns>
 public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => AzureStorageType.CreateFrom(sourceValue);
 public static string ToSerialString(this AzureStorageType value) => value switch
 {
Ejemplo n.º 6
0
        private static object GetDataServiceInput(string deviceName, string containerName, string[] volumeNames, BackupChoice backupChoice,
                                                  string fileNameFilter = null, string[] rootDirectories = null, AzureStorageType azureStorageType = AzureStorageType.Blob, bool isDirectoryMode = false)
        {
            JToken dataServiceInputJToken = new JObject();

            dataServiceInputJToken["DeviceName"]     = deviceName;
            dataServiceInputJToken["FileNameFilter"] = fileNameFilter ?? "*";
            dataServiceInputJToken["ContainerName"]  = containerName;
            JArray rootDirectoriesObj = new JArray();

            if (rootDirectories != null)
            {
                foreach (var rootDirectory in rootDirectories)
                {
                    rootDirectoriesObj.Add(rootDirectory);
                }
            }
            else
            {
                rootDirectoriesObj.Add("\\");
            }
            dataServiceInputJToken["RootDirectories"] = rootDirectoriesObj;
            JArray volumeNamesObj = new JArray();

            foreach (var volumeName in volumeNames)
            {
                volumeNamesObj.Add(volumeName);
            }
            dataServiceInputJToken["VolumeNames"]      = volumeNamesObj;
            dataServiceInputJToken["BackupChoice"]     = backupChoice.ToSerializedValue();
            dataServiceInputJToken["IsDirectoryMode"]  = isDirectoryMode;
            dataServiceInputJToken["AzureStorageType"] = azureStorageType.ToSerializedValue();
            return(dataServiceInputJToken);
        }
Ejemplo n.º 7
0
        public static JobDefinition GetJobDefinition(this IJobDefinitionsOperations operations, HybridDataManagementClient client,
                                                     string dataSourceName, string dataSinkName, string resourceGroupName, string dataManagerName, string runLocation,
                                                     UserConfirmation userConfirmation, string deviceName, string containerName, string[] volumeNames, BackupChoice backupChoice,
                                                     string fileNameFilter = null, string[] rootDirectories = null, AzureStorageType azureStorageType = AzureStorageType.Blob, bool isDirectoryMode = false)
        {
            var jobDefinition = new JobDefinition();

            jobDefinition.DataSinkId = client.DataStores.Get(dataStoreName: dataSinkName,
                                                             resourceGroupName: resourceGroupName, dataManagerName: dataManagerName).Id;
            jobDefinition.DataSourceId = client.DataStores.Get(dataStoreName: dataSourceName,
                                                               resourceGroupName: resourceGroupName, dataManagerName: dataManagerName).Id;

            RunLocation parsedRunLocation = RunLocation.None;

            if (Enum.TryParse(runLocation, true, out parsedRunLocation))
            {
                jobDefinition.RunLocation = parsedRunLocation;
            }

            jobDefinition.State            = State.Enabled;
            jobDefinition.UserConfirmation = userConfirmation;
            jobDefinition.DataServiceInput = GetDataServiceInput(deviceName, containerName, volumeNames, backupChoice, fileNameFilter,
                                                                 rootDirectories, azureStorageType, isDirectoryMode);
            return(jobDefinition);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Converts the requested disk size in bytes to the actual required size of the Azure
        /// managed disk in GiB.
        /// </summary>
        /// <param name="storageType">Specifies the disk storage type.</param>
        /// <param name="driveSizeBytes">The requested size in bytes.</param>
        /// <returns>The actual Azure disk size in GiB.</returns>
        public static decimal GetDiskSizeGiB(AzureStorageType storageType, decimal driveSizeBytes)
        {
            var driveSizeGiB = driveSizeBytes / ByteUnits.GibiBytes;

            switch (storageType)
            {
            case AzureStorageType.StandardHDD:
            case AzureStorageType.StandardSSD:
            case AzureStorageType.PremiumSSD:

                // Azure premium disks sizes: 32GiB, 64GiB, 128GiB, 512GiB, 1TiB, 2TiB, 4TiB, 8TiB, 16TiB or 32TiB.

                if (driveSizeGiB <= 32)
                {
                    driveSizeGiB = 32;
                }
                else if (driveSizeGiB <= 64)
                {
                    driveSizeGiB = 64;
                }
                else if (driveSizeGiB <= 128)
                {
                    driveSizeGiB = 128;
                }
                else if (driveSizeGiB <= 256)
                {
                    driveSizeGiB = 256;
                }
                else if (driveSizeGiB <= 512)
                {
                    driveSizeGiB = 512;
                }
                else if (driveSizeGiB <= 1024)
                {
                    driveSizeGiB = 1024;
                }
                else if (driveSizeGiB <= 2048)
                {
                    driveSizeGiB = 2048;
                }
                else if (driveSizeGiB <= 4096)
                {
                    driveSizeGiB = 4096;
                }
                else if (driveSizeGiB <= 8192)
                {
                    driveSizeGiB = 8192;
                }
                else if (driveSizeGiB <= 16314)
                {
                    driveSizeGiB = 16314;
                }
                else
                {
                    driveSizeGiB = 32768;
                }
                break;

            case AzureStorageType.UltraSSD:

                // Azure ultra disks sizes: 4GiB, 8GiB, 16GiB, 32GiB, 64GiB, 128GiB, 256GiB, 512GiB
                //                          and 1TiB - 64TiB in 1TiB increments

                if (driveSizeGiB < 4)
                {
                    driveSizeGiB = 4;
                }
                else if (driveSizeGiB < 8)
                {
                    driveSizeGiB = 8;
                }
                else if (driveSizeGiB < 16)
                {
                    driveSizeGiB = 16;
                }
                else if (driveSizeGiB < 32)
                {
                    driveSizeGiB = 32;
                }
                else if (driveSizeGiB < 64)
                {
                    driveSizeGiB = 64;
                }
                else if (driveSizeGiB < 128)
                {
                    driveSizeGiB = 128;
                }
                else if (driveSizeGiB < 256)
                {
                    driveSizeGiB = 256;
                }
                else if (driveSizeGiB < 512)
                {
                    driveSizeGiB = 512;
                }
                else if (driveSizeGiB < 65536)
                {
                    // Round up to the nearest 1TiB.

                    var driveSizeTiB = driveSizeGiB / 1024;

                    if (driveSizeGiB % 1024 != 0)
                    {
                        driveSizeTiB++;
                    }

                    driveSizeGiB = driveSizeTiB * 1024;
                }
                else
                {
                    driveSizeGiB = 65536;
                }
                break;

            default:

                throw new NotImplementedException();
            }

            if (driveSizeGiB < KubeConst.MinNodeDiskSizeGiB)
            {
                driveSizeGiB = KubeConst.MinNodeDiskSizeGiB;
            }

            return(driveSizeGiB);
        }