예제 #1
0
 /// <summary>
 /// Azure DataLakeGen2 Item constructor
 /// </summary>
 /// <param name="blob">CloudBlockBlob blob object</param>
 public AzureDataLakeGen2Item(DataLakeFileClient fileClient)
 {
     Name        = fileClient.Name;
     Path        = fileClient.Path;
     File        = fileClient;
     IsDirectory = false;
     try
     {
         Properties   = fileClient.GetProperties();
         Length       = Properties.ContentLength;
         ContentType  = Properties.ContentType;
         LastModified = Properties.LastModified;
     }
     catch (global::Azure.RequestFailedException e) when(e.Status == 403 || e.Status == 404)
     {
         // skip get file properties if don't have read permission
     }
     try
     {
         AccessControl = File.GetAccessControl();
         Permissions   = AccessControl.Permissions;
         ACL           = PSPathAccessControlEntry.ParsePSPathAccessControlEntrys(AccessControl.AccessControlList);
         Owner         = AccessControl.Owner;
         Group         = AccessControl.Group;
     }
     catch (global::Azure.RequestFailedException e) when(e.Status == 403 || e.Status == 404)
     {
         // skip get file ACL if don't have read permission
     }
 }
예제 #2
0
 /// <summary>
 /// Azure DataLakeGen2 Item constructor
 /// </summary>
 /// <param name="blob">CloudBlockBlob blob object</param>
 public AzureDataLakeGen2Item(DataLakeFileClient fileClient)
 {
     Name          = fileClient.Name;
     Path          = fileClient.Path;
     File          = fileClient;
     Properties    = fileClient.GetProperties();
     AccessControl = File.GetAccessControl();
     Length        = Properties.ContentLength;
     ContentType   = Properties.ContentType;
     LastModified  = Properties.LastModified;
     IsDirectory   = false;
     Permissions   = AccessControl.Permissions;
     ACL           = PSPathAccessControlEntry.ParsePSPathAccessControlEntrys(AccessControl.AccessControlList);
     Owner         = AccessControl.Owner;
     Group         = AccessControl.Group;
 }
예제 #3
0
        private static void SetAclAndGetFileProperties(DataLakeFileSystemClient client)
        {
            DataLakeFileClient fileClient = client.GetFileClient("sample.txt");

            fileClient.Create();

            // Set Access Control List
            IList <PathAccessControlItem> accessControlList
                = PathAccessControlExtensions.ParseAccessControlList("user::rwx,group::r--,mask::rwx,other::---");

            fileClient.SetAccessControlList(accessControlList);
            PathAccessControl accessControlResponse = fileClient.GetAccessControl();

            Console.WriteLine($"User: {accessControlResponse.Owner}");
            Console.WriteLine($"Group: {accessControlResponse.Group}");
            Console.WriteLine($"Permissions: {accessControlResponse.Permissions}");
        }
        public void SetGetAcls()
        {
            // Make StorageSharedKeyCredential to pass to the serviceClient
            string storageAccountName = NamespaceStorageAccountName;
            string storageAccountKey  = NamespaceStorageAccountKey;
            Uri    serviceUri         = NamespaceBlobUri;
            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

            // Create DataLakeServiceClient using StorageSharedKeyCredentials
            DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

            // Get a reference to a filesystem named "sample-filesystem-acl" and then create it
            DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient(Randomize("sample-filesystem-acl"));

            filesystem.Create();
            try
            {
                #region Snippet:SampleSnippetDataLakeFileClient_SetAcls
                // Create a DataLake file so we can set the Access Controls on the files
                DataLakeFileClient fileClient = filesystem.GetFileClient(Randomize("sample-file"));
                fileClient.Create();

                // Set Access Control List
                IList <PathAccessControlItem> accessControlList
                    = PathAccessControlExtensions.ParseAccessControlList("user::rwx,group::r--,mask::rwx,other::---");
                fileClient.SetAccessControlList(accessControlList);
                #endregion Snippet:SampleSnippetDataLakeFileClient_SetAcls
                #region Snippet:SampleSnippetDataLakeFileClient_GetAcls
                // Get Access Control List
                PathAccessControl accessControlResponse = fileClient.GetAccessControl();
                #endregion Snippet:SampleSnippetDataLakeFileClient_GetAcls

                // Check Access Control permissions
                Assert.AreEqual(
                    PathAccessControlExtensions.ToAccessControlListString(accessControlList),
                    PathAccessControlExtensions.ToAccessControlListString(accessControlResponse.AccessControlList.ToList()));
            }
            finally
            {
                // Clean up after the test when we're finished
                filesystem.Delete();
            }
        }
        public void SetPermissions()
        {
            // Make StorageSharedKeyCredential to pass to the serviceClient
            string storageAccountName = NamespaceStorageAccountName;
            string storageAccountKey  = NamespaceStorageAccountKey;
            Uri    serviceUri         = NamespaceBlobUri;
            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

            // Create DataLakeServiceClient using StorageSharedKeyCredentials
            DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential);

            // Get a reference to a filesystem named "sample-filesystem-acl" and then create it
            DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient(Randomize("sample-filesystem-per"));

            filesystem.Create();
            try
            {
                #region Snippet:SampleSnippetDataLakeFileClient_SetPermissions
                // Create a DataLake file so we can set the Access Controls on the files
                DataLakeFileClient fileClient = filesystem.GetFileClient(Randomize("sample-file"));
                fileClient.Create();

                // Set the Permissions of the file
                PathPermissions pathPermissions = PathPermissions.ParseSymbolicPermissions("rwxrwxrwx");
                fileClient.SetPermissions(permissions: pathPermissions);
                #endregion Snippet:SampleSnippetDataLakeFileClient_SetPermissions

                // Get Access Control List
                PathAccessControl accessControlResponse = fileClient.GetAccessControl();

                // Check Access Control permissions
                Assert.AreEqual(pathPermissions.ToSymbolicPermissions(), accessControlResponse.Permissions.ToSymbolicPermissions());
                Assert.AreEqual(pathPermissions.ToOctalPermissions(), accessControlResponse.Permissions.ToOctalPermissions());
            }
            finally
            {
                // Clean up after the test when we're finished
                filesystem.Delete();
            }
        }