Hi All,
I am working on Quota creation part and noticed it is working on SERVER_A , but the same code is failing on SERVER_B.
post those failing I checked manually and it is working file with same account.
Please find the error message below.
two thing to watch out is,
1) file creation was successful , in both cases without any issue , but failing while quota creation.
2)
SERVER_A is at onefs 9.2.1.15
SERVER_B is at onefs 9.4.0.14
=========S U C C E S S L O G S T A R T - SERVER_A===============
changed: [xyz.domain.org] => {
"changed": true,
"invocation": {
"module_args": {
"access_zone": "System",
"api_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"api_user": "isilon_user",
"group_name": null,
"onefs_host": "172.0.0.1<SERVER_A>",
"path": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port_no": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"provider_type": "local",
"quota": {
"advisory_limit_size": 10.0,
"cap_unit": "GB",
"container": true,
"hard_limit_size": 13.0,
"include_overheads": true,
"include_snapshots": false,
"period_unit": "weeks",
"soft_grace_period": 1,
"soft_limit_size": 11.0,
"thresholds_on": null
},
"quota_type": "directory",
"state": "present",
"user_name": null,
"verify_ssl": false
}
},
"quota_details": {
"container": true,
"efficiency_ratio": 0.02587890625,
"enforced": true,
"id": "CJhaEwIAAAAAAAAAAAAAQPgAAAAAAAAA",
"include_snapshots": false,
"linked": false,
"notifications": "default",
"path": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"persona": null,
"ready": true,
"reduction_ratio": null,
"thresholds": {
"advisory": 10737418240,
"advisory(GB)": "10.0",
"advisory_exceeded": false,
"advisory_last_exceeded": null,
"hard": 13958643712,
"hard(GB)": "13.0",
"hard_exceeded": false,
"hard_last_exceeded": null,
"percent_advisory": null,
"percent_soft": null,
"soft": 11811160064,
"soft(GB)": "11.0",
"soft_exceeded": false,
"soft_grace": 604800,
"soft_last_exceeded": null
},
"thresholds_on": "fslogicalsize",
"type": "directory",
"usage": {
"applogical": 0,
"applogical_ready": true,
"fslogical": 53,
"fslogical_ready": true,
"fsphysical": 2048,
"fsphysical_ready": true,
"inodes": 1,
"inodes_ready": true,
"physical": 2048,
"physical_data": 0,
"physical_data_ready": true,
"physical_protection": 0,
"physical_protection_ready": true,
"physical_ready": true,
"shadow_refs": 0,
"shadow_refs_ready": true
}
}
}
========== S U C C E S S L O G E N D S - SERVER_A ================
========== E R R O R L O G S T A R T - SERVER_B =================
The full traceback is:
File "/tmp/ansible_dellemc.powerscale.smartquota_payload_01r59iil/ansible_dellemc.powerscale.smartquota_payload.zip/ansible_collections/dellemc/powerscale/plugins/modules/smartquota.py", line 599, in get_quota_details
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api/quota_api.py", line 1865, in list_quota_quotas
(data) = self.list_quota_quotas_with_http_info(**kwargs) # noqa: E501
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api/quota_api.py", line 1985, in list_quota_quotas_with_http_info
collection_formats=collection_formats)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 346, in call_api
_preload_content, _request_timeout)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 185, in __call_api
return_data = self.deserialize(response_data, response_type)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 257, in deserialize
return self.__deserialize(data, response_type)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 296, in __deserialize
return self.__deserialize_model(data, klass)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 671, in __deserialize_model
kwargs[attr] = self.__deserialize(value, attr_type)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 274, in __deserialize
for sub_data in data]
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 274, in <listcomp>
for sub_data in data]
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 296, in __deserialize
return self.__deserialize_model(data, klass)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/api_client.py", line 673, in __deserialize_model
instance = klass(**kwargs)
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/models/quota_quota_extended.py", line 100, in __init__
self.description = description
File "/usr/local/lib/python3.6/site-packages/isilon_sdk/v9_4_0/models/quota_quota_extended.py", line 169, in description
raise ValueError("Invalid value for `description`, must not be `None`") # noqa: E501
fatal: [[xyz.domain.org]: FAILED! => {
"changed": false,
"invocation": {
"module_args": {
"access_zone": "System",
"api_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"api_user": "isilon_user",
"group_name": null,
"onefs_host": "172.0.0.2<SERVER_B>",
"path": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"port_no": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"provider_type": "local",
"quota": {
"advisory_limit_size": 10.0,
"cap_unit": "GB",
"container": true,
"hard_limit_size": 13.0,
"include_overheads": true,
"include_snapshots": false,
"period_unit": "weeks",
"soft_grace_period": 1,
"soft_limit_size": 11.0,
"thresholds_on": null
},
"quota_type": "directory",
"state": "present",
"user_name": null,
"verify_ssl": false
}
},
"msg": "Get Quota Details for ******** failed with Invalid value for `description`, must not be `None`"
}
======== E R R O R L O G E N D S - SERVER_B ==================
umjels
1 Message
0
February 5th, 2024 18:38
I haven't tested this on OneFS 9.5+, but I did tested it on 9.4 as well.
I noticed that Ansible is still able to create the quota when this error happens, but since it seems somehow the none value is hard-coded for the description, then the run fails every time.
If you set up a description for the quota rule by any other means and then run the task again, you will notice that Ansible reports OK. I haven't checked the code either, but it seems like description was a mandatory parameter.
So, why not making the description a configurable parameter?
You can easily omit it if you don't need it, as long as it is optional. Adding a Description via Ansible would be valuable for somebody else though, IMHO.
EDIT: Tested this on OneFS 9.5.0.6. The quota has been created successfully with Ansible reporting properly a changed status. It seems like this is an issue specific to OneFS 9.4.0.x
(edited)