iij / p2pubapi

Golang binding for IIJ GIO P2 PUB API
6 stars 4 forks source link

BootDeviceStorageConnect実行時にParameterErrorが発生 #10

Closed Darmuck closed 6 years ago

Darmuck commented 6 years ago

p2pubapiを使ってブートデバイス接続を試した所、パラメータエラーが発生しました。 APIマニュアルを見る限り、パラメータは正しいように見受けられるのですが、他に原因は考えられますか。

ブートデバイスストレージ接続 http://manual.iij.jp/p2/pubapi/59939555.html

Environment

Expected behavior

仮想サーバへのブートデバイス接続が成功

Actual behavior

仮想サーバへのブートデバイス接続に失敗

root@<hostname>:/# p2pub SystemStorageAdd --Type "S30GB_CENTOS7_64"
{"AttachedVirtualServer":{},"ContractStatus":"InPreparation","Label":"","OSType":"Linux","RequestId":"513293e7-c5dfb362-f17462fa-000006f1-ded7668c","ResourceStatus":"","ServiceCode":"ibaAAAAAAAA","StartDate":"","StopDate":"","StorageGroup":"Z","StorageSize":"30GB","Type":"S30GB_CENTOS7_64"}

root@<hostname>:/# p2pub VMAdd --OSType "Linux" --Type "VB0-1"
{"Category":"BestEffort","ContractStatus":"InService","Label":"","NetworkList":[{"IPv6Enabled":"No","IpAddressList":[],"MacAddress":"02-02-fb-55-f9-43","NetworkType":"Global"},{"IpAddressList":[{"IPv4":{"IpAddress":"10.203.0.15","Type":"Managed"}}],"MacAddress":"02-02-a0-5c-aa-8f","NetworkType":"PrivateStandard"}],"OSType":"Linux","RequestId":"7d3393e7-dedfb362-037a62fa-00006ec8-dfd7668c","ResourceStatus":"Stopped","ServerGroup":"B","ServerSpec":{"CPU":"1vCore","Memory":"1GB","Network":{"IncludingGlobalSide":"No","MaxTrafficSpeed":"50Mbps"}},"ServiceCode":"ivmBBBBBBBB","StartDate":"20180602","StopDate":"","StorageList":[],"Type":"VB0-1"}

root@<hostname>:/# p2pub VMGet --IvmServiceCode "ivmBBBBBBBB"
{"Category":"BestEffort","ContractStatus":"InService","Label":"","NetworkList":[{"IPv6Enabled":"No","IpAddressList":[],"MacAddress":"02-02-fb-55-f9-43","NetworkType":"Global"},{"IpAddressList":[{"IPv4":{"IpAddress":"10.203.0.15","Type":"Managed"}}],"MacAddress":"02-02-a0-5c-aa-8f","NetworkType":"PrivateStandard"}],"OSType":"Linux","RequestId":"9a3093e7-dedfb362-647a62fa-000078d3-98d7668c","ResourceStatus":"Stopped","ServerGroup":"B","ServerSpec":{"CPU":"1vCore","Memory":"1GB","Network":{"IncludingGlobalSide":"No","MaxTrafficSpeed":"50Mbps"}},"StartDate":"20180602","StopDate":"","StorageList":[],"Type":"VB0-1"}

root@<hostname>:/# p2pub SystemStorageGet --IbaServiceCode "ibaAAAAAAAA"
{"AttachedVirtualServer":{},"ContractStatus":"InService","Label":"","OSType":"Linux","RequestId":"b23093e7-dedfb362-037a62fa-00007dc8-d6d7668c","ResourceStatus":"NotAttached","StartDate":"20180602","StopDate":"","StorageGroup":"Z","StorageSize":"30GB","Type":"S30GB_CENTOS7_64"}

root@<hostname>:/# p2pub BootDeviceStorageConnect --IvmServiceCode "ivmBBBBBBBB" --IbaServiceCode "ibaAAAAAAAA"
ERRO[0000] ParameterError: There are invalid parameters.

root@<hostname>:/# p2pub -V BootDeviceStorageConnect --IvmServiceCode "ivmBBBBBBBB" --IbaServiceCode "ibaAAAAAAAA"
DEBU[0000] found BootDeviceStorageConnect {GisServiceCode: IvmServiceCode: IbaServiceCode:}
DEBU[0000] settingGisServiceCodegisXXXXXXXX
DEBU[0000] settingIvmServiceCodeivmBBBBBBBB
DEBU[0000] settingIbaServiceCodeibaAAAAAAAA
DEBU[0000] data: map[string]string{"GisServiceCode":"gisXXXXXXXX", "IvmServiceCode":"ivmBBBBBBBB", "IbaServiceCode":"ibaAAAAAAAA"}
DEBU[0000] query[]json[IbaServiceCode]path/r/20151130/gisXXXXXXXX/virtual-servers/ivmBBBBBBBB/boot-device.json
DEBU[0000] param{https  <nil> p2pub.api.iij.jp /r/20151130/gisXXXXXXXX/virtual-servers/ivmBBBBBBBB/boot-device.json   }
DEBU[0000] call with bodyPUT{"IbaServiceCode":"ibaAAAAAAAA"}
DEBU[0000] signmap[Authorization:[IIJAPI **********************] Content-Type:[application/json] X-Iijapi-Expire:[2018-06-02T12:44:43Z] X-Iijapi-Signaturemethod:[HmacSHA256] X-Iijapi-Signatureversion:[2]]
DEBU[0000] res&{400 Bad Request 400 HTTP/1.1 1 1 map[Date:[Sat, 02 Jun 2018 11:44:43 GMT] Server:[thin] Content-Type:[application/json; charset=utf-8] Strict-Transport-Security:[max-age=2592000] X-Content-Type-Options:[nosniff]] 0xc8200ebd00 -1 [chunked] true map[] 0xc820081500 0xc82038e790}
DEBU[0000] data{"ErrorResponse":{"RequestId":"773193e7-dedfb362-037a62fa-00007cc8-d7d7668c","ErrorType":"ParameterError","ErrorMessage":"There are invalid parameters."}}
ERRO[0000] ParameterError: There are invalid parameters.

root@<hostname>:/# p2pub getenv
INFO[0000] IIJAPI_SECRET_KEY=**********************
INFO[0000] LS_COLORS=(snip...)
INFO[0000] HTTP_PROXY=<Proxy URL>
INFO[0000] HOSTNAME=<hostname>
INFO[0000] PWD=/
INFO[0000] HOME=/root
INFO[0000] https_proxy=<Proxy URL>
INFO[0000] http_proxy=<Proxy URL>
INFO[0000] HTTPS_PROXY=<Proxy URL>
INFO[0000] TERM=xterm
INFO[0000] SHLVL=1
INFO[0000] CUSTOMERCODE=SGXXXXXXX
INFO[0000] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INFO[0000] IIJAPI_ACCESS_KEY=**********************
INFO[0000] GISSERVICECODE=gisXXXXXXXX
INFO[0000] _=/usr/local/bin/p2pub
wtnb75 commented 6 years ago

同様にS30GB_CENTOS7_64のシステムストレージをVB0-1のVMにつける動作を試してみましたが、BootDeviceStorageConnectまで問題なく成功しました。

サーバ側の一時的な問題なのか、エラー文字列の通り引数の問題なのかちょっと分かりませんが、引数を確認してもう一度試してもらえますか?

wtnb75 commented 6 years ago

追加でもう1つ。 使っているアカウントにサーバ操作の権限がない可能性があるので、確認してみてください。 Webブラウザでコントロールパネルから同様の操作(VMとシステムストレージを契約し、ブートデバイスを取り付ける)をしてみると確認できます。

http://manual.iij.jp/p2/pub/e-1-3.html

「サービスグループの運用管理担当者」であればVMAddやSystemStorageAdd、参照系の操作ができますが、BootDeviceStorageConnect(ブートデバイス取り付け)には「サービスの運用管理担当者」という権限が必要で、これがついていないとご指摘の通り400系のエラーになるはずです。

Darmuck commented 6 years ago

サーバ側の一時的な問題なのか、エラー文字列の通り引数の問題なのかちょっと分かりませんが、引数を確認してもう一度試してもらえますか?

再度同じ状況で引数を確認して試した所、同じエラーが再現しました。サーバ側の一時的な問題ではないようです。

使っているアカウントにサーバ操作の権限がない可能性があるので、確認してみてください。 「サービスグループの運用管理担当者」であればVMAddやSystemStorageAdd、参照系の操作ができますが、BootDeviceStorageConnect(ブートデバイス取り付け)には「サービスの運用管理担当者」という権限が必要で、これがついていないとご指摘の通り400系のエラーになるはずです。

こちら、盲点でした。 「サービスの運用管理担当者」権限を持つマスターIDでAPIトークンを取得し、 そちらを使ってBootDeviceStorageConnectした所、成功しました。

root# p2pub BootDeviceStorageConnect --IvmServiceCode "ivmBBBBBBB" --IbaServiceCode "ibaAAAAAA"
{"OSType":"Linux","PciSlot":"0x10","RequestId":"e63da5e7-c5dfb362-651f62fa-0000d19a-99d7668c","ServiceCode":"ibaAAAAAAA","Type":"S30GB_CENTOS7_64","URI":"/r/20151130/gisXXXXXXXX/system-storages/ibaAAAAAAA.json"}

ご協力ありがとうございました。本件、クローズとさせてください。