Skip to content

Commit

Permalink
Unity: fix fs/nfs/cifs issues (#335)
Browse files Browse the repository at this point in the history
Fix filesystem, nfs share, cifs share issues:

- Incorrect response from nfs_share create() call
- Unable to remove filesystem's description
  • Loading branch information
yong-huang authored Nov 18, 2020
1 parent d4a2818 commit e435790
Show file tree
Hide file tree
Showing 18 changed files with 309 additions and 12 deletions.
3 changes: 2 additions & 1 deletion storops/unity/resource/cifs_share.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ def create(cls, cli, name, fs, path=None, cifs_server=None,
cifsShareParameters=share_param)
resp = sr.modify_fs(cifsShareCreate=[param])
resp.raise_if_err()
return UnityCifsShareList(cli=cli, name=name).first_item
return UnityCifsShareList(
cli=cli, name=name, filesystem=fs).first_item

@classmethod
def create_from_snap(cls, cli, snap, name, path=None, is_read_only=None,
Expand Down
2 changes: 1 addition & 1 deletion storops/unity/resource/filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def modify(self, size=None, is_thin=None, tiering_policy=None,
params['fsParameters'] = fs_param
if cifs_fs_parameters:
params['cifsFsParameters'] = cifs_fs_parameters
if description:
if description is not None:
params['description'] = description

if not params:
Expand Down
2 changes: 1 addition & 1 deletion storops/unity/resource/nfs_share.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def create(cls, cli, name, fs, path=None, share_access=None,
nfsShareParameters=share_param)
resp = sr.modify_fs(nfsShareCreate=[param])
resp.raise_if_err()
return UnityNfsShareList(cli=cli, name=name).first_item
return UnityNfsShareList(cli=cli, name=name, filesystem=fs).first_item

@classmethod
def create_from_snap(cls, cli, snap, name, path=None, is_read_only=None,
Expand Down
9 changes: 8 additions & 1 deletion storops_test/unity/resource/test_cifs_share.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,19 @@ def test_snap_cifs_share_create_success(self):
assert_that(share.description, equal_to(description))

@patch_rest
def test_create_same_name_exists(self):
def test_create_same_name_exists_in_fs(self):
def f():
UnityCifsShare.create(t_rest(), 'cs2', 'fs_8')

assert_that(f, raises(UnitySmbShareNameExistedError, 'already exists'))

@patch_rest
def test_create_same_name_in_diff_fs(self):
UnityCifsShare.create(t_rest(), 'cs1', 'fs_8')
share = UnityCifsShare.create(t_rest(), 'cs1', 'fs_7')
assert_that(share.name, equal_to('cs1'))
assert_that(share.filesystem.name, equal_to('fs7'))

@patch_rest
def test_modify_success(self):
share = UnityCifsShare(cli=t_rest(), _id='SMBShare_62')
Expand Down
6 changes: 6 additions & 0 deletions storops_test/unity/resource/test_filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,12 @@ def test_modify_success_no_param(self):
fs = UnityFileSystem(cli=t_rest(), _id='fs_21')
fs.modify()

@patch_rest
def test_modify_success_empty_description(self):
fs = UnityFileSystem(cli=t_rest(), _id='fs_22')
fs.modify(description='')
assert_that(fs.description, equal_to(''))

@patch_rest
def test_delete_filesystem_async(self):
fs = UnityFileSystem(_id='fs_14', cli=t_rest())
Expand Down
13 changes: 12 additions & 1 deletion storops_test/unity/resource/test_nfs_share.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,14 +250,25 @@ def test_modify_snap_nfs_share_no_param(self):
share.modify()

@patch_rest
def test_create_nfs_share_name_exists(self):
def test_create_nfs_share_name_exists_in_fs(self):
def f():
UnityNfsShare.create(
t_rest(), 'ns1', 'fs_9',
share_access=NFSShareDefaultAccessEnum.ROOT)

assert_that(f, raises(UnityNfsShareNameExistedError, 'already exists'))

@patch_rest
def test_create_nfs_share_same_name_in_diff_fs(self):
UnityNfsShare.create(
t_rest(), 'ns1', 'fs_9',
share_access=NFSShareDefaultAccessEnum.READ_WRITE)
share = UnityNfsShare.create(
t_rest(), 'ns1', 'fs_10',
share_access=NFSShareDefaultAccessEnum.READ_WRITE)
assert_that(share.name, equal_to('ns1'))
assert_that(share.filesystem.name, equal_to('esa_nfs1'))

@patch_rest
def test_delete_nfs_share_success(self):
share = UnityNfsShare(_id='NFSShare_4', cli=t_rest())
Expand Down
10 changes: 9 additions & 1 deletion storops_test/unity/rest_data/cifsShare/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,15 @@
"response": "name_cs1.json"
},
{
"url": "/api/types/cifsShare/instances?compact=True&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&filter=name eq \"cs61\"",
"url": "/api/types/cifsShare/instances?compact=True&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&filter=filesystem eq \"fs_8\" and name eq \"cs1\"",
"response": "name_cs1.json"
},
{
"url": "/api/types/cifsShare/instances?compact=True&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&filter=filesystem eq \"fs_7\" and name eq \"cs1\"",
"response": "name_cs1_1.json"
},
{
"url": "/api/types/cifsShare/instances?compact=True&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&filter=filesystem eq \"fs_61\" and name eq \"cs61\"",
"response": "name_cs61.json"
},
{
Expand Down
2 changes: 1 addition & 1 deletion storops_test/unity/rest_data/cifsShare/name_cs1.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"@base": "https://10.244.223.66/api/types/cifsShare/instances?filter=name eq \"cs1\"&fields=creationTime,description,exportPaths,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,type,umask,filesystem.id,snap.id&per_page=2000&compact=true",
"@base": "https://10.244.223.66/api/types/cifsShare/instances?filter=filesystem eq \"fs_8\" and name eq \"cs1\"&fields=creationTime,description,exportPaths,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,type,umask,filesystem.id,snap.id&per_page=2000&compact=true",
"updated": "2016-03-17T11:21:38.117Z",
"links": [
{
Expand Down
39 changes: 39 additions & 0 deletions storops_test/unity/rest_data/cifsShare/name_cs1_1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"@base": "https://10.244.223.66/api/types/cifsShare/instances?filter=filesystem eq \"fs_7\" and name eq \"cs1\"&fields=creationTime,description,exportPaths,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,type,umask,filesystem.id,snap.id&per_page=2000&compact=true",
"updated": "2016-03-17T11:21:38.117Z",
"links": [
{
"rel": "self",
"href": "&page=1"
}
],
"entries": [
{
"content": {
"id": "SMBShare_7",
"type": 1,
"offlineAvailability": 3,
"instanceId": "root/emc:EMC_UEM_CIFSShareLeaf%InstanceID=SMBShare_7",
"name": "cs1",
"path": "/",
"exportPaths": [
"\\\\nas1131.win2012.dev\\cs1",
"\\\\10.244.220.121\\cs1"
],
"description": "",
"creationTime": "2016-03-17T10:20:21.899Z",
"modifiedTime": "2016-03-17T10:20:21.899Z",
"isContinuousAvailabilityEnabled": false,
"isEncryptionEnabled": false,
"isACEEnabled": false,
"isABEEnabled": false,
"isBranchCacheEnabled": false,
"isDFSEnabled": false,
"umask": "022",
"filesystem": {
"id": "fs_7"
}
}
}
]
}
2 changes: 1 addition & 1 deletion storops_test/unity/rest_data/cifsShare/name_cs61.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"@base": "https://192.168.1.58/api/types/cifsShare/instances?filter=name eq \"cs61\"&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&per_page=2000&compact=true",
"@base": "https://192.168.1.58/api/types/cifsShare/instances?filter=filesystem eq \"fs_61\" and name eq \"cs61\"&fields=creationTime,description,exportPaths,filesystem,id,instanceId,isABEEnabled,isACEEnabled,isBranchCacheEnabled,isContinuousAvailabilityEnabled,isDFSEnabled,isEncryptionEnabled,isReadOnly,modifiedTime,name,offlineAvailability,path,snap,type,umask&per_page=2000&compact=true",
"updated": "2020-10-29T05:50:45.531Z",
"links": [
{
Expand Down
77 changes: 77 additions & 0 deletions storops_test/unity/rest_data/filesystem/fs_22.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"content": {
"id": "fs_22",
"operationalStatus": [
2
],
"type": 1,
"tieringPolicy": 3,
"supportedProtocols": 0,
"accessPolicy": 1,
"folderRenamePolicy": 1,
"lockingPolicy": 1,
"format": 2,
"hostIOSize": 8192,
"poolFullPolicy": 0,
"instanceId": "root/emc:EMC_UEM_FileSystemLeaf%InstanceID=fs_13",
"health": {
"value": 5,
"descriptionIds": [
"ALRT_APP_FS_OK"
],
"descriptions": [
"This storage resource is operating normally. No action is required."
]
},
"name": "fs22",
"description": "",
"creationTime": "2016-03-02T02:43:33.495Z",
"modificationTime": "2016-03-02T02:43:33.496Z",
"sizeTotal": 5368709120,
"sizeUsed": 1642971136,
"sizeAllocated": 3221225472,
"sizePreallocated": 2401206272,
"sizeAllocatedTotal": 4578115584,
"minSizeAllocated": 0,
"isReadOnly": false,
"isThinEnabled": true,
"isDataReductionEnabled": false,
"dataReductionSizeSaved": 0,
"dataReductionPercent": 0,
"dataReductionRatio": 1.0,
"isAdvancedDedupEnabled": false,
"isCIFSSyncWritesEnabled": true,
"isCIFSOpLocksEnabled": true,
"isCIFSNotifyOnWriteEnabled": true,
"isCIFSNotifyOnAccessEnabled": true,
"cifsNotifyOnChangeDirDepth": 256,
"cifsNumUsedFiles": 0,
"oid": 8589934602,
"backendId": "171798691846",
"metadataSize": 3489660928,
"metadataSizeAllocated": 3221225472,
"perTierSizeUsed": [
6442450944,
0,
0
],
"snapsSize": 0,
"snapsSizeAllocated": 0,
"snapCount": 0,
"isSMBCA": false,
"storageResource": {
"id": "res_22"
},
"pool": {
"id": "pool_1"
},
"nasServer": {
"id": "nas_1"
},
"cifsShare": [
{
"id": "SMBShare_1"
}
]
}
}
81 changes: 81 additions & 0 deletions storops_test/unity/rest_data/filesystem/fs_7.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
{
"content": {
"id": "fs_7",
"operationalStatus": [
2
],
"type": 1,
"dedupState": 2,
"tieringPolicy": 0,
"supportedProtocols": 1,
"accessPolicy": 2,
"renamePolicy": 0,
"lockingPolicy": 0,
"format": 2,
"hostIOSize": 8192,
"poolFullPolicy": 0,
"instanceId": "root/emc:EMC_UEM_FileSystemLeaf%InstanceID=fs_7",
"health": {
"value": 5,
"descriptionIds": [
"ALRT_APP_FS_OK"
],
"descriptions": [
"This storage resource is operating normally. No action is required."
]
},
"name": "fs7",
"description": "",
"creationTime": "2016-03-17T10:00:06.089Z",
"modificationTime": "2016-03-17T10:00:06.097Z",
"sizeTotal": 3221225472,
"sizeUsed": 1620303872,
"sizeAllocated": 3221225472,
"isReadOnly": false,
"isThinEnabled": true,
"isCIFSSyncWritesEnabled": false,
"isCIFSOpLocksEnabled": true,
"isCIFSNotifyOnWriteEnabled": false,
"isCIFSNotifyOnAccessEnabled": false,
"cifsNotifyOnChangeDirDepth": 512,
"cifsNumUsedFiles": 0,
"dedupExcludePaths": [
""
],
"dedupExcludeExtensions": [
""
],
"isDedupRunning": false,
"dedupOriginalSizeUsed": 1351819264,
"dedupSizeUsed": 0,
"dedupSizeSaved": 0,
"dedupPercentSaved": 0,
"dedupNumFilesTotal": 0,
"dedupNumFilesDeduped": 0,
"dedupNumFilesScanned": 0,
"dedupNumFileRecalled": 0,
"dedupProgress": 100,
"oid": 8589934637,
"backendId": "171798691864",
"metadataSize": 3489660928,
"metadataSizeAllocated": 3221225472,
"perTierSizeUsed": [
0,
6442450944,
0
],
"snapsSize": 0,
"snapsSizeAllocated": 0,
"snapCount": 0,
"isSMBCA": false,
"storageResource": {
"id": "res_23"
},
"pool": {
"id": "pool_2"
},
"nasServer": {
"id": "nas_2"
}
}
}
8 changes: 8 additions & 0 deletions storops_test/unity/rest_data/filesystem/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
"url": "/api/instances/filesystem/fs_5?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_5.json"
},
{
"url": "/api/instances/filesystem/fs_7?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_7.json"
},
{
"url": "/api/instances/filesystem/fs_8?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_8.json"
Expand Down Expand Up @@ -60,6 +64,10 @@
"url": "/api/instances/filesystem/fs_21?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_21.json"
},
{
"url": "/api/instances/filesystem/fs_22?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_22.json"
},
{
"url": "/api/instances/filesystem/fs_41?compact=True&fields=accessPolicy,backendId,cifsNotifyOnChangeDirDepth,cifsNumUsedFiles,cifsShare,creationTime,description,format,health,hostIOSize,id,instanceId,isCIFSNotifyOnAccessEnabled,isCIFSNotifyOnWriteEnabled,isCIFSOpLocksEnabled,isCIFSSyncWritesEnabled,isReadOnly,isSMBCA,isThinEnabled,lockingPolicy,metadataSize,metadataSizeAllocated,modificationTime,name,nasServer,nfsShare,oid,operationalStatus,perTierSizeUsed,pool,poolFullPolicy,renamePolicy,sizeAllocated,sizeTotal,sizeUsed,snapCount,snapsSize,snapsSizeAllocated,storageResource,supportedProtocols,tieringPolicy,tieringPolicy,type",
"response": "fs_41.json"
Expand Down
8 changes: 6 additions & 2 deletions storops_test/unity/rest_data/nfsShare/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,15 @@
"response": "all.json"
},
{
"url": "/api/types/nfsShare/instances?compact=True&fields=creationTime,defaultAccess,description,exportPaths,filesystem,hostAccesses,id,instanceId,isReadOnly,minSecurity,modificationTime,name,noAccessHosts,path,readOnlyHosts,readWriteHosts,role,rootAccessHosts,snap,type&filter=name eq \"ns1\"",
"url": "/api/types/nfsShare/instances?compact=True&fields=creationTime,defaultAccess,description,exportPaths,filesystem,hostAccesses,id,instanceId,isReadOnly,minSecurity,modificationTime,name,noAccessHosts,path,readOnlyHosts,readWriteHosts,role,rootAccessHosts,snap,type&filter=filesystem eq \"fs_9\" and name eq \"ns1\"",
"response": "name_ns1.json"
},
{
"url": "/api/types/nfsShare/instances?compact=True&fields=creationTime,defaultAccess,description,exportPaths,filesystem,hostAccesses,id,instanceId,isReadOnly,minSecurity,modificationTime,name,noAccessHosts,path,readOnlyHosts,readWriteHosts,role,rootAccessHosts,snap,type&filter=name eq \"ns41\"",
"url": "/api/types/nfsShare/instances?compact=True&fields=creationTime,defaultAccess,description,exportPaths,filesystem,hostAccesses,id,instanceId,isReadOnly,minSecurity,modificationTime,name,noAccessHosts,path,readOnlyHosts,readWriteHosts,role,rootAccessHosts,snap,type&filter=filesystem eq \"fs_10\" and name eq \"ns1\"",
"response": "name_ns1_1.json"
},
{
"url": "/api/types/nfsShare/instances?compact=True&fields=creationTime,defaultAccess,description,exportPaths,filesystem,hostAccesses,id,instanceId,isReadOnly,minSecurity,modificationTime,name,noAccessHosts,path,readOnlyHosts,readWriteHosts,role,rootAccessHosts,snap,type&filter=filesystem eq \"fs_41\" and name eq \"ns41\"",
"response": "name_ns41.json"
},
{
Expand Down
2 changes: 1 addition & 1 deletion storops_test/unity/rest_data/nfsShare/name_ns1.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"@base": "https://10.244.223.66/api/types/nfsShare/instances?filter=name eq \"ns1\"&fields=creationTime,defaultAccess,description,exportPaths,id,instanceId,isReadOnly,minSecurity,modificationTime,name,path,role,type,hostAccesses.id,readOnlyHosts.id,noAccessHosts.id,rootAccessHosts.id,filesystem.id,readWriteHosts.id,snap.id&per_page=2000&compact=true",
"@base": "https://10.244.223.66/api/types/nfsShare/instances?filter=filesystem eq \"fs_9\" and name eq \"ns1\"&fields=creationTime,defaultAccess,description,exportPaths,id,instanceId,isReadOnly,minSecurity,modificationTime,name,path,role,type,hostAccesses.id,readOnlyHosts.id,noAccessHosts.id,rootAccessHosts.id,filesystem.id,readWriteHosts.id,snap.id&per_page=2000&compact=true",
"updated": "2016-03-17T15:34:02.124Z",
"links": [
{
Expand Down
Loading

0 comments on commit e435790

Please sign in to comment.