2012年8月15日 星期三

Openstack 跟AWS EC2 的API相容性測試

Source: Star Trek - Captain's Log
『太空,人類的終極邊疆。星艦企業號的旅程就是為了探索陌生的新世界,去尋找宇宙中的新生命與新文明,勇敢航向人類足跡從未踏至的領域。』
不知道為什麼就很想用這個梗,大概我跟也迷航在Openstack的功能與設定裡面了...Orz..不知道何時雲端運算會變成銀河運算或是宇宙運算....(誤)

艦長日誌:

          測試目標:讓MeshCloud可以介接Openstack
           API 版本: aws-java-sdk 1.3.10
OpenStack版本: Openstack-essex release
           測試環境: Ubuntu 12.04.1 LTS
           測試對象:呼叫 openstack API http://x.x.x.x:8773/services/Cloud/


這幾天都在測試Openstack-essex 跟AWS EC2 的API相容性,發現很多API並不如官網所宣稱的那麼相容,或者應該說可以呼叫,但是很多行為與細節跟AWS並不一致,目前遇到的問題如下:

1. 無法RunInstance 同時使用BlockDeviceMapping去產生Volume
2. 不管透過API還是Dashboard去產生的Instance 都無法把Root Device 掛載EBS
3. 同2 所以Instance 關閉後,Instance就會自動被刪除
4. Attach Volume 必須掛載在/dev/vdx下面 (跟Amazon不一樣)

5. 無法import Key (Bug #755819)
此外目前最大的問題是Openstack dashboard 很多設定的功能都沒有,必須透過下指令(如:nove-manage),但是下指令修改後,卻又跟dashboard不同步。

之前許多網路新聞都說已經有很多廠商直接使用openstack,如果不是他們有特別的客製化,那就是還有許多設定我不知道或是設定錯誤...Orz... (不過我懷疑~:P)

官網列出來的比較表如下:

EC2 API method
實際測試
AllocateAddress
(./)
無法測試
AssociateAddress
(./)
無法測試
AttachVolume
(./)
ok
AuthorizeSecurityGroupIngress
(./)

BundleInstance
{X}

CancelBundleTask
{X}

CancelSpotInstanceRequests
{X}

ConfirmProductInstance
{X}

CreateImage
{X}

CreateKeyPair
(./)
ok
CreatePlacementGroup
{X}

CreateSecurityGroup
(./)
ok
CreateSnapshot
(./)

CreateSpotDatafeedSubscription
{X}

CreateTags
{X}

CreateVolume
(./)
ok
DeleteKeyPair
(./)
無法測試
DeletePlacementGroup
{X}

DeleteSecurityGroup
(./)

DeleteSnapshot
(./)

DeleteSpotDatafeedSubscription
{X}

DeleteTags
{X}

DeleteVolume
(./)
ok
DeregisterImage
(./)
無法測試
DescribeAddresses
(./)
空的
DescribeAvailabilityZones
(./)

DescribeBundleTasks
{X}

DescribeImageAttribute
(./)

DescribeImages
(./)
ok
DescribeInstanceAttribute
{X}

DescribeInstances
(./)
ok
DescribeKeyPairs
(./)
ok
DescribePlacementGroups
{X}

DescribeRegions
(./)

DescribeReservedInstances
{X}

DescribeReservedInstancesOfferings
{X}

DescribeSecurityGroups
(./)

DescribeSnapshotAttribute
{X}

DescribeSnapshots
(./)

DescribeSpotDatafeedSubscription
{X}

DescribeSpotInstanceRequests
{X}

DescribeSpotPriceHistory
{X}

DescribeTags
{X}

DescribeVolumes
(./)
會有warn
DetachVolume
(./)
ok
DisassociateAddress
(./)
無法測試
GetConsoleOutput
(./)
空的
GetPasswordData
{X}

ImportKeyPair
(./)
UnknownError
ModifyImageAttribute
(./)

ModifyInstanceAttribute
{X}

ModifySnapshotAttribute
{X}

MonitorInstances
{X}

PurchaseReservedInstancesOffering
{X}

RebootInstances
(./)
ok
RegisterImage
(./)

ReleaseAddress
(./)
無法測試
RequestSpotInstances
{X}

ResetImageAttribute
{X}

ResetInstanceAttribute
{X}

ResetSnapshotAttribute
{X}

RevokeSecurityGroupIngress
(./)

RunInstances
(./)
部分ok
StartInstances
(./)
ok
StopInstances
(./)
等同Terminate
TerminateInstances
(./)
ok
UnmonitorInstances
{X}



張貼留言