14 Oracle ComputeのREST API

この章では、様々なREST APIについて説明します。内容は次のとおりです。

REST APIツールの使用

REST APIツールを使用するには、次のステップに従います。

  1. RESTツール(ChromeのPostmanプラグインなど)を使用して、Oracle Compute Webサービスにアクセスします。Oracle Compute Webサービスのエントリは https://hostname:port>/em/websvcs/restful/extws/virtualization/infrastructureです。APIを呼び出す前に、信頼できるEnterprise Manager証明書を使用する必要があります。

  2. 認可ヘッダーを設定し、 Basic認証を使用して、Enterprise Managerのユーザー名とパスワードを入力し、 ヘッダーのリフレッシュをクリックします。

  3. リクエストを実行するには、 Accept または Content-Type ヘッダーの値を application/json に設定します。

次の表では、OPCMオブジェクトに使用できるREST HTTPメソッドについて説明します。

表14-1 Rest HTTPメソッド

メソッド 説明

POST

リクエスト本文のJSON形式のデータを使用してオブジェクトを作成します。

GET

リクエストURIで指定されたオブジェクトに関する情報を取得します。

PUT

リクエスト本文のJSON形式のデータを使用して属性を更新します。

DELETE

リクエストURIで指定されたオブジェクトを削除します。

RESTリソースの概要

この項では、RESTリソースの概要について説明します。

表14-2 ターゲット・タイプ別のRESTリソース

ターゲット・タイプ URL

Oracle Computeサイト

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites

クラスタ

/em/websvcs/restful/extws/virtualization/infrastructure/v1/clusters

仮想化プラットフォーム

/em/websvcs/restful/extws/virtualization/infrastructure/v1/virtualplatforms

仮想サーバー

/em/websvcs/restful/extws/virtualization/infrastructure/v1/virtualservers

物理サーバー

/em/websvcs/restful/extws/virtualization/infrastructure/v1/physicalservers

オーケストレーション

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/services

表14-3 サイトのネットワーク・リソース

ネットワーク・リソース URL

サービス・ネットワーク

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/servicenetworks

vEthernet

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/vethernets

サブネット

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/vnets

IP予約

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/vnetreservations

サブネット・アクセス

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/vnetaccess

表14-4 サイトの記憶域リソース

記憶域リソース URL

記憶域プール

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/storagepools

記憶域ボリューム

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/storagevolumes

表14-5 サイトのテナントおよびイメージ管理リソース

リソース URL サポートされる操作 コメント

テナント

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/tenants

GET、POST、PUT

該当なし

ユーザー

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/users

GET、POST、PUT、DELETE

該当なし

Quota

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/quotas

GET、POST、PUT、DELETE

該当なし

イメージ・テンプレート

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/templates

GET、DELETE

該当なし

イメージ・テンプレート

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<SITE_ID>/templates/swlib

POST

ソフトウェア・ライブラリ・コンポーネントのURNを使用してソフトウェア・ライブラリ経由でテンプレートを追加するAPI。

ソフトウェア・ライブラリ・コンポーネント

/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/swlibcomponents

GET

アップロードされたソフトウェア・ライブラリ・コンポーネントのコンポーネントURNを取得します。

オーケストレーションで必要なサービス・リクエスト、サービス提供およびサービス・インスタンスの作成および表示に使用するクラウド・フレームワーク・リソース。

表14-6 クラウド・フレームワーク・リソース

CFWリソース URL サポートされる操作 コメント

サービス・タイプ

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servicetypes/

GET

オーケストレーションには不要ですが、サービス・タイプの取得には必要です。ORACLE_NIMBULA_ORCHESTRATION_SERVICEを探してください。

サービス

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/services/

GET、POST

POSTはサービスの作成に使用します(この場合はオーケストレーション)。GETはGUIDのようなPOSTリクエストに要求されたサービス情報の取得に使用します。

サービス・メタデータ

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/services/{serviceguid}/metadata

GET

オーケストレーション・ジョブ・パラメータの取得にはこれを呼び出す必要があり、パラメータを「サービスの作成」を呼び出すリクエストJSON(サービスのPOST)の構築に使用します。

サービス・インスタンス

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/

GET

ログイン・ユーザーのすべてのインスタンスを取得し、また、インスタンスGUIDの取得に使用されます。

サービス・インスタンス

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/{instanceguid}

GET、PUT

GETはインスタンスの詳細を取得します。PUTはサービス・インスタンスでアクションを実行するために使用されます(アクションIDが必要)。

サービス・アクション

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/{instanceguid}/actions/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/{instanceguid}/actions/{actionid}

GET

GETはサービス・インスタンスのアクションIDを持つすべてのアクションを返します。GETはサービス・インスタンスのアクションの呼出しに必要なアクションの入力を返します。

サービス・リクエスト

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servicerequests

GET

サービス・リクエストを取得します。

サービス・リクエスト

/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servicerequests/{requestid}

GET、PUT、DELETE

GETはサービス・リクエストの詳細を取得します。PUTはリクエストを再スケジュールします。DELETEはリクエストを削除します。

サポートされているユースケース

オーケストレーションのユースケース

オーケストレーションのユース・ケースは次のとおりです。

オーケストレーションの作成

オーケストレーションを作成するには、次のステップに従ってCFWリソースを使用して一連の呼出しを作成する必要があります。

  1. サービスGUIDをGETで取得するためのサービスを呼び出します。

    URL: CFW表を参照し、 https://Hostname:port を接頭辞として付けます。

    https://<hostname:port>/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/services/

    入力: なし

    出力:

    {"name":"Services","type":"Service","totalResults":2,"cfwItems":[{"id":"1","nam
    e":"ORACLE_NIMBULA_ORCHESTRATION_
    TEMPLATE","displayName":"Orchestration","guid":"0E1D6A8E12B70BB5E05303B7F00AE6C
    0","serviceType":"ORACLE_NIMBULA_ORCHESTRATION
    _SERVICE","serviceFamily":"NIMBULA_INFRASTRUCTURE","description":"Create a set
    of Oracle VM instances with customized configuration for multi-tier
    applications","meta":"https://<hostname:port>/em/websvcs/restful/
    extws/cloudservices/ssa/cfw/v2/services/0E1D6A8E12B70BB5E05303B7F00AE6C0/metada
    ta","canonicalLink":{"href":"https://<hostname:port>/em/websvcs/restful/extws/
    cloudservices/ssa/cfw/v2/services/0E1D6A8E12B70BB5E05303B7F00AE6C0"}},{"id":"2
    ","name":"ORACLE_NIMBULA_SIMPLE_ORCHESTRATION_TEMPLATE","displayName":"Simple
    Orchestration","guid":"0E1D6A8E12BA0BB5E05303B7F00AE6C0","serviceType":"ORACLE
    _NIMBULA_ORCHESTRATION_SERVICE","serviceFamily":"NIMBULA
    _INFRASTRUCTURE","description":"Create one or more Oracle VM instances with
    default configuration and minimum
    inputs","meta":"https://<hostname:port>/em/websvcs/restful/extws/cloudservices
    /ssa/cfw/v2/services/0E1D6A8E12BA0BB5E05303B7F00AE6C0/metadata","canonicalLink
    ":{"href":"https://<hostname:port>/em/websvcs/restful/extws/cloudservices/ssa/
    cfw/v2/services/0E1D6A8E12BA0BB5E05303B7F00AE6C0"}}],"canonicalLink":{"href":"
    https://<hostname:port>/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serv
    ices"},"selfLink":{"href":"https://<hostname:port>/em/websvcs/restful/extws/cl
    oudservices/ssa/cfw/v2/services"}}
  2. 前述の出力されたメタ・リンクを使用し、サービスのメタデータを取得して入力を構成します。

    URL: ステップ1で出力されたGUIDを使用して、サービス・メタデータを指定します。

    入力: なし

    出力:

    {"configurations":[{"name":"requestId","type":"STRING","description":"Cloud
    Framework Request ID","required":false,"secret":false},{"name":"orch_plan
    _swlib_urn","type":"STRING","description":"Orchestration Plan Software Library
    Component URN","required":false,"secret":false},{"name":"orch
    _plan","type":"LARGEDATA","description":"Orchestration
    Plan","required":false,"secret":false},{"name":"site
    _name","type":"STRING","description":"Oracle Nimbula
    Site","required":true,"secret":true}],"canonicalLink":{"href":"<hostname:port>
    /em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/services/0E1D6A8E12B70BB5E0
    5303B7F00AE6C0/metadata"},"selfLink":{"href":"https://<hostname:port>/em/websv
    cs/restful/extws/cloudservices/ssa/cfw/v2/services/0E1D6A8E12B70BB5E05303B7F00
    AE6C0/metadata"},"instanceName":"<user-input>"}
  3. ステップ2のレスポンス・パラメータを使用して入力を構築することにより、オーケストレーション・サービス・インスタンスの作成を呼び出します。

    URL: サービスのURLをPOSTで使用します。

    入力: オーケストレーション・プラン(orch_plan)を入力として使用し、(イメージ・リスト名、形状名、ネットワーク、記憶域などの)サイトに対応する値を使用してXMLを構築します。すべてのObjectPlanに対して同じ手順を繰り返し、適切なsite_nameの値を指定します。

    XML

    {"offeringId": "0E1D6A8E12BA0BB5E05303B7F00AE6C0",
      "name": "/cloud/public/OrchtestUi","instanceName": "/cloud/public/OrchtestUi",
      "configurations":[{"name":"orch_plan","value":"<?xml version=&quot;1.0&quot; encoding=&quot;windows-1252&quot; standalone=&quot;yes&quot;?><ns2:ConfigurationData xmlns:ns2=&quot;http://www.oracle.com/sysman/vi/VIDeploymentPlan&quot; version=&quot;0.0.2&quot;><Type>NimbulaImage</Type><PassThroughMode>false</PassThroughMode><OrchestrationDeployment namePrefix=&quot;/cloud/public/OrchtestUi&quot;><InstallEMAgent>false</InstallEMAgent><ObjectPlanDependencyList/><ObjectPlanList><ObjectPlan label=&quot;Lp1&quot;><Type>launchplan</Type><HAPolicy value=&quot;none&quot;/><ObjectMemberList><ObjectMember xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:type=&quot;ns2:LaunchPlanMemberType&quot;><NumberOfInstances>1</NumberOfInstances><ImageList>/oracle/public/linux5_12.2.1.0.0_64</ImageList><ImageListEntry>1</ImageListEntry><DeploymentTarget><Name>slce03</Name><Type>oracle_nimbula_site</Type></DeploymentTarget><DefaultConfiguration><Label>Lp1</Label><ImageList >/oracle/public/linux5_12.2.1.0.0_64</ImageList><Shape><Name>mini</Name><Id>small</Id></Shape><Account/><Quota><Name>quota</Name></Quota><Priority>priority</Priority><Tags></Tags><PlacementRequirements></PlacementRequirements><HaEnabled>false</HaEnabled><Virtio>false</Virtio><Nics><NetworkInterface name=&quot;net0&quot; fromDefinition=&quot;false&quot;><VethernetId>/elcontrol/public/vnet-IPoIB-private</VethernetId></NetworkInterface></Nics><Disks/><Attributes/></DefaultConfiguration><Instances><VirtualMachine name=&quot;vm1&quot;customConfigured=&quot;false&quot;><InstallEMAgent>true</InstallEMAgent><CustomConfiguration><Label>vm1</Label><ImageList>/oracle/public/linux5_12.2.1.0.0_64</ImageList><Shape><Name>mini</Name><Id>mini</Id></Shape><Account/><Quota><Name>quota</Name></Quota><Priority>priority</Priority><Tags></Tags><PlacementRequirements></PlacementRequirements><HaEnabled>false</HaEnabled><Virtio>false</Virtio><Nics><NetworkInterface name=&quot;net0&quot; fromDefinition=&quot;false&quot;><Vnet>/elcontrol/public/vnet-IPoIB-private</Vnet></NetworkInterface></Nics><Disks ><diskname=&quot;disk1&quot;fromDefinition=&quot;false&quot;></disk></Disks><Attributes/></CustomConfiguration></VirtualMachine></Instances><AffinityRelationshipList/></ObjectMember></ObjectMemberList></ObjectPlan></ObjectPlanList></OrchestrationDeployment></ns2:ConfigurationData>"},{"name":"site_name","value":"nimbsite1"}]}

    出力: リクエストが成功した場合、サービスID。成功しなかった場合、サービス・リクエストURLを使用してサービス・リクエストのステータスを確認します。

オーケストレーション・アクションの実行

オーケストレーション・アクションを実行するステップは、次のとおりです。

  1. インスタンスIDを取得します。

    URL: サービス・インスタンスのURLでGETを使用し、?expanded=true -を追加します。

    /em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances?expanded=true

    入力: なし

    出力:

    {"name" : "Service Instances","type" : "Service Instance","totalResults" :
    1,"canonicalLink" : {"href"
    :"https:/hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servi
    ceinstances"},"cfwItems" : [{"name" : "del_2","guid" :
    "51087FBC61473C5477167DAAB6BD1871","serviceFamily" :"NIMBULA
    _INFRASTRUCTURE","serviceType" : "ORACLE_NIMBULA_ORCHESTRATION
    _SERVICE","status" : "STATUS_UP","canonicalLink" : {"href"
    :"https:/hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servi
    ceinstances/51087FBC61473C5477167DAAB6BD1871"}}]}
  2. 実行するアクションのIDを取得します。

    URL: GETを使用してサービス・アクションを起動します。

    https:/hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/51087FBC61473C5477167DAAB6BD1871/actions

    入力: なし

    出力:

    {"name":"Actions","type":"Action","totalResults":8,"cfwItems":[{"id":"2","name
    ":"DELETE","displayName":"Delete Orchestration","description":"Delete Nimbula
    Orchestration"},{"id":"4","name":"START","displayName":"Start
    Orchestration","description":"Start Oracle Compute
    Orchestration"},{"id":"5","name":"STOP","displayName":"Stop
    Orchestration","description":"Stop Oracle Compute
    Orchestration"},{"id":"6","name":"SHUTDOWNORCHESTRATION","displayName":"Shutdo
    wn Orchestration","description":"Shutdown Oracle Nimbula
    Orchestration"},{"id":"7","name":"RESTARTORCHESTRATION","displayName":"Restart
    Orchestration","description":"Restart Oracle Nimbula
    Orchestration"},{"id":"8","name":"DESTROYORCHESTRATION","displayName":"Destroy
    Orchestration","description":"Destroy Oracle Nimbula
    Orchestration"},{"id":"9","name":"UPDATEORCHESTRATION","displayName":"Update
    Orchestration","description":"Update Oracle Nimbula
    Orchestration"},{"id":"10","name":"SNAPSHOT","displayName":"Snapshot VM
    Instance","description":"Snapshot VM
    Instance"}],"canonicalLink":{"href":"/em/websvcs/restful/extws/cloudservices/s
    sa/cfw/v2/serviceinstances/51087FBC61473C5477167DAAB6BD1871/actions"},"selfLin
    k":{"href":"/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstance
    s/51087FBC61473C5477167DAAB6BD1871/actions"}}
  3. アクションの入力を取得します。

    URL: ステップ2で出力されたアクションIDを使用して、サービス・アクションURLにGETを呼び出します。

    /em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/E8E4395513C2B72F01D91E6DB46D1701/actions/2

    入力: なし

    出力:

    {"id":"2","name":"DELETE","displayName":"Delete Orchestration","description":"Delete Oracle Compute Orchestration","actionInputs":[{"name":"requestId","type":"STRING","description":"Cloud Framework Request ID","displayName":"requestId","required":false,"secret":false},{"name":"instance_guids","type":"VECTOR","description":"Orchestration Target GUIDs","displayName":"instance_guids","required":false,"secret":false},{"name":"instance_names","type":"VECTOR","description":"Orchestration Target Names","displayName":"instance_names","required":true,"secret":false}],"canonicalLink":{"href":"http://hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/E8E4395513C2B72F01D91E6DB46D1701/actions/2"},"selfLink":{"href":"http://hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/E8E4395513C2B72F01D91E6DB46D1701/actions/2"}}
  4. アクションを起動します。前述の出力によるアクションに対する入力を用意します。前述の例では、このアクションを実行するには4つの入力パラメータが必要なため、リクエストに次の4つの要素が含まれる必要があります。{"actionId":2,"configurations":

    [{"name":"requestId", "value":"7"},{"name":"site_name","value":"site1"},{"name":"instance_names","value":["/hr/public/simple1"]},{"name":"instance_guids","value":["AC7F041E430A8B913D13B1F47E652580"]}]

    URL: PUTを使用してアクションを起動します。

    /em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/serviceinstances/E8E4395513C2B72F01D91E6DB46D1701

    入力:

    {"actionId":2,"configurations":[{"name":"requestId", "value":"7"},{"name":"site_name","value":"site1"},{"name":"instance_names","value":["/hr/public/simple1"]}]}

    出力:

    {"requests": [{"id": "4","actionName": "DELETE","canonicalLink":

    {"href":"https://hostname:port/em/websvcs/restful/extws/cloudservices/ssa/cfw/v2/servicerequests/4"}}]}

    サービス・リクエストのGET URLを使用して、サービス・リクエストのステータスを確認します。

サービス・ネットワークのユース・ケース

サービス・ネットワークのユース・ケースは次のとおりです。

サービス・ネットワークの作成

説明: IPoIBサービス・ネットワークのJSONデータをPOSTします。

メソッド: POST

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/servicenetworks

入力:

{
"name": "/cloud/public/svcnet",
"type": "IPoIB",
"description": "svcnet",
"foreign_partition": false,
"num_provider_nodes": 1
}

出力/レスポンス:

{
"name": "/cloud/public/svcnet",
"id": "/cloud/public/svcnet",
"type": "ipoib",
"description": "svcnet",
"pkey": "0x1027",
"pkeyFromPool": false,
"infranet": false,
"numProviderNodes": 1,
"foreignPartition": false,
"externalReferece": "http://10.128.25.146/svcnet/cloud/public/svcnet",
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/83E2FB6A3B5688FFA9E76AB78CF7762C/servicenetworks/cloud/public/svcnet",
"rel": "canonical"
}
]
}
サービス・ネットワークの更新

説明: サービス・ネットワークのURLにJSONデータをPUTします。JSONデータでの名前は、PUT URLでの名前と一致している必要があります。

メソッド: PUT

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/servicenetworks/cloud/public/svcnet

入力:

{
"name": "/cloud/public/svcnet",
"id": "/cloud/public/svcnet",
"type": "eoib",
"description": "svcnet - updated",
"pkey": "0x1028"
}

出力/レスポンス:

{
"name": "/cloud/public/svcnet",
"id": "/cloud/public/svcnet",
"type": "eoib",
"pkey": "0x1028",
"pkeyFromPool": false,
"infranet": false,
"foreignPartition": false,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/83E2FB6A3B5688FFA9E76AB78CF7762C/servicenetworks/cloud/public/svcnet/cloud/public/svcnet",
"rel": "canonical"
}
]
}
サービス・ネットワークの削除

説明: サービス・ネットワークのURLにDELETEリクエストを送信します。

メソッド: DELETE

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/servicenetworks/cloud/public/svcnet

入力: なし

出力/レスポンス: なし

返されるステータス: ステータス 204 No Content

vEthernetのユースケース

vEthernetのユース・ケースは次のとおりです。

EoIB vEthernetの作成

説明: vEthernetのJSONデータをPOSTします。

メソッド: POST

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/vethernets

入力:

{
"name": "/cloud/public/eoibveth",
"description": "test",
"svcnet": "/cloud/public/svcnet",
"type": "eoib",
"id": 101,
"switchports": {
"denp07sw-ib03": [
"0A-ETH-1"
],
"denp07sw-ib02": [
"0A-ETH-1"
]
}
}

出力/レスポンス:

{
"name": "/cloud/public/eoibveth",
"id": "/cloud/public/eoibveth",
"type": "eoib",
"description": "test",
"account": "/cloud/default",
"svcnet": "/cloud/public/svcnet",
"switchports": [
"\"denp07sw-ib03\" : [\"0A-ETH-1\"]",
"\"denp07sw-ib02\" : [\"0A-ETH-1\"]"
],
"infranet": false,
"externalReferece": "db://bnet/vethernet/cloud/public/eoibveth",
"vlanId": 101,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vethernets/cloud/public/eoibveth",
"rel": "canonical"
}
]
}
EoIB vEthernetの更新

説明: vEthernetのURLにJSONデータをPUTします。description、svcnet、idおよびswitchportsは編集可能です。JSONデータでの名前は、PUT URLでの名前と一致している必要があります。

ノート:

POSTリクエストのJSON形式との違いがわかります。この例では、POSTリクエストのid属性ではなく、vlanId属性が使用されています。

メソッド: PUT

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/vethernets/cloud/public/eoibveth

入力:

{
"name": "/cloud/public/eoibveth",
"description": "test3",
"svcnet": "/cloud/public/svcnet",
"type": "eoib",
"vlanId": 103,
"switchports": [
"\"denp07sw-ib02\" : [\"0A-ETH-1\"]",
"\"denp07sw-ib03\" : [\"0A-ETH-1\"]"
]
} 

出力/レスポンス:

{
"name": "/cloud/public/eoibveth",
"id": "/cloud/public/eoibveth",
"type": "eoib",
"description": "test3",
"account": "/cloud/default",
"svcnet": "/cloud/public/svcnet",
"switchports": [
"\"denp07sw-ib03\" : [\"0A-ETH-1\"]",
"\"denp07sw-ib02\" : [\"0A-ETH-1\"]"
],
"infranet": false,
"externalReferece": "db://bnet/vethernet/cloud/public/eoibveth",
"vlanId": 103,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vethernets/cloud/public/eoibveth/cloud/public/eoibveth",
"rel": "canonical"
}
]
}
EoIB vEthernetの削除

説明: vEthernetのURLにDELETEリクエストを送信します。

メソッド: DELETE

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/vethernets/cloud/public/eoibveth

出力/レスポンス: ステータス 204 No Content

サブネットのユースケース

サブネットのユース・ケースは次のとおりです。

EoIBサブネットの作成

説明: EoIBサブネットのJSONデータをPOSTします。

メソッド: POST

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets

出力/レスポンス:

{
"name": "/cloud/public/eoibsubnet",
"id": "/cloud/public/eoibsubnet",
"description": "/cloud/public/eoibsubnet",
"gateway": "10.242.80.1",
"account": "/cloud/default",
"infranet": false,
"vethernet": "/cloud/public/eoibveth",
"cidr": "10.242.80.0/21",
"ipranges": [
"10.242.84.132",
"10.242.84.133"
],
"ethIndex": -1,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/eoibsubnet",
"rel": "canonical"
}
]
IPoIBサブネットの作成

説明: IPoIBサブネットのJSONデータをPOSTします。

グローバルIPモードでのIPoIBサブネットの作成

URL:

https:/<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets

入力:

{
 
"name": "/cloud/public/ipoibsubnet_ip",
"vethernet": "/cloud/public/ipoibveth", //choose an IPoIB vEthernet
"description": "/cloud/public/ipoibsubnet global ip mode",
"global_ip_num": 10
}

出力/レスポンス:

{
"name": "/cloud/public/ipoibsubnet_ip",
"id": "/cloud/public/ipoibsubnet_ip",
"description": "/cloud/public/ipoibsubnet global ip mode",
"account": "/cloud/default",
"infranet": false,
"vethernet": "/cloud/public/ipoibveth",
"cidr": "192.168.96.112/28",
"ipranges": [
"192.168.96.113-192.168.96.126"
],
"global_ip_num": 14,
"ethIndex": -1,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/ipoibsubnet_ip",
"rel": "canonical"
}
]
}

CIDRモードでのIPoIBサブネットの作成

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets

入力:

{
 
"name": "/cloud/public/ipoibsubnet_cidr",
"vethernet": "/cloud/public/ipoibveth", //choose an IPoIB vEthernet
"description": "/cloud/public/ipoibsubnet CIDR mode",
"cidr": "192.168.220.1/24",
"ipranges": [
"192.168.220.2",
"192.168.220.20"
]
}

出力/レスポンス:

{
"name": "/cloud/public/ipoibsubnet_cidr",
"id": "/cloud/public/ipoibsubnet_cidr",
"description": "/cloud/public/ipoibsubnet CIDR mode",
"account": "/cloud/default",
"infranet": false,
"vethernet": "/cloud/public/ipoibveth",
"cidr": "192.168.220.1/24",
"ipranges": [
"192.168.220.2",
"192.168.220.20"
],
"ethIndex": -1,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/ipoibsubnet_cidr",
"rel": "canonical"
}
]
}
サブネットの更新

説明: サブネットのURLにJSONデータをPUTします。description、global_ip_num、cidr、gateway、iprangesおよびvethernetフィールドは編集可能です。JSONデータでの名前は、PUT URLでの名前と一致している必要があります。

メソッド: PUT

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/ipoibsubnet_ip

入力:

{
"name": "/cloud/public/ipoibsubnet_ip",
"vethernet": "/cloud/public/ipoibveth", //choose an IPoIB vEthernet
"description": "/cloud/public/ipoibsubnet global ip mode - Updated",
"global_ip_num": 15
}

出力/レスポンス:

{
"name": "/cloud/public/ipoibsubnet_ip",
"id": "/cloud/public/ipoibsubnet_ip",
"description": "/cloud/public/ipoibsubnet global ip mode - Updated",
"account": "/cloud/default",
"infranet": false,
"vethernet": "/cloud/public/ipoibveth",
"cidr": "192.168.96.128/27",
"ipranges": [
"192.168.96.129-192.168.96.158"
],
"global_ip_num": 30,
"ethIndex": -1,
"links": [
{
"href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/ipoibsubnet_ip/cloud/public/ipoibsubnet_ip",
"rel": "canonical"
}
]
}
サブネットの削除

説明: サブネットのURLにDELETEリクエストを送信します。

メソッド: DELETE

URL:

https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnets/cloud/public/ipoibsubnet_ip

出力/レスポンス: ステータス 204 No Content

IP予約のユース・ケース

  1. IP予約の作成

    説明: IP予約のJSONデータをPOSTします。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnetreservations

    入力:

    {
     
    "name": "/<tenant>/public/192_168_220_2",
    "ip": "192.168.220.2",
    "vnet": "/cloud/public/ipoibsubnet_cidr" //choose a subnet
     
    }

    出力/レスポンス:

    {
    "name": "/satheesh/public/192_168_220_2",
    "id": "/satheesh/public/192_168_220_2",
    "used": false,
    "quota": "/satheesh",
    "ip": "192.168.220.2",
    "vnet": "/cloud/public/ipoibsubnet_cidr",
    "externalReferece": "http://10.88.235.144/vnetreservation/satheesh/public/192_168_220_2",
    "links": [
    {
    "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnetreservations/satheesh/public/192_168_220_2",
    "rel": "canonical"
    }
    ]
    }
  2. IP予約の削除

    説明: IP予約のURLにDELETEリクエストを送信します。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/vnetaccess/<tenant>/public/vnetaccess_cidr

    出力/レスポンス: ステータス 204 No Content

サブネット・アクセスのユース・ケース

  1. サブネット・アクセスの作成

    説明: サブネット・アクセスのJSONデータをPOSTします。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnetaccess

    入力:

    {
     
    "name": "/<tenant>/public/vnetaccess_cidr",
    "vnet": "/cloud/public/ipoibsubnet_cidr", //choose a subnet
    "provider": true
    }

    出力/レスポンス:

    {
    "name": "<tenant>",
    "id": "<tenant>",
    "provider": true,
    "vnet": "/cloud/public/ipoibsubnet_cidr",
    "externalReferece": "http://10.88.235.144/vnetaccess/satheesh/public/vnetaccess_cidr",
    "links": [
    {
    "href": "<tenant>",
    "rel": "canonical"
    }
    ]
    }
  2. サブネット・アクセスの削除

    説明: サブネット・アクセスのURLにDELETEリクエストを送信します。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/vnetreservations/<tenant>/public/192_168_220_2

    出力/レスポンス: ステータス 204 No Content

記憶域ボリュームのユース・ケース

  1. 記憶域ボリュームの作成

    説明: 記憶域ボリュームのJSONデータをPOSTします。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/storagevolumes

    入力:

    {
     
    "name": "/<tenant>/public/storage/volume1",
    "description" :"test volume",
    "size": "1G"
     
    }

    出力/レスポンス:

    {
    "name": "/<tenant>/public/storage/volume1",
    "properties": [
    "/oracle/public/storage/default"
    ],
    "id": "/<tenant>/public/storage/volume1",
    "size": 1073741824,
    "description": "test volume",
    "status": "Initializing",
    "imageListEntryVersion": -1,
    "externalReferece": "http://10.88.235.144/storage/volume/<tenant>/public/storage/volume1",
    "bootable": false,
    "links": [
    {
    "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/storagevolumes/<tenant>/public/storage/volume1",
    "rel": "canonical"
    }
    ]
  2. 記憶域ボリュームの削除

    説明: 記憶域ボリュームのURLにDELETEリクエストを送信します。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/<site_id>/storagevolumes/<tenant>/public/storage/volume1

    出力/レスポンス: ステータス 204 No Content

テナントのユースケース

  1. テナントのリスト表示

    説明: 特定のサイトのすべてのテナントをリストするGETリクエストです。出力は2通りの形式で表示されます。

    • application/json: すべてのテナントとその属性をJSON形式でリストします。

    • application/discovery+json: すべてのテナントの名前をリストします。これは、EM RESTサービスをOracle Computeと同一の状態に保つためのものです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/tenants

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonまたはapplication/discovery+jsonに設定します。

    出力/レスポンス: Oracle ComputeサイトのすべてのテナントがJSON形式で返されます。

    {
        "items": [
            {
                "name": "cloud",
                "id": "cloud",
                "description": "Cloud administration tenant",
                "externalReferece": "https://10.242.84.131/tenant/cloud",
                "links": [
                    {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/cloud", 
                        "rel": "canonical"
                    }
                ]
            },
            {
                "name": "lrgemcloud_nimbula_14275824",
                "id": "lrgemcloud_nimbula_14275824",
                "description": "Edit a tenant",
                "email": "user_management@example.com",
                "externalReferece": "https://10.242.84.131/tenant/lrgemcloud_
                 nimbula_14275824",
                "links": [
                    {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/lrgemcloud_nimbula_14275824",
                        "rel": "canonical"
                    }
                ]
            },
            {
                "name": "lrgemcloud_nimbula_14277240",
                "id": "lrgemcloud_nimbula_14277240",
                "description": "Edit a tenant",
                "email": "user_management@example.com",
                "externalReferece": "https://10.242.84.131/tenant/lrgemcloud
                 _nimbula_14277240",
                "links": [
                    {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/lrgemcloud_nimbula_14277240",
                        "rel": "canonical"
                    }
                ]
     
            }
     
    }
  2. テナントの取得

    説明: URLにリストされた特定のテナントを返すGETリクエストです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/tenants/{tenantName}

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • tenantName: 返すテナントの名前

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonに設定します。

    出力/レスポンス: リクエストされたテナントはJSON形式で返されます。

    {
        "name": "cloud",
        "id": "cloud",
        "description": "Cloud administration tenant",
        "externalReferece": "https://10.242.84.131/tenant/cloud",
        "links": [
            {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/cloud/",
                "rel": "canonical"
            }
        ]
    }
  3. テナントの作成

    説明: JSON形式で指定された入力でテナントを作成するPOSTリクエストです。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/tenants/

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • tenantName: 返すテナントの名前

    入力: EM RESTサービスとしてのテナント・オブジェクトのJSON表現。リクエストのコンテンツ・タイプおよび受入れヘッダーをapplication/jsonに設定します。

    {
        "name": "TestTenant",
        "description": "Cloud administration tenant",
        "password": "EXAlogic_123",
        "email": "test@oracle.com"
    }

    出力/レスポンス: 作成されたテナントはJSON形式で返されます。

    {
        "name": "TestTenant",
        "id": "TestTenant",
        "description": "Cloud administration tenant",
        "externalReferece": "https://10.242.84.131/tenant/cloud",
        "links": [
            {
                "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/TestTenant/",
                "rel": "canonical"
            }
        ]
    }
  4. テナントの更新

    説明: JSON形式で指定された入力でテナントを更新するPUTリクエストです。

    メソッド: PUT

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/tenants/tenantName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • tenantName: 更新するテナントの名前

    入力: EM RESTサービスとしてのテナント・オブジェクトのJSON表現。リクエストのコンテンツ・タイプおよび受入れヘッダーをapplication/jsonに設定します。

    {
        "name": "TestTenant",
        "description": "Cloud administration tenant",
        "password": "EXAlogic_123",
    }

    出力: 更新されたテナントはJSON形式で返されます。

    { "name": "TestTenant", "id": "TestTenant", "description": "Cloud administration tenant updated", "externalReferece": "https://10.242.84.131/tenant/cloud",\\\\ "links": [ { "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/tenants/TestTenant/", "rel": "canonical" }] }

ユーザーのユースケース

  1. ユーザーのリスト表示

    説明: 特定のサイトのすべてのユーザーをリストするGETリクエストです。出力は2通りの形式で表示されます。

    • application/json: すべてのユーザーとその属性をJSON形式でリストします。

    • application/discovery+json: すべてのユーザーの名前をリストします。これは、EM RESTサービスをOracle Computeと同一の状態に保つためのものです。

    メソッド: GET

    URL:

    https://<hostnameport>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/users

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonまたはapplication/discovery+jsonに設定します。

    出力/レスポンス: Oracle ComputeサイトのすべてのユーザーがJSON形式で返されます。

    {
        "items": [
            {
                "id": "/user1/administrator",
                "username": "/user1/administrator",
                "groups": [
                    "/user1/admin"
                ],
                "role": "/user1/admin",
                "email": "user1@oracle.com",
                "customer": "user1",
                "blackListed": false,
                "externalReferece": "https://10.242.84.131/user/user1/administrator",
                "fullname": "Administrator",
                "links": [
                    {
                        "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/usersnull",
                        "rel": "canonical"
                    }
                ]
            },
            {
                "id": "/lrgemcloud_nimbula_14276642/administrator",
                "username": "/lrgemcloud_nimbula_14276642/administrator",
                "groups": [
                    "/lrgemcloud_nimbula_14276642/admin"
                ],
                "role": "/lrgemcloud_nimbula_14276642/admin",
                "email": "user2@oracle.com",
                "customer": "lrgemcloud_nimbula_14276642",
                "blackListed": false,
                "externalReferece": "https://10.242.84.131/user/lrgemcloud_nimbula_14276642/administrator",
                "fullname": "Administrator",
                "links": [
                    {
                        "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/usersnull",
                        "rel": "canonical"
                    }
                ]
            }
     
    } 
  2. ユーザーの取得

    説明: URLにリストされた特定のユーザーを返すGETリクエストです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/users/{userName}

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualizaion/infrastructure/v1/sites/

    • userName: 返すユーザーの名前

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonに設定します。

    出力/レスポンス: リクエストされたユーザーはJSON形式で返されます。

    {
     
        "id": "/user2/administrator",
         "username": "/user2/administrator",
         "groups": [
             "/user2/admin"
         ],
         "role": "/user2/admin",
         "email": "userabc@oracle.com",
         "customer": "user2",
         "blackListed": false,
         "externalReferece": "https://10.242.84.131/user/alokak/administrator",\\
         "fullname": "Administrator core",
         "links": [
             {
                 "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/users/alokak/administrator",
                 "rel": "canonical"
             }
         ]
     
    }
  3. ユーザーの作成

    説明: JSON形式で指定された入力でユーザーを作成するPOSTリクエストです。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/users/

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • userName: 返すユーザーの名前

    入力: EM RESTサービスとしてのユーザー・オブジェクトのJSON表現。リクエストのコンテンツ・タイプおよび受入れヘッダーをapplication/jsonに設定します。

    {
         "username": "/user2/testuser",
         "customer": "user2",
         "blacklisted": false,
         "fullname": "Test User",
         "role":"/cloud/users",
         "password": "EXAlogic_123",
         "email": "tuser@oracle.com"
     }

    出力/レスポンス: 作成されたユーザーはJSON形式で返されます。

    {
         "id": "/user2/testuser",
         "username": "/user2/testuser",
         "groups": [
             "/user2/users"
         ],
         "role": "/user2/users",
         "email": "tuser@oracle.com",
         "customer": "user2",
         "blackListed": false,
         "externalReferece": "https://10.242.84.131/user/user2/testuser",\\
         "fullname": "Test User",
         "links": [
             {
                 "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/users/user2/testuser",
                 "rel": "canonical"
             }
         ]
     }
  4. ユーザーの更新

    説明: JSON形式で指定した入力でユーザーを更新するPUTリクエストです。

    メソッド: PUT

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/users/userName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • userName: 更新するユーザーの名前

    入力: EM RESTサービスとしてのテナント・オブジェクトのJSON表現。リクエストのコンテンツ・タイプおよび受入れヘッダーをapplication/jsonに設定します。

    {
         "username": "/user2/testuser",
         "customer": "user2",
         "blacklisted": false,
         "fullname": "Test User",
         "role":"/cloud/users",
         "password": "EXAlogic_123",
         "email": "tuser123@oracle.com"
     }

    出力/レスポンス: 更新されたテナントはJSON形式で返されます。

    {
         "id": "/user2/testuser",
         "username": "/user2/testuser",
         "groups": [
             "/user2/users"
         ],
         "role": "/user2/users",
         "email": "tuser123@oracle.com",
         "customer": "user2",
         "blackListed": false,
         "externalReferece": "https://10.242.84.131/user/user2/testuser",\\
         "fullname": "Test User",
         "links": [
             {
                 "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/users/user2/testuser",
                 "rel": "canonical"
             }
         ]
     }
  5. ユーザーの削除

    説明: URLでリクエストされた特定のユーザーを削除するDELETEリクエストです。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/users/userName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • userName: 更新するユーザーの名前

    入力: REST DELETEリクエストには入力は必要ありません。

    出力/レスポンス: REST DELETEリクエストには出力はありません。レスポンス・コード206 (No Content)が返されます。

割当て制限のユースケース

  1. 割当て制限のリスト表示

    説明: 特定のサイトに割り当てられた割当て制限をリストするGETリクエストです。出力は2通りの形式で表示されます。

    • application/json: すべての割当て制限とその属性をJSON形式でリストします。

    • application/discovery+json: すべての割当て制限の名前をリストします。これは、EM RESTサービスをOracle Computeと同一の状態に保つためのものです。

    メソッド: GET

    URL:

    https://<hostnameport>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/quotas

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonまたはapplication/discovery+jsonに設定します。

    出力/レスポンス: Oracle Computeサイトのすべての割当て制限がJSON形式で返されます。

    {
     
        "items": [
     
            {
                 "name": "/user3",
                 "id": "/user3",
                 "usage": {
                     "vnet": {
                         "vnetreservations": 0
                     },
                     "nat": {
                         "ipreservations": 0
                     },
                     "compute": {
                         "instances": 1,
                         "instance_restrictions": [
                             "{}"
                         ],
                         "ram": 2048,
                         "cpus": 1
                     },
                     "machineimage": {
                         "number": 0,
                         "megabytes": 0
                     },
                     "nds": {
                         "megabytes": 0
                     }
                 },
                 "description": "Edit a quota named quota1",
                 "allowance": {
                     "vnet": {
                         "vnetreservations": 10
                     },
                     "nat": {
                         "ipreservations": 10
                     },
                     "compute": {
                         "instances": 20,
                         "instance_restrictions": [
                             "{\"os_license\":\"200\"}"
                         ],
                         "ram": 20000,
                         "cpus": 10
                     },
                     "machineimage": {
                         "number": 12000,
                         "megabytes": 8048
                     },
                     "nds": {
                         "megabytes": 1160000
                     }
                 },
                 "externalReferece": "https://10.242.84.131/quota/user3",\\
                 "links": [
                     {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/quotas/user3",
                         "rel": "canonical"
                     }
                 ]
             },
             {
                 "name": "/lrgemcloud_nimbula_14279598",
                 "id": "/lrgemcloud_nimbula_14279598",
                 "usage": {
                     "vnet": {
                         "vnetreservations": 0
                     },
                     "nat": {
                         "ipreservations": 0
                     },
                     "compute": {
                         "instances": 0,
                         "instance_restrictions": [
                             "{}"
                         ],
                         "ram": 0,
                         "cpus": 0
                     },
                     "machineimage": {
                         "number": 0,
                         "megabytes": 0
                     },
                     "nds": {
                         "megabytes": 0
                     }
                 },
                 "description": "Default quota for \"lrgemcloud_nimbula
                                 _14279598\"",
                 "allowance": {
                     "vnet": {
                         "vnetreservations": null
                     },
                     "nat": {
                         "ipreservations": null
                     },
                     "compute": {
                         "instances": null,
                         "instance_restrictions": [
                             "{}"
                         ],
                         "ram": null,
                         "cpus": null
                     },
                     "machineimage": {
                         "number": null,
                         "megabytes": null
                     },
                     "nds": {
                         "megabytes": null
                     }
                 },
                 "externalReferece": "https://10.242.84.131/quota/lrgemcloud_nimbula_14279598",\\
                 "links": [
                     {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/quotas/lrgemcloud_nimbula_14279598",
                         "rel": "canonical"
                     }
                 ]
             }
     }
  2. 割当て制限の取得

    説明: URLにリストされた特定の割当て制限を返すGETリクエストです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/quotas/{quotaName}

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • quotaName: 返す割当て制限の名前

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonに設定します。

    出力/レスポンス: リクエストされた割当て制限はJSON形式で返されます。

    {
         "name": "/user3",
         "id": "/user3",
         "usage": {
             "vnet": {
                 "vnetreservations": 0
             },
             "nat": {
                 "ipreservations": 0
             },
             "compute": {
                 "instances": 1,
                 "instance_restrictions": [
                     "{}"
                 ],
                 "ram": 2048,
                 "cpus": 1
             },
             "machineimage": {
                 "number": 0,
                 "megabytes": 0
             },
             "nds": {
                 "megabytes": 0
             }
         },
         "description": "Edit a quota named quota1",
         "allowance": {
             "vnet": {
                 "vnetreservations": 10
             },
             "nat": {
                 "ipreservations": 10
             },
             "compute": {
                 "instances": 20,
                 "instance_restrictions": [
                     "{\"os_license\":\"200\"}"
                 ],
                 "ram": 20000,
                 "cpus": 10
             },
             "machineimage": {
                 "number": 12000,
                 "megabytes": 8048
             },
             "nds": {
                 "megabytes": 1160000
             }
         },
         "externalReferece": "https://10.242.84.131/quota/user3",\\
         "links": [
             {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/quotas/user3",
                 "rel": "canonical"
             }
         ]
     }
  3. 割当て制限の更新

    説明: JSON形式で指定した入力で割当て制限を更新するPUTリクエストです。

    メソッド: PUT

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/quotas/quotaName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • quotaName: 更新する割当て制限の名前

    入力: EM RESTサービスとしてのテナント・オブジェクトのJSON表現。リクエストのコンテンツ・タイプおよび受入れヘッダーをapplication/jsonに設定します。

    {
         "name": "/test",
         "description": "Test Quota updated",
         "allowance": {
             "vnet": {
                 "vnetreservations": 10
             },
             "nat": {
                 "ipreservations": 10
             },
             "compute": {
                 "instances": 20,
                 "instance_restrictions": [
                     "{"os_license":"200"}"
                 ],
                 "ram": 20000,
                 "cpus": 10
             },
             "machineimage": {
                 "number": 12000,
                 "megabytes": 8048
             },
             "nds": {
                 "megabytes": 1160000
             }
         }
     }

    出力/レスポンス: 更新された割当て制限はJSON形式で返されます。

    {
         "name": "/test",
         "id": "/test",
         "usage": {
             "vnet": {
                 "vnetreservations": 0
             },
             "nat": {
                 "ipreservations": 0
             },
             "compute": {
                 "instances": 1,
                 "instance_restrictions": [
                     "{}"
                 ],
                 "ram": 2048,
                 "cpus": 1
             },
             "machineimage": {
                 "number": 0,
                 "megabytes": 0
             },
             "nds": {
                 "megabytes": 0
             }
         },
         "description": "Test Quota Updated",
         "allowance": {
             "vnet": {
                 "vnetreservations": 10
             },
             "nat": {
                 "ipreservations": 10
             },
             "compute": {
                 "instances": 20,
                 "instance_restrictions": [
                     "{\"os_license\":\"200\"}"
                 ],
                 "ram": 20000,
                 "cpus": 10
             },
             "machineimage": {
                 "number": 12000,
                 "megabytes": 8048
             },
             "nds": {
                 "megabytes": 1160000
             }
         },
         "externalReferece": "https://10.242.84.131/quota/test",\\
         "links": [
             {
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/2C9C90E1A5A5084C2BBA23BE5DC04D43/quotas/test",
                 "rel": "canonical"
             }
         ]
     }
  4. 割当て制限の削除

    説明: URLでリクエストされた特定の割当て制限を削除するDELETEリクエストです。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/quotas/quotaName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • quotaName: 削除する割当て制限の名前

    入力: REST DELETEリクエストには入力は必要ありません。

    出力/レスポンス: REST DELETEリクエストには出力はありません。レスポンス・コード206 (No Content)が返されます。

テンプレートのユースケース

  1. テンプレートのリスト表示

    Description: 特定のサイトのすべてのテンプレートをリストするGETリクエストです。出力は2通りの形式で表示されます。

    • application/json: すべてのテンプレートとその属性をJSON形式でリストします。

      application/discovery+json: すべてのテンプレートの名前をリストします。これは、EM RESTサービスをOracle Computeと同一の状態に保つためのものです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/templates/

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonまたはapplication/discovery+jsonに設定します。

    出力/レスポンス: Oracle Computeサイトのすべての割当て制限がJSON形式で返されます。

    {
        "totalResults": 5,
        "count": 5,
        "links": [
            {
                "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/93B97C5E7E352676A3284D80F23714BF/templates",
                "rel": "canonical"
            }
        ],
        "items": [
            {
                "id": "/oracle/public/oel_public",
                "name": "/oracle/public/oel_public",
                "links": [
                    {
                        "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/93B97C5E7E352676A3284D80F23714BF/templates/oracle/public/oel_public",
                        "rel": "canonical"
                    }
                ],
                "fileLocation": "https://10.242.84.131:444/machineimage/oracle/public/oel_public",
                "state": "available",
                "attributes": {
                    "OS": "Linux_x86"
                },
                "sizes": {
                    "uploadedSizeinBytes": 376848450,
                    "totalSizeInBytes": 376848450,
                    "decompressedSizeInBytes": 5905612288
                }
            },
            {
                "id": "/satheesh/public/oel_tenant",
                "name": "/satheesh/public/oel_tenant",
                "links": [
                    {
                        "href": "/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/93B97C5E7E352676A3284D80F23714BF/templates/satheesh/public/oel_tenant",
                        "rel": "canonical"
                    }
                ],
                "fileLocation": "https://10.242.84.131:444/machineimage/satheesh/public/oel_tenant",
                "state": "available",
                "attributes": {
                    "OS": "Linux_x86"
                },
                "quota": "/satheesh/21053780-d23c-489b-9fd7-9b9779e642f1",
                "sizes": {
                    "uploadedSizeinBytes": 376848450,
                    "totalSizeInBytes": 376848450,
                    "decompressedSizeInBytes": 5905612288
                }
            },
    }
    }
  2. テンプレートの取得

    説明: URLにリストされた特定のテンプレートを返すGETリクエストです。

    メソッド: GET

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/templates/{templateName}

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • templateName: 返すテンプレートの名前

    入力: REST GETリクエストには入力は必要ありません。リクエストのコンテンツ・タイプ・ヘッダーをapplication/jsonに設定します。

    出力/レスポンス: リクエストされた割当て制限はJSON形式で返されます。

    {
     
    "id": "/oracle/public/oel_public",
     
    "name": "/oracle/public/oel_public",
     
    "links": [
     
    {
     
    "href":"/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/93B97C5E7E352676A3284D80F23714BF/templates/oracle/public/oel_public",
     
    "rel": "canonical"
     
    }
     
    ],
     
    "fileLocation": "https://10.242.84.131:444/machineimage/oracle/public/oel_public",</span></span>
     
    "state": "available",
     
    "attributes": {
     
    "OS": "Linux_x86"
     
    },
     
    "sizes": {
     
    "uploadedSizeinBytes": 376848450,
     
    "totalSizeInBytes": 376848450,
     
    "decompressedSizeInBytes": 5905612288
     
    }
     
    }
  3. テンプレートの削除

    説明: URLでリクエストされた特定のテンプレートを削除するDELETEリクエストです。

    メソッド: DELETE

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/templates/templateName

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • templateName: 削除するテンプレートの名前

    入力: REST DELETEリクエストには入力は必要ありません。

    出力/レスポンス: REST DELETEリクエストには出力はありません。レスポンス・コード206 (No Content)が返されます。

  4. テンプレートのアップロード

    説明: JSON形式で指定された入力でソフトウェア・ライブラリを使用してテンプレートを更新するPOSTリクエストです。

    メソッド: POST

    URL:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/{SITE_ID}/templates/swlib

    • hostname: OMSホスト名

    • port: OMS HTTPSポート

    • SITE_ID: 次のURLでサイト・リソースにアクセスすると、サイトIDが返されます。

      https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    • templateName: 削除するテンプレートの名前

    入力: EM RESTサービスとしてのテナント・オブジェクトのJSON表現。リクエストのコンテンツ・タイプと受入れヘッダーをapplication/jsonに設定します。

    {            
     
    "name": "/oracle/public/test2",         
    "urn": "oracle:defaultService:em:provisioning:1:cmp:Cloud:Nimbula Template:1A4754B40A0E061CE053179AF40A2898:0.1",
    "sizes": {                "total": 376848450            },
    "attributes": {                "OS": "Linux_x86"            }     
       
    }

    出力/レスポンス: ジョブが送信され、ジョブIDがJSON形式で返されます。"{ \"job_id\":\"1A57035ED0D819A1E053179AF40A4A85\"}"

    前述のJSON形式でコンポーネントのURN(urn)フィールドを取得するには、ソフトウェア・ライブラリ・コンポーネントがアップロードされ、REST APIが動作していることを確認します。

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/swlibcomponents

  5. サイトの登録および登録解除

    Oracle Computeサイトは、/sites/ネームスペースに対してサイト情報を示すJSONとともにPOSTメソッドを使用して登録できます。次にジョブが送信され、サイトが登録されます。

    たとえば:

    https://<hostname:port>/em/websvcs/restful/extws/virtualization/infrastructure/v1/sites/

    {
    "site_target_name":"Demo",
    "endpoint_url":"https://10.242.84.131",\\\\ "agent_url":"https://<hostname:port>/emd/main/",\\\\ "monitoring_cred_username":"/cloud/administrator",
    "monitoring_cred_password":"EXAlogic_123",
    "graphite_url":"https://10.242.84.131/graphite",\\\\ }

    ジョブIDは、 "{ \"job_id\":\"139600CD1BC11B59E053481DF50A6F62\"}"のような形式で返されます。

    イメージ追加(サイトの登録)

次の表は、サイトの登録に使用されるJSON形式を示しています。

表14-7 サイトの登録に使用されるJSON形式

プロパティ 説明

site_target_name

サイトのターゲット名。

endpoint_url

NimbulaサイトのURL。

agent_url

ターゲットをモニタリングしているエージェントのURL。

slave_agent_url

スタンバイ・エージェントとして使用されるフェイルオーバー・モニタリング・エージェント。エージェントのリストをJSON配列形式で次のように指定できます。

["url1","url2"].

monitoring_cred_username

Oracle Computeサイトのモニタリング資格証明のユーザー名。

monitoring_cred_password

Oracle Computeサイトのモニタリング資格証明のパスワード。

graphite_url

Graphite URL。

graphite_username

Graphite資格証明のユーザー名。

graphite_password

Graphite資格証明のパスワード。

graphite_site_prefix

Graphite接頭辞の文字列。

snmp_cred_type

SNMP資格証明のタイプ。指定できる値は、V1、V2およびV3です。

snmp_community_string

snmp_cred_typeがV1またはV2の場合に利用可能なSNMPコミュニティ文字列。

snmp_username

snmp_cred_typeがV3の場合に利用可能なSNMP資格証明のユーザー名。

snmp_authpassword

snmp_cred_typeがV3の場合に利用可能なSNMP認可パスワード。

snmp_authprotocol

snmp_cred_typeがV3の場合に利用可能なSNMP認可プロトコル(MD5またはSHA)。

snmp_privpassword

snmp_cred_typeがV3の場合に利用可能なSNMPプライバシ・パスワード。

The Oracle Computeサイトは、「削除」オプションを使用して登録を解除できます。ジョブが送信され、サイトの登録を解除します。たとえば:"{ \"job_id\":\"10D4FDE1874E201BE053461DF50A5760\"}"ジョブIDが返されます。

参考資料

次のXSDを使用してオーケストレーション・プラン(orch_plan.xml)を構築します。

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.oracle.com/sysman/vi/VIDeploymentPlan"
            xmlns="http://www.oracle.com/sysman/vi/VIDeploymentPlan"
            elementFormDefault="unqualified"
            xmlns:Q1="http://www.oracle.com/vi/RequestSchema"
            xmlns:xml="http://www.w3.org/XML/1998/namespace">
    <xsd:simpleType name="CPUSchedulingPriorityType">
        <xsd:annotation>
            <xsd:documentation>CPU Scheduling priority for the Guest VM.</xsd:documentation>
        </xsd:annotation>
        <xsd:union>
            <xsd:simpleType id="CPUSchedulingPriorityPreDefinedType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="Low"/>
                    <xsd:enumeration value="Intermediate"/>
                    <xsd:enumeration value="High"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType id="CPUSchedulingPriorityCustomType">
                <xsd:restriction base="xsd:string">
                    <xsd:pattern value="[1]?[0,1,2,3,4,5,6,7,8,9]?[0,1,2,3,4,5,6,7,8,9]"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>
    <xsd:simpleType name="CPUCapType">
        <xsd:annotation>
            <xsd:documentation>CPU Scheduling Cap for the Guest VM.</xsd:documentation>
        </xsd:annotation>
        <xsd:union>
            <xsd:simpleType id="CPUCapTypePreDefinedType">
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="Low"/>
                    <xsd:enumeration value="Intermediate"/>
                    <xsd:enumeration value="High"/>
                </xsd:restriction>
            </xsd:simpleType>
            <xsd:simpleType id="CPUCapCustomType">
                <xsd:restriction base="xsd:string">
                    <xsd:pattern value="[1]?[0,1,2,3,4,5,6,7,8,9]?[0,1,2,3,4,5,6,7,8,9]"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>
    <xsd:complexType name="StaticNetworkConfigurationType">
        <xsd:annotation>
            <xsd:documentation>Static network configuration for the network
                               interface.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="ipAddress" type="xsd:string" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>IP Address.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="hostName" type="xsd:string" maxOccurs="1"
                         minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>Fully Qualified Host
                     Name.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="subnetMask" type="xsd:string" maxOccurs="1"
                         minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>Subnet Mask.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="defaultGateway" type="xsd:string" maxOccurs="1"
                         minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>Default Gateway.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="nameServer"
                         type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Name Server.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="VirtualMachineListType">
        <xsd:sequence>
            <xsd:element maxOccurs="unbounded" minOccurs="0"
                         name="VirtualMachine" type="VirtualMachineType"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="BaseVirtualMachineType">
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>
    <xsd:complexType name="LocalDiskType">
        <xsd:sequence>
            <xsd:element name="storageVolumeId" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Id of the storage volume attached to the
                                       instance.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="index" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>Index of the storage
                    attachment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string" use="required">
            <xsd:annotation>
                <xsd:documentation>Name of the Disk. Will be ignored if
                                   Deployment is of type
                                   ImageListDeploymentType.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="fromDefinition" type="xsd:boolean">
            <xsd:annotation>
                <xsd:documentation>Denotes if the disk is specified in some
                                   metadata file associated with the binary
                                   being used to deploy. Will be ignored if
                                   Deployment is of type
                                   ImageListDeploymentType.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="NewDiskType">
        <xsd:sequence>
            <xsd:element name="Name"  type="xsd:string">
            </xsd:element>
            <xsd:element name="SizeInGB" type="xsd:long">
            </xsd:element>
            <xsd:element name="Properties" type="xsd:string" maxOccurs="unbounded" minOccurs="0">
            </xsd:element>            
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="DiskListType">
    <xsd:complexContent>    
    
    <xsd:choice>
        <xsd:sequence>        
            <xsd:element maxOccurs="unbounded" minOccurs="1" name="disk"
                         type="LocalDiskType"/>            
        </xsd:sequence>
        <xsd:sequence>
            <xsd:element name="newDisk" type="NewDiskType" minOccurs="1" maxOccurs="unbounded" />
        </xsd:sequence>
    </xsd:choice>        
    </xsd:complexContent>
    </xsd:complexType>
    <xsd:simpleType name="VirtualizationTType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="HVM"/>
            <xsd:enumeration value="PVM"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="HardwareConfigurationType">
        <xsd:annotation>
            <xsd:documentation>Hardware configuration for the guest
            vm.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Label" type="xsd:string"></xsd:element>
            <xsd:element name="ImageList" type="xsd:string"></xsd:element>
            <xsd:element name="ImageListEntry" type="xsd:string"></xsd:element>
            <xsd:element name="Shape" type="ShapeType" maxOccurs="1"
                         minOccurs="1"></xsd:element>
            <xsd:element name="Account" type="AccountType"></xsd:element>
            <xsd:element name="Quota" type="QuotaType"></xsd:element>
            <xsd:element name="Priority" type="xsd:string"></xsd:element>
            <xsd:element name="Tags" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Comma separated list of Strings that
                     will be used as Tags.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PlacementRequirements" type="xsd:string"
                         maxOccurs="1" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>Comma separated list of Strings that
                     will be used as Placement Requirement
                     tags.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="HaEnabled" type="xsd:boolean"></xsd:element>
            <xsd:element name="Virtio" type="xsd:boolean"></xsd:element>
            <xsd:element name="sshKeys" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Comma separated strings of SSH
                     Keys</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="RootSSHCredential" type="SSHCredentialType"></xsd:element>
            <xsd:element name="OracleSSHCredential" type="SSHCredentialType"></xsd:element>
 
            <xsd:element name="Nics" type="NICListType" minOccurs="0"
                         maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Container for configuration of network
                     interface cards for the Guest VM.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Nis" type="NISType" minOccurs="0"
                         maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Container for configuration of network
                     NIS for the Guest VM.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element maxOccurs="1" minOccurs="0" name="Disks"
                         type="DiskListType">                        
                <xsd:annotation>
                    <xsd:documentation>Container for configuration of local
                 disks for the Guest VM.</xsd:documentation>
                </xsd:annotation>                
            </xsd:element>
            <xsd:element name="Attributes" type="AttributeListType"
                         maxOccurs="1" minOccurs="0">
                <xsd:annotation>
                    <xsd:documentation>Keymap configuration for the Guest
                     VM</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ConfigurationDataType">
        <xsd:sequence>
            <xsd:element name="Type" type="PlanType">
                <xsd:annotation>
                    <xsd:documentation>Specify the Plan type i.e if this is
                                       meant for Image deployment or Assembly
                                       deployment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="PassThroughMode" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>This value should be set to true when
                                       Pass-Through behaviour is desired i.e
                                       when the native Oracle Compute Launch
                                       Plan or OVAB Plan is passed for
                                       deployment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="CreatingUser" type="xsd:string"></xsd:element>
            <xsd:element name="CreatingApplication" type="xsd:string"></xsd:element>
            <xsd:choice>
                <xsd:element name="AssemblyDeployment"
                             type="AssemblyDeploymentConfigDataType"/>
                <xsd:element name="ImageDeployment"
                             type="ImageDeploymentConfigDataType"/>
                <xsd:element name="OrchestrationDeployment"
                             type="OrchestrationDeploymentConfigDataType"/>
            </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="version" type="PlanVersionType" use="required">
            <xsd:annotation>
                <xsd:documentation>Deployment Plan Version attribute is
                                   introduced in PS2 release. Older plans will
                                   not have this attribute or if user adds it
                                   then the version must be 0.0.1 for plans
                                   from releases older then
                                   PS2.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="ProvisioningRequestType">
        <xsd:sequence>
            <xsd:choice>
                <xsd:element name="AssemblyDeployment"
                             type="AssemblyDeploymentConfigDataType"/>
                <xsd:element name="ImageDeployment"
                             type="ImageDeploymentConfigDataType"/>
            </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="PlanVersion" type="PlanVersionType" use="optional">
            <xsd:annotation>
                <xsd:documentation>Deployment Plan Version attribute is
                                   introduced in PS2 release. Older plans will
                                   not have this attribute or if user adds it
                                   then the version must be 0.0.1 for plans
                                   from releases older then
                                   PS2.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="EditRequestType"/>
    <xsd:complexType name="CloningRequestType"/>
    <xsd:complexType name="SnapshotRequestType"/>
    <!-- xsd:complexType name="ScalingRequestType"></xsd:complexType -->
    <xsd:complexType name="AssemblyDeploymentConfigDataType">
        <xsd:annotation>
            <xsd:documentation>Represents the configuration data associated
             with the deployment of an assembly.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="SourceBinary" type="SourceBinaryDataType"
                         maxOccurs="1" minOccurs="0"/>
            <xsd:element name="DeploymentTarget" type="DeploymentTargetData"/>
            <xsd:element name="AcceptedAllEULAs" type="xsd:boolean"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Flag to specify if all the EULAs are
                                       accepted by the user for
                                       deployment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="InstallEMAgent" type="xsd:boolean" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Flag to specify if EM Agent has to be
                                       installed by the user for
                                       deployment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="DisableCleanup" type="xsd:boolean" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Flag to specify if Cleanup of virtual
                                       machines to be disabled in case of
                                       failure.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="sshKeys" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Comma separated strings of SSH
                    Keys</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="EMAgentConfig" type="EMAgentConfigType"/>
            <xsd:element name="AssemblyNetworkConfig"
                         type="AssemblyNetworkConfigListType" minOccurs="1"
                         maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>List of mappings for the assembly
                                       networks (defined in assembly meta-data)
                                       and corresponding network on the
                                       target.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <!-- xsd:choice -->
            <!-- xsd:element name="VirtualSystemCollectionConfig" type="VirtualSystemCollectionConfigType"> 
                <xsd:annotation> <xsd:documentation> Configuration of a virtual system collection 
                (root node in the assembly), and its child nodes (if any). </xsd:documentation> 
                </xsd:annotation> </xsd:element -->
            <xsd:choice>
                <xsd:element name="VirtualSystemCollectionConfig"
                             type="VirtualSystemCollectionConfigType"
                             maxOccurs="1" minOccurs="1">
                    <xsd:annotation>
                        <xsd:documentation>Configuration of a virtual system
                                           collection (root node in the
                                           assembly), and its child nodes (if
                                           any).</xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element name="VirtualSystemConfig"
                             type="VirtualSystemConfigType" maxOccurs="1"
                             minOccurs="1">
                    <xsd:annotation>
                        <xsd:documentation>Configuration of a virtual
                                           system(root node in the
                        assembly).</xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
                <xsd:element name="PassThroughData" type="PassThroughDataType"></xsd:element>
            </xsd:choice>
            <xsd:element name="IsExalogicDeployment" type="xsd:boolean"
                         minOccurs="0" default="false">
                <xsd:annotation>
                    <xsd:documentation>Flag to specify if deployemnt is an
                                       Exalogic Assembly Deployment.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="OvabDeployerUserEmCredGuid" type="xsd:string"
                         minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="assemblyInstanceName" type="xsd:string"
                       use="required">
            <xsd:annotation>
                <xsd:documentation>Name with which the assembly instance will
                be created. Should be unique throughout the system for the
                target type oracle_assembly_instance.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="ImageDeploymentConfigDataType">
        <xsd:sequence>
            <xsd:choice>
                <xsd:annotation>
                    <xsd:documentation>Imagelist deployment can be done in two
                                       ways. Either specify the Default
                                       Configuration and all the other elements
                                       or only specify the PassThroughData. The
                                       PassThroughData is used to specify the
                                       native Oracle Compute Launch
                                       Plan.</xsd:documentation>
                </xsd:annotation>
                <xsd:element name="DefaultConfiguration"
                             type="HardwareConfigurationType"/>
                <xsd:element name="PassThroughData" type="PassThroughDataType">
                    <xsd:annotation>
                        <xsd:documentation>
                            Use CDATA to specify the native Oracle Compute
                            Launch Plan.
                            <![CDATA[ Launch Plan goes here  ]]>
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
            </xsd:choice>
            <xsd:element name="SourceBinary" type="SourceBinaryDataType"
                         minOccurs="0"></xsd:element>
            <xsd:element name="DeploymentTarget" type="DeploymentTargetData"
                         minOccurs="0"></xsd:element>
            <xsd:element name="Instances" type="VirtualMachineListType"
                         minOccurs="0"/>
            <xsd:element name="InstallEMAgent" type="xsd:boolean" minOccurs="0"></xsd:element>
            <xsd:element name="EMAgentConfig" type="EMAgentConfigType"
                         minOccurs="0"></xsd:element>
            <xsd:element name="RelationshipList" type="RelationshipListType"
                         minOccurs="0"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="namePrefix" type="xsd:string"/>
        <xsd:attribute name="numberOfInstances" type="xsd:int" use="required"/>
    </xsd:complexType>
    <xsd:complexType name="NISType">
      <xsd:complexContent>       
        <xsd:sequence>
            <xsd:element name="Domain" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="Servers" type="NISServersListType" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>       
      </xsd:complexContent> 
    </xsd:complexType>
    <xsd:complexType name="NISServersListType">
        <xsd:sequence>
           <xsd:element name="NISServers" type="NISServerType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="NISServerType">
       <xsd:sequence>
         <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
         <xsd:element name="Ip" type="xsd:string" minOccurs="1" maxOccurs="1"/>
       </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="NICListType">
    <xsd:complexContent>    
        <xsd:sequence maxOccurs="8">
            <xsd:element name="NetworkInterface" type="NICConfigurationType"
                         maxOccurs="8" minOccurs="1"/>
        </xsd:sequence>        
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="NICConfigurationType"> 
        <xsd:sequence>
            <xsd:choice>
                <xsd:element name="Vnet" type="xsd:string"/>                 
                <xsd:element name="VnetReservation" type="xsd:string"/>
            </xsd:choice>
            <xsd:choice>
                <xsd:element name="Vethernet" type="xsd:string"/>
                <xsd:element name="VethernetId" type="xsd:string"/>
            </xsd:choice>
            <xsd:element name="Options" type="NICOptionsType" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string" use="required">
            <xsd:annotation>
                <xsd:documentation>Network Interface name.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="fromDefinition" type="xsd:boolean">
            <xsd:annotation>
                <xsd:documentation>Denotes if the Network Interface is already
                                   defined in some metadata file associated
                                   with the binary.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>        
    </xsd:complexType>
    <xsd:complexType name="NICOptionsType">
        <xsd:sequence>
            <xsd:element name="Hostname" type="xsd:string" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="Primary" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false"/>
            <xsd:element name="Dns" type="NICDnsType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="Default_Gateway" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false"/>
            <xsd:element name="Provider" type="xsd:boolean" minOccurs="0" maxOccurs="1" default="false"/>
            <xsd:element name="Network_Route" type="NetworkRouteType" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="NICDnsType">
        <xsd:sequence>
            <xsd:element name="Servers" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="Search_Domains" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="NetworkRouteType">
         <xsd:sequence>
             <xsd:element name="RoutingRulesList" type="RoutingRulesListType" minOccurs="1" maxOccurs="1"/>  
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="RoutingRulesListType">
        <xsd:sequence>
            <xsd:element name="RoutingRules" type="RoutingRuleType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="RoutingRuleType">
        <xsd:sequence>
            <xsd:element name="Type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="VirtualMachineType">
        <xsd:sequence>
            <xsd:element name="InstallEMAgent" type="xsd:boolean"></xsd:element>
            <xsd:element name="EMAgentConfig" type="EMAgentConfigType"></xsd:element>
            <xsd:element name="CustomConfiguration"
                         type="HardwareConfigurationType" maxOccurs="1"
                         minOccurs="0"/>
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string"/>
        <xsd:attribute name="customConfigured" type="xsd:boolean"
                       use="required">
            <xsd:annotation>
                <xsd:documentation>Set this flag to True when the VM's Hardware
                                   configuration is overridden. By default the
                                   flag is not set which implies that the
                                   configuration is based on the default
                                   HardwareConfiguration.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="ProductConfigurationSectionType">
        <xsd:sequence>
            <xsd:element name="Properties" type="ProductPropertyListType"
                         maxOccurs="1" minOccurs="0"/>
            <xsd:element name="Version" type="xsd:string"></xsd:element>
            <xsd:element name="FullVersion" type="xsd:string"></xsd:element>
            <xsd:element name="ProductURL" type="xsd:string"></xsd:element>
            <xsd:element name="Vendor" type="xsd:string"></xsd:element>
            <xsd:element name="VendorURL" type="xsd:string"></xsd:element>
            <xsd:element name="EMAgent" type="xsd:boolean"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="productName" type="xsd:string" use="required"/>
        <xsd:attribute name="description" type="xsd:string"/>
    </xsd:complexType>
    <xsd:complexType name="ProductPropertyListType">
        <xsd:sequence>
            <xsd:element name="Property" type="ProductPropertyType"
                         maxOccurs="unbounded" minOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ProductsListType">
        <xsd:annotation>
            <xsd:documentation>Configuration for various products in the node.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Product" type="ProductConfigurationSectionType"
                         maxOccurs="unbounded" minOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ScalabilityConfigurationType">
        <xsd:annotation>
            <xsd:documentation>Scalability configuration for the virtual
            system. If none is specified, default will be applied
            using the assembly
meta-data.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="minNum" type="xsd:int" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Minimum number of instances to be
                                       deployed.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="maxNum" type="xsd:int" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Maximum number of instances to be
                                       deployed.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="deploy" type="xsd:boolean" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Whether instance to be
                    deployed.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="HaEnabled" type="xsd:boolean" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Whether HA enabled.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="initial" type="xsd:int" maxOccurs="1"
                         minOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Initial number of instances to be
                    deployed.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="autoScalable" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>Flag to specify if the node will have
                                       auto-scaling enabled. If the node is
                                       auto-scaling, it is required to specify
                                       configuration for all the child nodes
                                       (limited by the max number
                                       instances).</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="vmNamePrefix" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Name prefix to be used for child
                                       instances.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="ConfigurationData" type="ConfigurationDataType">
        <xsd:annotation>
            <xsd:documentation>Place holder element for various types of
            request config data.</xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:complexType name="StoragerequestType"/>
    <xsd:complexType name="VirtualSystemCollectionConfigType">
        <xsd:annotation>
            <xsd:documentation>Configuration of a virtual system collection
                               (root node in the assembly), and its child nodes
                               (if any).</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="BaseNodeConfigType">
                <xsd:sequence>
                    <xsd:element name="VirtualSystemConfig"
                                 type="VirtualSystemConfigType"
                                 maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="VirtualSystemConfigType">
        <xsd:annotation>
            <xsd:documentation>Configuration of a virtual system, and its child
                               instances (if multiple instances are
                               deployed).</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="BaseNodeConfigType">
                <xsd:sequence>
                    <xsd:element name="ScalabilityConfiguration"
                                 type="ScalabilityConfigurationType"
                                 minOccurs="0" maxOccurs="1">
                        <xsd:annotation>
                            <xsd:documentation>Scalability configuration for
                            the virtual system. If none is specified, default
                            will be applied using the assembly 
                            meta-data.</xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                    <xsd:element name="HardwareConfiguration"
                                 type="HardwareConfigurationType" minOccurs="0"
                                 maxOccurs="1">
                        <xsd:annotation>
                            <xsd:documentation>Common hardware configuration
                            for the guest vm (and its instances,
                            if any).</xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                    <xsd:element name="Instances"
                                 type="ChildVirtualSystemConfigType"
                                 minOccurs="0" maxOccurs="unbounded">
                        <xsd:annotation>
                            <xsd:documentation>Instances for the deployment.
                                               Only required if multiple
                                               instances are being deployed for
                                               the virtual system, and its not
                                               marked to be auto-scalable.
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                </xsd:sequence>
                <xsd:attribute name="targetName" type="xsd:string"
                               use="required">
                    <xsd:annotation>
                        <xsd:documentation>Name to be assigned for the target
                        in deployment. If the node has multiple instances of
                        deployments, this will be the tier instance name,
                        otherwise,the guest vm name.</xsd:documentation>
                    </xsd:annotation>
                </xsd:attribute>
                <xsd:attribute name="vmInstance" type="xsd:boolean"></xsd:attribute>
                <xsd:attribute name="followsMaster" type="xsd:boolean"></xsd:attribute>
                <xsd:attribute name="agentInstallationType"
                               type="EMAgentInstallationType"></xsd:attribute>
                <xsd:attribute name="agentPushInstallationEnabled"
                               type="xsd:boolean"></xsd:attribute>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="ChildVirtualSystemCollectionConfigType">
        <xsd:annotation>
            <xsd:documentation>Configuration for a child instance of virtual
                               system deployment.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="VirtualSystemCollectionConfigType">
                <xsd:attribute name="targetName" type="xsd:string">
                    <xsd:annotation>
                        <xsd:documentation>Target name for the tier instance
                                           target that will be created.
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:attribute>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="BaseNodeConfigType">
        <xsd:annotation>
            <xsd:documentation>Common configuration applicable to virtual
            system and virtual system collection.</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="deploymentOption" type="xsd:string" minOccurs="0"
                         maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Deployment option to be used for
                                       configuring the assembly. The default
                                       values from the default option will be
                                       picked, unless the user over-rides
                                       them.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ProductConfiguration" type="ProductsListType"
                         minOccurs="0" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Configuration for various products in
                    the node.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:string" use="required">
            <xsd:annotation>
                <xsd:documentation>Unique identifier for the node in assembly
                                   meta-data.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:simpleType name="QosPriorityType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="0"/>
            <xsd:enumeration value="1"/>
            <xsd:enumeration value="2"/>
            <xsd:enumeration value="3"/>
            <xsd:enumeration value="4"/>
            <xsd:enumeration value="5"/>
            <xsd:enumeration value="6"/>
            <xsd:enumeration value="7"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="ChildVirtualSystemConfigType">
        <xsd:annotation>
            <xsd:documentation>Configuration of a virtual system (child node of
                               a virtual system having multiple
                               deployments).</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="BaseNodeConfigType">
                <xsd:sequence>
                    <xsd:element name="HardwareConfiguration"
                                 type="HardwareConfigurationType">
                        <xsd:annotation>
                            <xsd:documentation>Hardware configuration for the
                                               guest vm.</xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>
                </xsd:sequence>
                <xsd:attribute name="targetName" type="xsd:string"
                               use="required">
                    <xsd:annotation>
                        <xsd:documentation>Name with which the guest vm target
                                           will be created for this
                                           instance.</xsd:documentation>
                    </xsd:annotation>
                </xsd:attribute>
                <xsd:attribute name="followsMaster" type="xsd:boolean"/>
                <xsd:attribute name="agentInstallationType"
                               type="EMAgentInstallationType"></xsd:attribute>
                <xsd:attribute name="agentPushInstallationEnabled"
                               type="xsd:boolean"></xsd:attribute>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="AssemblyNetworkConfigListType">
        <xsd:annotation>
            <xsd:documentation>List of mappings for the assembly networks
                               (defined in assembly meta-data) and
                               corresponding network on the target.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="AssemblyNetwork" type="AssemblyNetworkType"
                         minOccurs="0" maxOccurs="unbounded">
                <xsd:annotation>
                    <xsd:documentation>Mapping for the assembly network
                                       defined in assembly meta-data) and
                                       corresponding network on the
                                       target.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AssemblyNetworkType">
        <xsd:attribute name="name" type="xsd:string">
            <xsd:annotation>
                <xsd:documentation>Name of the assembly network.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="backendNetwork" type="xsd:string">
            <xsd:annotation>
                <xsd:documentation>Backend network on the target.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="DeploymentTargetData">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>EM Target Name</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Id" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>EM Target GUID</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Uri" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Oracle Compute Target
                    URI</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="Type" type="DeploymentTargetType"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="DeploymentTargetType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="oracle_nimbula_site"/>
            <xsd:enumeration value="oracle_nimbula_cluster"/>
            <xsd:enumeration value="oracle_nimbula_node"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="EMAgentConfigType">
    <xsd:complexContent>   
        <xsd:sequence>
            <xsd:element name="PlatformCode" type="xsd:int"></xsd:element>
            <xsd:element name="InstallBaseDirectory" type="xsd:string"></xsd:element>
            <xsd:element name="InstanceDirectory" type="xsd:string"></xsd:element>
            <xsd:element name="Port" type="xsd:int"></xsd:element>
            <xsd:element name="InstallUserName" type="xsd:string"></xsd:element>
            <xsd:element name="InstallUserPassword" type="xsd:string"></xsd:element>
            <xsd:element name="InstallUserPasswordGuid" type="xsd:string"></xsd:element>
            <xsd:element name="RootHostCredential" type="HostCredentialType"></xsd:element>
            <xsd:element name="OracleHostCredential" type="HostCredentialType"></xsd:element>
            <xsd:element name="AdditionalParams" type="xsd:string"></xsd:element>
            <xsd:element name="SshTimeoutInMinutes" type="xsd:int"></xsd:element>
            <xsd:element name="PrivilegeDelegationSettings" type="xsd:string"></xsd:element>
            <xsd:element name="SshKey" type="xsd:string"></xsd:element>
            <xsd:element name="SshKeyGuid" type="xsd:string"></xsd:element>
            <xsd:element name="RootSSHCredential" type="SSHCredentialType"></xsd:element>
            <xsd:element name="OracleSSHCredential" type="SSHCredentialType"></xsd:element>
       </xsd:sequence>        
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="StorageTarget">
        <xsd:attribute name="name" type="xsd:string"/>
        <xsd:attribute name="type" type="StorageTargetType"/>
    </xsd:complexType>
    <xsd:simpleType name="StorageTargetType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="DEFAULT"/>
            <xsd:enumeration value="STORAGE_REPOSITORY"/>
            <xsd:enumeration value="STORAGE_ARRAY"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="ModeType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Read-Write"/>
            <xsd:enumeration value="Read-Only"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="IPAssignmentModeType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Dhcp"/>
            <xsd:enumeration value="Static"/>
            <xsd:enumeration value="Network Profile"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="EMAgentInstallationType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Push Agent Installation"/>
            <xsd:enumeration value="RPM Installation"/>
            <xsd:enumeration value="No Agent Installation"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="StorageQoSType">
        <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="ProductPropertyType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Description" type="xsd:string"></xsd:element>
            <xsd:element name="Required" type="xsd:boolean"></xsd:element>
            <xsd:element name="Value" type="xsd:string"></xsd:element>
            <xsd:element name="ValueGuid" type="xsd:string"></xsd:element>
            <xsd:element name="Secret" type="xsd:boolean"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:string"></xsd:attribute>
    </xsd:complexType>
    <xsd:simpleType name="PlanVersionType">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="[0-9]{1,4}\.[0-9]{1,4}\.[0-9]{1,4}">
                <xsd:annotation>
                    <xsd:documentation>i.e. x.y.z where x, y, and z are "small"
                                       integers</xsd:documentation>
                </xsd:annotation>
            </xsd:pattern>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="RelationshipDataType">
        <xsd:sequence>
            <xsd:element name="Type" type="RelationshipType">
                <xsd:annotation>
                    <xsd:documentation></xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="FirstServerName" type="xsd:string"></xsd:element>
            <xsd:element name="SecondServerName" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="RelationshipListType">
    <xsd:complexContent>    
        <xsd:sequence>
            <xsd:element name="Relationship" type="RelationshipDataType"
                         maxOccurs="unbounded" minOccurs="0"></xsd:element>
        </xsd:sequence>        
    </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="AttributeListType">
    <xsd:complexContent>        
        <xsd:sequence>
            <xsd:element name="Attribute" type="AttributeType"
                         maxOccurs="unbounded" minOccurs="0"></xsd:element>
        </xsd:sequence>        
    </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="AttributeType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Value" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ImageListType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
            <xsd:element name="Entry" type="xsd:string"></xsd:element>
            <xsd:element name="UseDefaultEntry" type="xsd:boolean"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ShapeType">
    <xsd:complexContent>    
        <xsd:sequence>        
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
        </xsd:sequence>        
        </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="QuotaType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Type" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AccountType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="BackendNetworkType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="PlanType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="NimbulaImage"></xsd:enumeration>
            <xsd:enumeration value="NimbulaAssembly"></xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="PassThroughDataType">
        <xsd:annotation>
            <xsd:documentation>Element to specify the pass-through data.
Example: Oracle Compute Launch Plan , OVAB Deployment Plan</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="planData" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>Use CDATA to add the pass-through
                    data.</xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="RelationshipType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="same_node"></xsd:enumeration>
            <xsd:enumeration value="different_node"></xsd:enumeration>
            <xsd:enumeration value="same_cluster"></xsd:enumeration>
            <xsd:enumeration value="different_cluster"></xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="SourceBinaryDataType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Type" type="SourceBinaryType"></xsd:element>
            <xsd:element name="Version" type="xsd:string"></xsd:element>
            <xsd:choice>
                <xsd:element name="AssemblyBinary"
                             type="AssemblyBinaryDataType"></xsd:element>
                <xsd:element name="ImageListBinary"
                             type="ImageListBinaryDataType"></xsd:element>
            </xsd:choice>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AssemblyBinaryDataType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ImageListBinaryDataType">
        <xsd:sequence>
            <xsd:element name="Name" type="xsd:string"></xsd:element>
            <xsd:element name="Id" type="xsd:string"></xsd:element>
            <xsd:element name="Entry" type="xsd:string"></xsd:element>
            <xsd:element name="DefaultEntry" type="xsd:string"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="SourceBinaryType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="IMAGELIST"></xsd:enumeration>
            <xsd:enumeration value="ASSEMBLY"></xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="OrchestrationDeploymentConfigDataType">
        <xsd:sequence>
            <xsd:element name="Account" type="xsd:string"></xsd:element>
            <xsd:element name="InstallEMAgent" type="xsd:boolean"></xsd:element>
            <xsd:element name="EMAgentConfig" type="EMAgentConfigType"></xsd:element>
            <xsd:element name="ObjectPlanDependencyList"
                         type="ObjectPlanDependencyListType"></xsd:element>
            <xsd:choice>
                <xsd:annotation>
                    <xsd:documentation>Orchestration deployment can be done in
                                       two ways. Either specify the Default
                                       Configuration and all the other elements
                                       or only specify the PassThroughData. The
                                       PassThroughData is used to specify the
                                       native Nimula Orchestration
                                       Plan.</xsd:documentation>
                </xsd:annotation>
                <xsd:element name="ObjectPlanList" type="ObjectPlanListType"></xsd:element>
                <xsd:element name="PassThroughData" type="PassThroughDataType">
                    <xsd:annotation>
                        <xsd:documentation>
                            Ue CDATA to specify the native Orchestration Plan.
                            <![CDATA[ Orchestration Plan goes here  ]]>
                        </xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
            </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="namePrefix" type="xsd:string"></xsd:attribute>
        <xsd:attribute name="description" type="xsd:string"></xsd:attribute>
        
    </xsd:complexType>
    <xsd:complexType name="ObjectPlanDependencyListType">
    <xsd:complexContent>        
        <xsd:sequence>
            <xsd:element name="ObjectPlanDependency"
                         type="ObjectPlanDependencyDataType"
                         maxOccurs="unbounded" minOccurs="0"></xsd:element>
        </xsd:sequence>    
    </xsd:complexContent>
    </xsd:complexType>
    <xsd:complexType name="ObjectPlanDependencyDataType">
        <xsd:sequence>
            <xsd:element name="Type" type="ObjectPlanDependencyType">
                <xsd:annotation>
                    <xsd:documentation></xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="ObjectPlanName" type="xsd:string"></xsd:element>
            <xsd:element name="ToObjectPlanName" type="xsd:string"></xsd:element>
        </xsd:sequence>        
    </xsd:complexType>
    <xsd:simpleType name="ObjectPlanDependencyType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="depends"></xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="ObjectPlanType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="account"></xsd:enumeration>
            <xsd:enumeration value="dns/key"></xsd:enumeration>
            <xsd:enumeration value="dns/record"></xsd:enumeration>
            <xsd:enumeration value="dns/reservation"></xsd:enumeration>
            <xsd:enumeration value="dns/zone"></xsd:enumeration>
            <xsd:enumeration value="ip/reservation"></xsd:enumeration>
            <xsd:enumeration value="launchplan"></xsd:enumeration>
            <xsd:enumeration value="permission/object"></xsd:enumeration>
            <xsd:enumeration value="permission/user"></xsd:enumeration>
            <xsd:enumeration value="orchestration"></xsd:enumeration>
            <xsd:enumeration value="storage/volume"></xsd:enumeration>
            <xsd:enumeration value="storageattachment"></xsd:enumeration>
            <xsd:enumeration value="secapplication"></xsd:enumeration>
            <xsd:enumeration value="seciplist"></xsd:enumeration>
            <xsd:enumeration value="seclist"></xsd:enumeration>
            <xsd:enumeration value="secrule"></xsd:enumeration>
            <xsd:enumeration value="vethernet"></xsd:enumeration>
            <xsd:enumeration value="vservice/*"></xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="HAPolicyType">            
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="active"></xsd:enumeration>
            <xsd:enumeration value="monitor"></xsd:enumeration>
            <xsd:enumeration value="none"></xsd:enumeration>
        </xsd:restriction>        
    </xsd:simpleType>
    <xsd:complexType name="HA">
    <xsd:attribute name="value" type="HAPolicyType"></xsd:attribute>    
    </xsd:complexType>
    <xsd:complexType name="ObjectPlanListType">
        <xsd:sequence>
            <xsd:element name="ObjectPlan" type="ObjectPlanDataType"
                         maxOccurs="10"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="ObjectPlanDataType">
        <xsd:sequence>
            <xsd:element name="Type" type="ObjectPlanType"></xsd:element>
            <xsd:element name="HAPolicy" type="HA"></xsd:element>            
            <xsd:element name="ObjectMemberList" type="ObjectMemberListType"></xsd:element>
            <xsd:element name="GlobalObjectMember"
                         type="AbstractObjectMemberType"></xsd:element>
        </xsd:sequence>
        <xsd:attribute name="label" type="xsd:string"></xsd:attribute>
    </xsd:complexType>
    <xsd:complexType name="ObjectMemberListType">
        <xsd:sequence>
            <xsd:element name="ObjectMember" type="AbstractObjectMemberType"
                         maxOccurs="unbounded" minOccurs="1"></xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AbstractObjectMemberType" abstract="true">
        <xsd:annotation>
            <xsd:documentation>This is an abstract type that has to be extended
                               by implementing member types for different kinds
                               of objects eg. launchplan, storage
                               etc.</xsd:documentation>
        </xsd:annotation>
       
    </xsd:complexType>    
       
    <xsd:complexType name="LaunchPlanMemberType">
        <xsd:annotation>
            <xsd:documentation>This is the implementation of
                               AbstractObjectMemberType corresponding to object
                               of type launchplan. Similar implementations for
                               other objects should be used for other
                               cases.</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="AbstractObjectMemberType">  
            <xsd:sequence>
                    <xsd:element name="InstallEMAgent" type="xsd:boolean"></xsd:element>
                    <xsd:element name="EMAgentConfig" type="EMAgentConfigType"></xsd:element>
                    <xsd:element name="NumberOfInstances" type="xsd:string" ></xsd:element>
                    <xsd:element name="ImageList" type="xsd:string"></xsd:element>
                    <xsd:element name="ImageListEntry" type="xsd:string"></xsd:element>
                    <xsd:element name="DeploymentTarget" type="DeploymentTargetData"></xsd:element>
                    <xsd:element name="DefaultConfiguration" type="HardwareConfigurationType"></xsd:element>
                    <xsd:element name="Instances" type="VirtualMachineListType"></xsd:element>
                    <xsd:element name="AffinityRelationshipList"
                                 type="RelationshipListType"></xsd:element>
                </xsd:sequence>
                <xsd:attribute name="namePrefix" type="xsd:string"></xsd:attribute>
            </xsd:extension>
        </xsd:complexContent>        
    </xsd:complexType>
 
    <xsd:complexType name="SSHCredentialType">
        <xsd:annotation>
            <xsd:documentation>SSH Credentials specifying username, public and
                private keys or credential reference GUID
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice>
            <xsd:sequence>
                <xsd:element name="Username" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
                <xsd:element name="PublicSSHKey" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
                <xsd:element name="PrivateSSHKey" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
            </xsd:sequence>
            <xsd:sequence>
                <xsd:element name="EMCredentialReferenceGUID" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
            </xsd:sequence>
        </xsd:choice>
    </xsd:complexType>
 
    <xsd:complexType name="HostCredentialType">
        <xsd:annotation>
            <xsd:documentation>Host Credentials specifying the username and
                password or credential reference GUID
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice>
            <xsd:sequence>
                <xsd:element name="Username" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
                <xsd:element name="Password" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
            </xsd:sequence>
            <xsd:sequence>
                <xsd:element name="EMCredentialReferenceGUID" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
            </xsd:sequence>
        </xsd:choice>
    </xsd:complexType>
 
</xsd:schema>