2017-07-12 11 views
0

Softlayer APIでObjectFilterを使用する際に問題があります。Softlayer APIでID情報を取得する

ブロックストレージのホストIQN、ユーザー名、およびパスワードを取得するためにSoftlayer APIをテストしています。

私は以下のコマンドで試しましたが、objectFilterはまったく動作しません。

curl -g 'https://username:[email protected]/rest/v3/SoftLayer_Network_Storage/storage_ID/getObject?objectMask=mask[id,username,allowedIpAddresses[ipAddress,allowedHost[name,credential[username,password]]]]' 

私は期待通りにIQN、ユーザー名、パスワードを含む3つのネットワークオブジェクトを返します。

私は下のapiコマンドで "ip address"でフィルタを作成したいが、うまくいきません。 (objectFilterを無視しているようだ)

curl -g 'https://username:[email protected]/rest/v3/SoftLayer_Network_Storage/storage_ID/getObject?objectMask=mask[id,username,allowedIpAddresses[ipAddress,allowedHost[name,credential[username,password]]]]&objectFilter={"object":{"allowedIpAddresses":{"ipAddress":{"operation":"1.2.3.4"}}}}' 

これは私のAPIの使用と間違って何かですか?

答えて

0

実際にはフィルタが機能していますが、オブジェクトマスクとフィルタの間に若干の違いがあるので気付かないでしょう。オブジェクトフィルタはAPIによって返される結果を制限するために使用できます。どのようなデータ型オブジェクトが返されるかを決定します(この特定のケースでは、SoftLayer_Network_Storage単一のオブジェクト全体とオブジェクトマスクを使用して返される参照可能なリレーショナルプロパティ、たとえば[allowedIpAddresses]配列)。オブジェクトマスクは、返されたオブジェクト。例えば

、取得し、フィルタがどのように機能するかを実証するための別の方法は、次のリクエストを試みることがあります。

curl -g "https://[username]:[apiKey]@api.softlayer.com/rest/v3.1/SoftLayer_Account/getNetworkStorage?objectMask=mask[id,username,allowedIpAddresses[ipAddress,allowedHost[name,credential[username,password]]]]&objectFilter=%7B%22networkStorage%22%3A%7B%22allowedIpAddresses%22%3A%7B%22ipAddress%22%3A%7B%22operation%22%3A%22[ipAddress]%22%7D%7D%7D%7D" 

この方法は、ロックボックス、NAS、EVaultを含むすべてのアカウントに関連付けられたストレージボリュームの配列を取得します、およびiSCSIボリューム(その中のブロックストレージ)

オブジェクトフィルタなしでリクエストを使用し、オブジェクトMaskを使用して返されたすべてのオブジェクトを検証し、オブジェクトフィルタで完全リクエストを使用して、ブロックの単一オブジェクトに返されたオブジェクトを絞り込んだことを確認できますあなたが定義したipAddressを使ってストレージを管理します。あなたは導かれたよう

https://sldn.softlayer.com/blog/bpotter/going-further-softlayer-api-python-client-part-1

https://sldn.softlayer.com/article/object-filters

https://sldn.softlayer.com/article/object-masks

+0

が、私はそれを試してみましたが、違いを見て、私は実際にどのようにわからない:

詳細については下記を参照してください私は本当にREST APIを初めて使うので、単一のオブジェクトを取得します。より完全なAPIの使用方法を教えてください。私はIPアドレスでフィルタリングされた単一のオブジェクトを取得したい。 –

+0

SoftLayer_Network_Storage :: getObjectを使用すると、フィルタが動作しているのと同じデータ型の単一のオブジェクトだけが返されますが、SoftLayer_Account :: getNetworkStorageを使用するとオブジェクトの配列が返されます。 allowIpAddressesのような特定のプロパティを持つ返されたオブジェクトに対してフィルタを使用すると、マスクが** whole ** allowedIpAddressesプロパティを返すときにフィルタを通知しなくなります。 以前に提供したSLDNのドキュメントを読むことを本当にお勧めします。 –

+0

SLDN Apiオブジェクトフィルタに関する別のフォーラムです: https://stackoverflow.com/questions/41186972/how-to-use-object-filter-with-softlayer-rest-api/41189063#41189063 –

関連する問題