ONTAP Rest API Discussions

FileInfo & return_metadata=True

richard_payne

Hello,

 

I'm trying to use the Rest API to get user/group information for a qtree. According to the docs for FileInfo:

 

"The metadata and detailed information about a single directory or file can be retrieved by setting the return_metadata query property to true"

and here's the snippet of code provided:

with HostConnection("<mgmt-ip>", username="admin", password="password", verify=False):
    resource = FileInfo("cb6b1b39-8d21-11e9-b926-05056aca658", path="d1/d2/d3/f1")
    resource.get(return_metadata=True)
    print(resource)

Now if I run that using a real volume UUID and path, I get:

netapp_ontap.error.NetAppRestError: Caused by HTTPError('400 Client Error: Bad Request for url: https://abc123-mgmt:443/api/storage/volumes/60c2a6c2-25f2-11eb-87c4-000c29e6051b/files/test_1?return_metadata=True'): Unexpected argument "return_metadata".

 

and sure enough,  if I try and put that URL into a browser (after passing in credentials):

message "Unexpected argument \"return_metadata\"."

So am I doing something wrong, are the docs wrong?

thx,

--rdp

1 ACCEPTED SOLUTION

I took a look, I think it requires at least 9.7P6 which might explain the difference for you if your simulator is on something earlier than that.

View solution in original post

7 REPLIES 7

RobertBlackhart

What version of ONTAP are you running? This does seem to work for me on 9.7:

 

>>> from netapp_ontap import HostConnection
>>> from netapp_ontap.resources import FileInfo
>>> with HostConnection("<mgmt_ip>", "<username>", "<password>", verify=False):
  2     resource = FileInfo('b8e7dae7-242d-11eb-9046-005056bbcad1', path="file1")
  3     resource.get(return_metadata=True)
>>> resource
FileInfo({'type': 'file', 'changed_time': '2020-11-16T16:32:26-05:00', 'hard_links_count': 1, 'is_vm_aligned': False, 'accessed_time': '2020-11-16T16:32:26-05:00', 'owner_id': 0, 'fill_enabled': False, 'overwrite_enabled': False, 'size': 15, 'is_snapshot': False, 'path': 'file1', 'unique_bytes': 0, 'creation_time': '2020-11-16T16:32:26-05:00', 'inode_number': 96, 'modified_time': '2020-11-16T16:32:26-05:00', 'unix_permissions': 644, 'inode_generation': 42865720, 'group_id': 0, 'is_junction': False, 'bytes_used': 0})

>>>

 

I am running:

 

NetApp Release 9.7: Thu Jan 09 11:10:19 UTC 2020

 

However, that's a simulator. I just tried running against physical hardware (9.7P8) and that appears to work. So for some reason the SIM 9.7 isn't really 9.7, or this requires a particular P release?

 

thx,

--rdp

I took a look, I think it requires at least 9.7P6 which might explain the difference for you if your simulator is on something earlier than that.

View solution in original post

I may have jumped the gun on the solved part. If I pull up the URL via the management interface of the cluster with the API call then I get the file information (in this case the metadata of the qtree itself). However, when I do the same from python I just get the "_links" section back. I've stripped the test case back to this (based on your code and the docs):

 

#!/usr/bin/python3
from netapp_ontap import HostConnection
from netapp_ontap.resources import FileInfo

with HostConnection("<ip_addr>", "<user>", "<password>", verify=False😞
resource = FileInfo("60c2a6c2-25f2-11eb-87c4-000c29e6051b", path="rdp_test_1")
resource.get(return_metadata=True)
print (resource)

 

but what I'm getting back is just:

 

FileInfo({'_links': {'self': {'href': '/api/storage/volumes/60c2a6c2-25f2-11eb-87c4-000c29e6051b/files/rdp_test_1?return_metadata=True'}}})

 

Again, if I paste that URL into the browser on the managment interface (same username/password) it works fine. Tested on both the SIM and a real physical cluster.

What version of the netapp_ontap library do you have installed? If you update it to the latest, does it change the output? You might want to try the latest rc release: https://pypi.org/project/netapp-ontap/#history. I tried both 9.7.3 and 9.8.0rc1 and in the 9.7.3 version I get the same output as you. With the 9.8.0rc1 version, I get all the fields.

 

Even if your cluster is running 9.7, you can use the 9.8 version of the library and everything will still work since it's backwards compatible.

Thanks, that did it. With the 9.8rc1 version I'm getting the FileInfo data back as expected.

 

Thanks (again).

--rdp

Thanks, that was it. I updated the SIM to 9.7P8 this morning and now the call is working.

 

--rdp

Announcements
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner
Public