55from .base_command import BaseCommand
66from . import query , devices
77from .enum import ListFilter , PolicyType
8- from .types import ComplianceSettingsBuilder
8+ from .types import ComplianceSettingsBuilder , ExtendedAttributesBuilder
99from ..common import union , Object
1010from ..exceptions import CTERAException , ObjectNotFoundException
1111
@@ -137,7 +137,7 @@ class CloudDrives(BaseCommand):
137137 def _get_entire_object (self , name , owner ):
138138 return self ._core .api .get (f'{ self .find (name , owner , include = ["baseObjectRef" ]).baseObjectRef } ' )
139139
140- def add (self , name , group , owner , winacls = True , description = None , quota = None , compliance_settings = None ):
140+ def add (self , name , group , owner , winacls = True , description = None , quota = None , compliance_settings = None , xattrs = None ):
141141 """
142142 Create a new Cloud Drive Folder (Cloud Volume)
143143
@@ -149,6 +149,8 @@ def add(self, name, group, owner, winacls=True, description=None, quota=None, co
149149 :param str,optional quota: Cloud drive folder quota in GB
150150 :param cterasdk.common.object.Object,optional compliance_settings: Compliance settings, defaults to disabled.
151151 Use :func:`cterasdk.core.types.ComplianceSettingsBuilder` to build the compliance settings object
152+ :param cterasdk.common.object.Object,optional xattrs: Extended attributes, defaults to MacOS.
153+ Use :func:`cterasdk.core.types.ExtendedAttributesBuilder` to build the extended attributes object
152154 """
153155 param = Object ()
154156 param .name = name
@@ -159,6 +161,7 @@ def add(self, name, group, owner, winacls=True, description=None, quota=None, co
159161 if description :
160162 param .description = description
161163 param .wormSettings = compliance_settings if compliance_settings else ComplianceSettingsBuilder .default ().build ()
164+ param .extendedAttributes = xattrs if xattrs else ExtendedAttributesBuilder .default ().build ()
162165
163166 try :
164167 response = self ._core .api .execute ('' , 'addCloudDrive' , param )
@@ -174,8 +177,8 @@ def add(self, name, group, owner, winacls=True, description=None, quota=None, co
174177 )
175178 raise error
176179
177- def modify (self , current_name , owner , new_name = None , new_owner = None , new_group = None ,
178- description = None , winacls = None , quota = None , compliance_settings = None ):
180+ def modify (self , current_name , owner , new_name = None , new_owner = None , new_group = None , # pylint: disable=too-many-arguments
181+ description = None , winacls = None , quota = None , compliance_settings = None , xattrs = None ):
179182 """
180183 Modify a Cloud Drive Folder (Cloud Volume)
181184
@@ -189,6 +192,8 @@ def modify(self, current_name, owner, new_name=None, new_owner=None, new_group=N
189192 :param str,optional quota: Folder quota in GB
190193 :param cterasdk.common.object.Object,optional compliance_settings: Compliance settings.
191194 Use :func:`cterasdk.core.types.ComplianceSettingsBuilder` to build the compliance settings object
195+ :param cterasdk.common.object.Object,optional xattrs: Extended attributes.
196+ Use :func:`cterasdk.core.types.ExtendedAttributesBuilder` to build the extended attributes object
192197 """
193198 param = self ._get_entire_object (current_name , owner )
194199 if new_name :
@@ -205,6 +210,8 @@ def modify(self, current_name, owner, new_name=None, new_owner=None, new_group=N
205210 param .folderQuota = quota
206211 if compliance_settings :
207212 param .wormSettings = compliance_settings
213+ if xattrs :
214+ param .extendedAttributes = xattrs
208215 try :
209216 response = self ._core .api .put (f'/{ param .baseObjectRef } ' , param )
210217 logging .getLogger ('cterasdk.core' ).info ('Cloud drive folder updated. %s' , {'name' : current_name })
0 commit comments