/// <summary>
 /// Creates a new BlobDownloadDetails instance for mocking.
 /// </summary>
 public static BlobDownloadDetails BlobDownloadDetails(
     DateTimeOffset lastModified,
     IDictionary <string, string> metadata,
     string contentRange,
     string contentEncoding,
     string cacheControl,
     string contentDisposition,
     string contentLanguage,
     long blobSequenceNumber,
     DateTimeOffset copyCompletedOn,
     string copyStatusDescription,
     string copyId,
     string copyProgress,
     Uri copySource,
     CopyStatus copyStatus,
     LeaseDurationType leaseDuration,
     LeaseState leaseState,
     LeaseStatus leaseStatus,
     string acceptRanges,
     int blobCommittedBlockCount,
     bool isServerEncrypted,
     string encryptionKeySha256,
     string encryptionScope,
     byte[] blobContentHash,
     long tagCount,
     string versionId,
     bool isSealed,
     IList <ObjectReplicationPolicy> objectReplicationSourceProperties,
     string objectReplicationDestinationPolicy)
 => new BlobDownloadDetails
 {
     LastModified          = lastModified,
     Metadata              = metadata,
     ContentRange          = contentRange,
     ContentEncoding       = contentEncoding,
     CacheControl          = cacheControl,
     ContentDisposition    = contentDisposition,
     ContentLanguage       = contentLanguage,
     BlobSequenceNumber    = blobSequenceNumber,
     CopyCompletedOn       = copyCompletedOn,
     CopyStatusDescription = copyStatusDescription,
     CopyId                               = copyId,
     CopyProgress                         = copyProgress,
     CopySource                           = copySource,
     CopyStatus                           = copyStatus,
     LeaseDuration                        = leaseDuration,
     LeaseState                           = leaseState,
     LeaseStatus                          = leaseStatus,
     AcceptRanges                         = acceptRanges,
     BlobCommittedBlockCount              = blobCommittedBlockCount,
     IsServerEncrypted                    = isServerEncrypted,
     EncryptionKeySha256                  = encryptionKeySha256,
     EncryptionScope                      = encryptionScope,
     BlobContentHash                      = blobContentHash,
     TagCount                             = tagCount,
     VersionId                            = versionId,
     IsSealed                             = isSealed,
     ObjectReplicationSourceProperties    = objectReplicationSourceProperties,
     ObjectReplicationDestinationPolicyId = objectReplicationDestinationPolicy
 };
Beispiel #2
0
        private void NameVauleForm_Load(object sender, EventArgs e)
        {
            m_table.Columns.Add("Name", typeof(string));
            m_table.Columns.Add("Value", typeof(string));
            m_dataGrid.DataSource = m_table;
            foreach (string key in m_pairs.Keys)
            {
                m_table.Rows.Add(key, m_pairs[key]);
            }
            m_table.AcceptChanges();

            if (Blocks != null)
            {
                m_blockList.Items.Clear();
                foreach (var block in Blocks)
                {
                    ListViewItem item = m_blockList.Items.Add(block.Name);
                    item.SubItems.Add(block.Length.ToString());
                    item.SubItems.Add(block.Committed.ToString());
                }
            }

            m_txtLeaseID.Text     = LeaseID;
            m_txtLeaseState.Text  = LeaseState.ToString();
            m_txtLeaseStatus.Text = LeaseStatus.ToString();
        }
Beispiel #3
0
 public void UpdateLeaseStatus(LeaseStatus leaseStatus)
 {
     using (var db = new DataContext(_connectionString))
     {
         db.LeaseStatuses.Update(leaseStatus);
         db.SaveChanges();
     }
 }
 /// <summary>
 /// Creates a new PathProperties instance for mocking.
 /// </summary>
 public static PathProperties PathProperties(
     DateTimeOffset lastModified,
     DateTimeOffset creationTime,
     IDictionary <string, string> metadata,
     DateTimeOffset copyCompletionTime,
     string copyStatusDescription,
     string copyId,
     string copyProgress,
     Uri copySource,
     CopyStatus copyStatus,
     bool isIncrementalCopy,
     LeaseDurationType leaseDuration,
     LeaseState leaseState,
     LeaseStatus leaseStatus,
     long contentLength,
     string contentType,
     ETag eTag,
     byte[] contentHash,
     IEnumerable <string> contentEncoding,
     string contentDisposition,
     IEnumerable <string> contentLanguage,
     string cacheControl,
     string acceptRanges,
     bool isServerEncrypted,
     string encryptionKeySha256,
     string accessTier,
     string archiveStatus,
     DateTimeOffset accessTierChangeTime)
 => new PathProperties()
 {
     LastModified          = lastModified,
     CreatedOn             = creationTime,
     Metadata              = metadata,
     CopyCompletedOn       = copyCompletionTime,
     CopyStatusDescription = copyStatusDescription,
     CopyId            = copyId,
     CopyProgress      = copyProgress,
     CopySource        = copySource,
     CopyStatus        = copyStatus,
     IsIncrementalCopy = isIncrementalCopy,
     LeaseDuration     = leaseDuration,
     LeaseState        = leaseState,
     LeaseStatus       = leaseStatus,
     ContentLength     = contentLength,
     ContentType       = contentType,
     ETag                = eTag,
     ContentHash         = contentHash,
     ContentEncoding     = contentEncoding,
     ContentDisposition  = contentDisposition,
     ContentLanguage     = contentLanguage,
     CacheControl        = cacheControl,
     AcceptRanges        = acceptRanges,
     IsServerEncrypted   = isServerEncrypted,
     EncryptionKeySha256 = encryptionKeySha256,
     AccessTier          = accessTier,
     ArchiveStatus       = archiveStatus,
     AccessTierChangedOn = accessTierChangeTime
 };
Beispiel #5
0
 public int AddLeaseStatus(LeaseStatus leaseStatus)
 {
     using (var db = new DataContext(_connectionString))
     {
         db.LeaseStatuses.Add(leaseStatus);
         db.SaveChanges();
         return(leaseStatus.Id);
     }
 }
            public async Task VerifyLockState(string lockId, LeaseState state, LeaseStatus status)
            {
                var    container = BlobServiceClient.GetBlobContainerClient("azure-webjobs-hosts");
                string blobName  = string.Format("locks/{0}/{1}", HostId, lockId);
                var    lockBlob  = container.GetBlockBlobClient(blobName);

                Assert.True(await lockBlob.ExistsAsync());
                BlobProperties blobProperties = await lockBlob.GetPropertiesAsync();

                Assert.AreEqual(state, blobProperties.LeaseState);
                Assert.AreEqual(status, blobProperties.LeaseStatus);
            }
            public void VerifyLockState(string lockId, LeaseState state, LeaseStatus status)
            {
                CloudBlobClient blobClient = StorageAccount.CreateCloudBlobClient();
                var             container  = blobClient.GetContainerReference("azure-webjobs-hosts");
                string          blobName   = string.Format("locks/{0}/{1}", Config.HostId, lockId);
                var             lockBlob   = container.GetBlockBlobReference(blobName);

                Assert.True(lockBlob.Exists());
                lockBlob.FetchAttributes();

                Assert.Equal(state, lockBlob.Properties.LeaseState);
                Assert.Equal(status, lockBlob.Properties.LeaseStatus);
            }
 /// <summary>
 /// Creates a new FileDownloadDetails instance for mocking.
 /// </summary>
 public static FileDownloadDetails FileDownloadDetails(
     DateTimeOffset lastModified,
     IDictionary <string, string> metadata,
     string contentRange,
     ETag eTag,
     string contentEncoding,
     string cacheControl,
     string contentDisposition,
     string contentLanguage,
     DateTimeOffset copyCompletionTime,
     string copyStatusDescription,
     string copyId,
     string copyProgress,
     Uri copySource,
     CopyStatus copyStatus,
     LeaseDurationType leaseDuration,
     LeaseState leaseState,
     LeaseStatus leaseStatus,
     string acceptRanges,
     bool isServerEncrypted,
     string encryptionKeySha256,
     byte[] contentHash)
 => new FileDownloadDetails()
 {
     LastModified          = lastModified,
     Metadata              = metadata,
     ContentRange          = contentRange,
     ETag                  = eTag,
     ContentEncoding       = contentEncoding,
     CacheControl          = cacheControl,
     ContentDisposition    = contentDisposition,
     ContentLanguage       = contentLanguage,
     CopyCompletedOn       = copyCompletionTime,
     CopyStatusDescription = copyStatusDescription,
     CopyId                = copyId,
     CopyProgress          = copyProgress,
     CopySource            = copySource,
     CopyStatus            = copyStatus,
     LeaseDuration         = leaseDuration,
     LeaseState            = leaseState,
     LeaseStatus           = leaseStatus,
     AcceptRanges          = acceptRanges,
     IsServerEncrypted     = isServerEncrypted,
     EncryptionKeySha256   = encryptionKeySha256,
     ContentHash           = contentHash
 };
Beispiel #9
0
 public static BlobDownloadInfo BlobDownloadInfo(
     DateTimeOffset lastModified,
     long blobSequenceNumber,
     BlobType blobType,
     byte[] contentCrc64,
     string contentLanguage,
     string copyStatusDescription,
     string copyId,
     string copyProgress,
     Uri copySource,
     CopyStatus copyStatus,
     string contentDisposition,
     LeaseDurationType leaseDuration,
     string cacheControl,
     LeaseState leaseState,
     string contentEncoding,
     LeaseStatus leaseStatus,
     byte[] contentHash,
     string acceptRanges,
     ETag eTag,
     int blobCommittedBlockCount,
     string contentRange,
     bool isServerEncrypted,
     string contentType,
     string encryptionKeySha256,
     long contentLength,
     byte[] blobContentHash,
     IDictionary <string, string> metadata,
     Stream content,
     DateTimeOffset copyCompletionTime)
 {
     return(new BlobDownloadInfo(
                new FlattenedDownloadProperties()
     {
         LastModified = lastModified,
         BlobSequenceNumber = blobSequenceNumber,
         BlobType = blobType,
         ContentCrc64 = contentCrc64,
         ContentLanguage = contentLanguage,
         CopyStatusDescription = copyStatusDescription,
         CopyId = copyId,
         CopyProgress = copyProgress,
         CopySource = copySource,
         CopyStatus = copyStatus,
         ContentDisposition = contentDisposition,
         LeaseDuration = leaseDuration,
         CacheControl = cacheControl,
         LeaseState = leaseState,
         ContentEncoding = contentEncoding,
         LeaseStatus = leaseStatus,
         ContentHash = contentHash,
         AcceptRanges = acceptRanges,
         ETag = eTag,
         BlobCommittedBlockCount = blobCommittedBlockCount,
         ContentRange = contentRange,
         IsServerEncrypted = isServerEncrypted,
         ContentType = contentType,
         EncryptionKeySha256 = encryptionKeySha256,
         ContentLength = contentLength,
         BlobContentHash = blobContentHash,
         Metadata = metadata,
         Content = content,
         CopyCompletionTime = copyCompletionTime
     }
                ));
 }
        /// <summary>
        /// Checks the lease status of a container, both from its attributes and from a container listing.
        /// </summary>
        /// <param name="container">The container to test.</param>
        /// <param name="expectedStatus">The expected lease status.</param>
        /// <param name="expectedState">The expected lease state.</param>
        /// <param name="expectedDuration">The expected lease duration.</param>
        /// <param name="description">A description of the circumstances that lead to the expected status.</param>
        private async Task CheckLeaseStatusAsync(
            CloudBlobContainer container,
            LeaseStatus expectedStatus,
            LeaseState expectedState,
            LeaseDuration expectedDuration,
            string description)
        {
            await container.FetchAttributesAsync();
            Assert.AreEqual(expectedStatus, container.Properties.LeaseStatus, "LeaseStatus mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedState, container.Properties.LeaseState, "LeaseState mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedDuration, container.Properties.LeaseDuration, "LeaseDuration mismatch: " + description + " (from FetchAttributes)");

            ContainerResultSegment containers = await this.blobClient.ListContainersSegmentedAsync(container.Name, ContainerListingDetails.None, null, null, null, null);
            BlobContainerProperties propertiesInListing = (from CloudBlobContainer c in containers.Results
                                                           where c.Name == container.Name
                                                           select c.Properties).Single();

            Assert.AreEqual(expectedStatus, propertiesInListing.LeaseStatus, "LeaseStatus mismatch: " + description + " (from ListContainers)");
            Assert.AreEqual(expectedState, propertiesInListing.LeaseState, "LeaseState mismatch: " + description + " (from ListContainers)");
            Assert.AreEqual(expectedDuration, propertiesInListing.LeaseDuration, "LeaseDuration mismatch: " + description + " (from ListContainers)");
        }
        /// <summary>
        /// Checks the lease status of a blob, both from its attributes and from a blob listing.
        /// </summary>
        /// <param name="blob">The blob to test.</param>
        /// <param name="expectedStatus">The expected lease status.</param>
        /// <param name="expectedState">The expected lease state.</param>
        /// <param name="expectedDuration">The expected lease duration.</param>
        /// <param name="description">A description of the circumstances that lead to the expected status.</param>
        private async Task CheckLeaseStatusAsync(
            CloudBlob blob,
            LeaseStatus expectedStatus,
            LeaseState expectedState,
            LeaseDuration expectedDuration,
            string description)
        {
            await blob.FetchAttributesAsync();
            Assert.AreEqual(expectedStatus, blob.Properties.LeaseStatus, "LeaseStatus mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedState, blob.Properties.LeaseState, "LeaseState mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedDuration, blob.Properties.LeaseDuration, "LeaseDuration mismatch: " + description + " (from FetchAttributes)");

            BlobResultSegment blobs = await blob.Container.ListBlobsSegmentedAsync(blob.Name, true, BlobListingDetails.None, null, null, null, null);
            BlobProperties propertiesInListing = (from CloudBlob b in blobs.Results
                                                  where b.Name == blob.Name
                                                  select b.Properties).Single();

            Assert.AreEqual(expectedStatus, propertiesInListing.LeaseStatus, "LeaseStatus mismatch: " + description + " (from ListBlobs)");
            Assert.AreEqual(expectedState, propertiesInListing.LeaseState, "LeaseState mismatch: " + description + " (from ListBlobs)");
            Assert.AreEqual(expectedDuration, propertiesInListing.LeaseDuration, "LeaseDuration mismatch: " + description + " (from ListBlobs)");
        }
Beispiel #12
0
 public static BlobProperties BlobProperties(
     DateTimeOffset lastModified,
     LeaseDurationType leaseDuration,
     LeaseState leaseState,
     LeaseStatus leaseStatus,
     long contentLength,
     string destinationSnapshot,
     ETag eTag,
     byte[] contentHash,
     string contentEncoding,
     string contentDisposition,
     string contentLanguage,
     bool isIncrementalCopy,
     string cacheControl,
     CopyStatus copyStatus,
     long blobSequenceNumber,
     Uri copySource,
     string acceptRanges,
     string copyProgress,
     int blobCommittedBlockCount,
     string copyId,
     bool isServerEncrypted,
     string copyStatusDescription,
     string encryptionKeySha256,
     DateTimeOffset copyCompletedOn,
     string accessTier,
     BlobType blobType,
     bool accessTierInferred,
     IDictionary <string, string> metadata,
     string archiveStatus,
     DateTimeOffset createdOn,
     DateTimeOffset accessTierChangedOn,
     string contentType)
 => new BlobProperties()
 {
     LastModified            = lastModified,
     LeaseState              = leaseState,
     LeaseStatus             = leaseStatus,
     ContentLength           = contentLength,
     LeaseDuration           = leaseDuration,
     ETag                    = eTag,
     ContentHash             = contentHash,
     ContentEncoding         = contentEncoding,
     ContentDisposition      = contentDisposition,
     ContentLanguage         = contentLanguage,
     DestinationSnapshot     = destinationSnapshot,
     CacheControl            = cacheControl,
     IsIncrementalCopy       = isIncrementalCopy,
     BlobSequenceNumber      = blobSequenceNumber,
     CopyStatus              = copyStatus,
     AcceptRanges            = acceptRanges,
     CopySource              = copySource,
     BlobCommittedBlockCount = blobCommittedBlockCount,
     CopyProgress            = copyProgress,
     IsServerEncrypted       = isServerEncrypted,
     CopyId                  = copyId,
     EncryptionKeySha256     = encryptionKeySha256,
     CopyStatusDescription   = copyStatusDescription,
     CopyCompletedOn         = copyCompletedOn,
     AccessTier              = accessTier,
     BlobType                = blobType,
     AccessTierInferred      = accessTierInferred,
     Metadata                = metadata,
     ArchiveStatus           = archiveStatus,
     CreatedOn               = createdOn,
     AccessTierChangedOn     = accessTierChangedOn,
     ContentType             = contentType,
 };
Beispiel #13
0
        internal static void VerifyLeaseState(MethodInfo method, string scope, LeaseState leaseState, LeaseStatus leaseStatus, CloudBlobDirectory directory = null)
        {
            string lockId = FormatLockId(method, scope);

            CloudBlobDirectory lockDirectory = directory ?? _lockDirectory;
            CloudBlockBlob     lockBlob      = lockDirectory.GetBlockBlobReference(lockId);

            lockBlob.FetchAttributes();
            Assert.Equal(leaseState, lockBlob.Properties.LeaseState);
            Assert.Equal(leaseStatus, lockBlob.Properties.LeaseStatus);
        }
        internal static void VerifyLeaseState(MethodInfo method, string scope, LeaseState leaseState, LeaseStatus leaseStatus)
        {
            string lockId = string.Format("{0}.{1}", method.DeclaringType.FullName, method.Name);

            if (!string.IsNullOrEmpty(scope))
            {
                lockId += "." + scope;
            }

            CloudBlockBlob lockBlob = _lockDirectory.GetBlockBlobReference(lockId);

            lockBlob.FetchAttributes();
            Assert.Equal(leaseState, lockBlob.Properties.LeaseState);
            Assert.Equal(leaseStatus, lockBlob.Properties.LeaseStatus);
        }
Beispiel #15
0
        public static BlobProperties SetLeaseStatus(this BlobProperties props, LeaseStatus status)
        {
            props.SetInternalProperty(nameof(BlobProperties.LeaseStatus), status);

            return(props);
        }
        internal static BlobContainerData DeserializeBlobContainerData(JsonElement element)
        {
            Optional <string>         etag                              = default;
            ResourceIdentifier        id                                = default;
            string                    name                              = default;
            ResourceType              type                              = default;
            SystemData                systemData                        = default;
            Optional <string>         version                           = default;
            Optional <bool>           deleted                           = default;
            Optional <DateTimeOffset> deletedTime                       = default;
            Optional <int>            remainingRetentionDays            = default;
            Optional <string>         defaultEncryptionScope            = default;
            Optional <bool>           denyEncryptionScopeOverride       = default;
            Optional <PublicAccess>   publicAccess                      = default;
            Optional <DateTimeOffset> lastModifiedTime                  = default;
            Optional <LeaseStatus>    leaseStatus                       = default;
            Optional <LeaseState>     leaseState                        = default;
            Optional <LeaseDuration>  leaseDuration                     = default;
            Optional <IDictionary <string, string> > metadata           = default;
            Optional <ImmutabilityPolicyProperties>  immutabilityPolicy = default;
            Optional <LegalHoldProperties>           legalHold          = default;
            Optional <bool> hasLegalHold                                = default;
            Optional <bool> hasImmutabilityPolicy                       = default;
            Optional <ImmutableStorageWithVersioning> immutableStorageWithVersioning = default;
            Optional <bool> enableNfsV3RootSquash = default;
            Optional <bool> enableNfsV3AllSquash  = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("etag"))
                {
                    etag = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("version"))
                        {
                            version = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("deleted"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            deleted = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("deletedTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            deletedTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("remainingRetentionDays"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            remainingRetentionDays = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("defaultEncryptionScope"))
                        {
                            defaultEncryptionScope = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("denyEncryptionScopeOverride"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            denyEncryptionScopeOverride = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("publicAccess"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            publicAccess = property0.Value.GetString().ToPublicAccess();
                            continue;
                        }
                        if (property0.NameEquals("lastModifiedTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            lastModifiedTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("leaseStatus"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseStatus = new LeaseStatus(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("leaseState"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseState = new LeaseState(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("leaseDuration"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseDuration = new LeaseDuration(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("metadata"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            Dictionary <string, string> dictionary = new Dictionary <string, string>();
                            foreach (var property1 in property0.Value.EnumerateObject())
                            {
                                dictionary.Add(property1.Name, property1.Value.GetString());
                            }
                            metadata = dictionary;
                            continue;
                        }
                        if (property0.NameEquals("immutabilityPolicy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            immutabilityPolicy = ImmutabilityPolicyProperties.DeserializeImmutabilityPolicyProperties(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("legalHold"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            legalHold = LegalHoldProperties.DeserializeLegalHoldProperties(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("hasLegalHold"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            hasLegalHold = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("hasImmutabilityPolicy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            hasImmutabilityPolicy = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("immutableStorageWithVersioning"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            immutableStorageWithVersioning = ImmutableStorageWithVersioning.DeserializeImmutableStorageWithVersioning(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("enableNfsV3RootSquash"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableNfsV3RootSquash = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("enableNfsV3AllSquash"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enableNfsV3AllSquash = property0.Value.GetBoolean();
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new BlobContainerData(id, name, type, systemData, etag.Value, version.Value, Optional.ToNullable(deleted), Optional.ToNullable(deletedTime), Optional.ToNullable(remainingRetentionDays), defaultEncryptionScope.Value, Optional.ToNullable(denyEncryptionScopeOverride), Optional.ToNullable(publicAccess), Optional.ToNullable(lastModifiedTime), Optional.ToNullable(leaseStatus), Optional.ToNullable(leaseState), Optional.ToNullable(leaseDuration), Optional.ToDictionary(metadata), immutabilityPolicy.Value, legalHold.Value, Optional.ToNullable(hasLegalHold), Optional.ToNullable(hasImmutabilityPolicy), immutableStorageWithVersioning.Value, Optional.ToNullable(enableNfsV3RootSquash), Optional.ToNullable(enableNfsV3AllSquash)));
        }
 /// <summary>
 /// Creates a new BlobProperties instance for mocking.
 /// </summary>
 public static BlobProperties BlobProperties(
     DateTimeOffset lastModified = default,
     LeaseStatus leaseStatus     = default,
     long contentLength          = default,
     string contentType          = default,
     ETag eTag                          = default,
     LeaseState leaseState              = default,
     string contentEncoding             = default,
     string contentDisposition          = default,
     string contentLanguage             = default,
     string cacheControl                = default,
     long blobSequenceNumber            = default,
     LeaseDurationType leaseDuration    = default,
     string acceptRanges                = default,
     string destinationSnapshot         = default,
     int blobCommittedBlockCount        = default,
     bool isIncrementalCopy             = default,
     bool isServerEncrypted             = default,
     CopyStatus copyStatus              = default,
     string encryptionKeySha256         = default,
     Uri copySource                     = default,
     string encryptionScope             = default,
     string copyProgress                = default,
     string accessTier                  = default,
     string copyId                      = default,
     bool accessTierInferred            = default,
     string copyStatusDescription       = default,
     string archiveStatus               = default,
     DateTimeOffset copyCompletedOn     = default,
     DateTimeOffset accessTierChangedOn = default,
     BlobType blobType                  = default,
     string versionId                   = default,
     IList <ObjectReplicationPolicy> objectReplicationSourceProperties = default,
     bool isLatestVersion = default,
     string objectReplicationDestinationPolicyId = default,
     long tagCount = default,
     IDictionary <string, string> metadata = default,
     DateTimeOffset expiresOn    = default,
     DateTimeOffset createdOn    = default,
     bool isSealed               = default,
     string rehydratePriority    = default,
     byte[] contentHash          = default,
     DateTimeOffset lastAccessed = default)
 {
     return(new BlobProperties()
     {
         LastModified = lastModified,
         LeaseStatus = leaseStatus,
         ContentLength = contentLength,
         ContentType = contentType,
         ETag = eTag,
         LeaseState = leaseState,
         ContentEncoding = contentEncoding,
         ContentDisposition = contentDisposition,
         ContentLanguage = contentLanguage,
         CacheControl = cacheControl,
         BlobSequenceNumber = blobSequenceNumber,
         LeaseDuration = leaseDuration,
         AcceptRanges = acceptRanges,
         DestinationSnapshot = destinationSnapshot,
         BlobCommittedBlockCount = blobCommittedBlockCount,
         IsIncrementalCopy = isIncrementalCopy,
         IsServerEncrypted = isServerEncrypted,
         CopyStatus = copyStatus,
         EncryptionKeySha256 = encryptionKeySha256,
         CopySource = copySource,
         EncryptionScope = encryptionScope,
         CopyProgress = copyProgress,
         AccessTier = accessTier,
         CopyId = copyId,
         AccessTierInferred = accessTierInferred,
         CopyStatusDescription = copyStatusDescription,
         ArchiveStatus = archiveStatus,
         CopyCompletedOn = copyCompletedOn,
         AccessTierChangedOn = accessTierChangedOn,
         BlobType = blobType,
         VersionId = versionId,
         ObjectReplicationSourceProperties = objectReplicationSourceProperties,
         IsLatestVersion = isLatestVersion,
         ObjectReplicationDestinationPolicyId = objectReplicationDestinationPolicyId,
         TagCount = tagCount,
         Metadata = metadata,
         ExpiresOn = expiresOn,
         CreatedOn = createdOn,
         IsSealed = isSealed,
         RehydratePriority = rehydratePriority,
         ContentHash = contentHash,
         LastAccessed = lastAccessed
     });
 }
        /// <summary>
        /// Checks the lease status of a blob, both from its attributes and from a blob listing.
        /// </summary>
        /// <param name="blob">The blob to test.</param>
        /// <param name="expectedStatus">The expected lease status.</param>
        /// <param name="expectedState">The expected lease state.</param>
        /// <param name="expectedDuration">The expected lease duration.</param>
        /// <param name="description">A description of the circumstances that lead to the expected status.</param>
        private void CheckLeaseStatus(
            CloudBlob blob,
            LeaseStatus expectedStatus,
            LeaseState expectedState,
            LeaseDuration expectedDuration,
            string description)
        {
            blob.FetchAttributes();
            Assert.AreEqual(expectedStatus, blob.Properties.LeaseStatus, "LeaseStatus mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedState, blob.Properties.LeaseState, "LeaseState mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedDuration, blob.Properties.LeaseDuration, "LeaseDuration mismatch: " + description + " (from FetchAttributes)");

            BlobProperties propertiesInListing = (from CloudBlob b in blob.Container.ListBlobs(
                                                      blob.Name,
                                                      true /* use flat blob listing */,
                                                      BlobListingDetails.None,
                                                      null /* options */)
                                                  where b.Name == blob.Name
                                                  select b.Properties).Single();

            Assert.AreEqual(expectedStatus, propertiesInListing.LeaseStatus, "LeaseStatus mismatch: " + description + " (from ListBlobs)");
            Assert.AreEqual(expectedState, propertiesInListing.LeaseState, "LeaseState mismatch: " + description + " (from ListBlobs)");
            Assert.AreEqual(expectedDuration, propertiesInListing.LeaseDuration, "LeaseDuration mismatch: " + description + " (from ListBlobs)");
        }
        internal async static Task VerifyLeaseState(MethodInfo method, SingletonScope scope, string scopeId, LeaseState leaseState, LeaseStatus leaseStatus, CloudBlobDirectory directory = null)
        {
            string lockId = FormatLockId(method, scope, scopeId);

            CloudBlobDirectory lockDirectory = directory ?? _lockDirectory;
            CloudBlockBlob     lockBlob      = lockDirectory.GetBlockBlobReference(lockId);
            await lockBlob.FetchAttributesAsync();

            Assert.Equal(leaseState, lockBlob.Properties.LeaseState);
            Assert.Equal(leaseStatus, lockBlob.Properties.LeaseStatus);
        }
        /// <summary>
        /// Checks the lease status of a container, both from its attributes and from a container listing.
        /// </summary>
        /// <param name="container">The container to test.</param>
        /// <param name="expectedStatus">The expected lease status.</param>
        /// <param name="expectedState">The expected lease state.</param>
        /// <param name="expectedDuration">The expected lease duration.</param>
        /// <param name="description">A description of the circumstances that lead to the expected status.</param>
        private void CheckLeaseStatus(
            CloudBlobContainer container,
            LeaseStatus expectedStatus,
            LeaseState expectedState,
            LeaseDuration expectedDuration,
            string description)
        {
            container.FetchAttributes();
            Assert.AreEqual(expectedStatus, container.Properties.LeaseStatus, "LeaseStatus mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedState, container.Properties.LeaseState, "LeaseState mismatch: " + description + " (from FetchAttributes)");
            Assert.AreEqual(expectedDuration, container.Properties.LeaseDuration, "LeaseDuration mismatch: " + description + " (from FetchAttributes)");

            BlobContainerProperties propertiesInListing = (from CloudBlobContainer c in this.blobClient.ListContainers(
                                                               container.Name,
                                                               ContainerListingDetails.None)
                                                           where c.Name == container.Name
                                                           select c.Properties).Single();

            Assert.AreEqual(expectedStatus, propertiesInListing.LeaseStatus, "LeaseStatus mismatch: " + description + " (from ListContainers)");
            Assert.AreEqual(expectedState, propertiesInListing.LeaseState, "LeaseState mismatch: " + description + " (from ListContainers)");
            Assert.AreEqual(expectedDuration, propertiesInListing.LeaseDuration, "LeaseDuration mismatch: " + description + " (from ListContainers)");
        }
Beispiel #21
0
 /// <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="LeaseStatus" />, 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) => LeaseStatus.CreateFrom(sourceValue);
Beispiel #22
0
        internal static FileShareData DeserializeFileShareData(JsonElement element)
        {
            Optional <string>         etag                    = default;
            ResourceIdentifier        id                      = default;
            string                    name                    = default;
            ResourceType              type                    = default;
            SystemData                systemData              = default;
            Optional <DateTimeOffset> lastModifiedTime        = default;
            Optional <IDictionary <string, string> > metadata = default;
            Optional <int> shareQuota = default;
            Optional <EnabledProtocols> enabledProtocols = default;
            Optional <RootSquashType>   rootSquash       = default;
            Optional <string>           version          = default;
            Optional <bool>             deleted          = default;
            Optional <DateTimeOffset>   deletedTime      = default;
            Optional <int>                       remainingRetentionDays = default;
            Optional <ShareAccessTier>           accessTier             = default;
            Optional <DateTimeOffset>            accessTierChangeTime   = default;
            Optional <string>                    accessTierStatus       = default;
            Optional <long>                      shareUsageBytes        = default;
            Optional <LeaseStatus>               leaseStatus            = default;
            Optional <LeaseState>                leaseState             = default;
            Optional <LeaseDuration>             leaseDuration          = default;
            Optional <IList <SignedIdentifier> > signedIdentifiers      = default;
            Optional <DateTimeOffset>            snapshotTime           = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("etag"))
                {
                    etag = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = new ResourceType(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("lastModifiedTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            lastModifiedTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("metadata"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            Dictionary <string, string> dictionary = new Dictionary <string, string>();
                            foreach (var property1 in property0.Value.EnumerateObject())
                            {
                                dictionary.Add(property1.Name, property1.Value.GetString());
                            }
                            metadata = dictionary;
                            continue;
                        }
                        if (property0.NameEquals("shareQuota"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            shareQuota = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("enabledProtocols"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            enabledProtocols = new EnabledProtocols(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("rootSquash"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            rootSquash = new RootSquashType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("version"))
                        {
                            version = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("deleted"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            deleted = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("deletedTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            deletedTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("remainingRetentionDays"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            remainingRetentionDays = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("accessTier"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            accessTier = new ShareAccessTier(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("accessTierChangeTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            accessTierChangeTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("accessTierStatus"))
                        {
                            accessTierStatus = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("shareUsageBytes"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            shareUsageBytes = property0.Value.GetInt64();
                            continue;
                        }
                        if (property0.NameEquals("leaseStatus"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseStatus = new LeaseStatus(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("leaseState"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseState = new LeaseState(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("leaseDuration"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            leaseDuration = new LeaseDuration(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("signedIdentifiers"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <SignedIdentifier> array = new List <SignedIdentifier>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(SignedIdentifier.DeserializeSignedIdentifier(item));
                            }
                            signedIdentifiers = array;
                            continue;
                        }
                        if (property0.NameEquals("snapshotTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            snapshotTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new FileShareData(id, name, type, systemData, etag.Value, Optional.ToNullable(lastModifiedTime), Optional.ToDictionary(metadata), Optional.ToNullable(shareQuota), Optional.ToNullable(enabledProtocols), Optional.ToNullable(rootSquash), version.Value, Optional.ToNullable(deleted), Optional.ToNullable(deletedTime), Optional.ToNullable(remainingRetentionDays), Optional.ToNullable(accessTier), Optional.ToNullable(accessTierChangeTime), accessTierStatus.Value, Optional.ToNullable(shareUsageBytes), Optional.ToNullable(leaseStatus), Optional.ToNullable(leaseState), Optional.ToNullable(leaseDuration), Optional.ToList(signedIdentifiers), Optional.ToNullable(snapshotTime)));
        }
 /// <summary>
 /// Internal Constructor.
 /// </summary>
 internal BlobProperties(
     DateTimeOffset lastModified,
     DateTimeOffset createdOn,
     IDictionary <string, string> metadata,
     string objectReplicationDestinationPolicyId,
     IList <ObjectReplicationPolicy> objectReplicationSourceProperties,
     BlobType blobType,
     DateTimeOffset copyCompletedOn,
     string copyStatusDescription,
     string copyId,
     string copyProgress,
     Uri copySource,
     CopyStatus copyStatus,
     bool isIncrementalCopy,
     string destinationSnapshot,
     LeaseDurationType leaseDuration,
     LeaseState leaseState,
     LeaseStatus leaseStatus,
     long contentLength,
     string contentType,
     ETag eTag,
     byte[] contentHash,
     string contentEncoding,
     string contentDisposition,
     string contentLanguage,
     string cacheControl,
     long blobSequenceNumber,
     string acceptRanges,
     int blobCommittedBlockCount,
     bool isServerEncrypted,
     string encryptionKeySha256,
     string encryptionScope,
     string accessTier,
     bool accessTierInferred,
     string archiveStatus,
     DateTimeOffset accessTierChangedOn,
     string versionId,
     bool isLatestVersion,
     long tagCount,
     DateTimeOffset expiresOn,
     bool isSealed,
     string rehydratePriority,
     DateTimeOffset lastAccessed,
     BlobImmutabilityPolicy immutabilityPolicy,
     bool hasLegalHold)
 {
     LastModified                         = lastModified;
     LeaseStatus                          = leaseStatus;
     ContentLength                        = contentLength;
     ContentType                          = contentType;
     ETag                                 = eTag;
     LeaseState                           = leaseState;
     ContentEncoding                      = contentEncoding;
     ContentDisposition                   = contentDisposition;
     ContentLanguage                      = contentLanguage;
     CacheControl                         = cacheControl;
     BlobSequenceNumber                   = blobSequenceNumber;
     LeaseDuration                        = leaseDuration;
     AcceptRanges                         = acceptRanges;
     DestinationSnapshot                  = destinationSnapshot;
     BlobCommittedBlockCount              = blobCommittedBlockCount;
     IsIncrementalCopy                    = isIncrementalCopy;
     IsServerEncrypted                    = isServerEncrypted;
     CopyStatus                           = copyStatus;
     EncryptionKeySha256                  = encryptionKeySha256;
     CopySource                           = copySource;
     EncryptionScope                      = encryptionScope;
     CopyProgress                         = copyProgress;
     AccessTier                           = accessTier;
     CopyId                               = copyId;
     AccessTierInferred                   = accessTierInferred;
     CopyStatusDescription                = copyStatusDescription;
     ArchiveStatus                        = archiveStatus;
     CopyCompletedOn                      = copyCompletedOn;
     AccessTierChangedOn                  = accessTierChangedOn;
     BlobType                             = blobType;
     VersionId                            = versionId;
     ObjectReplicationSourceProperties    = objectReplicationSourceProperties;
     IsLatestVersion                      = isLatestVersion;
     ObjectReplicationDestinationPolicyId = objectReplicationDestinationPolicyId;
     TagCount                             = tagCount;
     Metadata                             = metadata;
     ExpiresOn                            = expiresOn;
     CreatedOn                            = createdOn;
     IsSealed                             = isSealed;
     RehydratePriority                    = rehydratePriority;
     ContentHash                          = contentHash;
     LastAccessed                         = lastAccessed;
     ImmutabilityPolicy                   = immutabilityPolicy;
     HasLegalHold                         = hasLegalHold;
 }
 public static string ToSerialString(this LeaseStatus value) => value switch
 {