REST API

Solution Manager は、特定のタスクをプログラムで実行するための REST API を備えています。REST API は、リビジョンの作成とデプロイの自動化、ライセンス管理の自動化などを行う場合に役立ちます。Solution Manager へのサーバーの登録/登録解除操作をクラウドプロバイダーのオートスケーリング機能と組み合わせて使用すると、必要に応じて Denodo サーバーを起動/停止できます。この方法については、ナレッジベースの記事「 Configuring Auto Scaling of Denodo in AWS 」を参照してください。

この API を使用する際の考慮事項:

  • すべての操作 (externalShutdownpingLicenseManager を除く) のベース URL は、次のとおりです。

    https://<host of the Solution Manager server>:10090
    

    10090 は Solution Manager のデフォルトのポートです。

  • この API では、次の認証方法がサポートされます。

    • HTTP Basic

    • SPNEGO (Kerberos over HTTP)

    この API はステートレスです。つまり、クライアントからのリクエストそれぞれに、そのリクエストを理解するために必要なすべての情報 (資格情報を含む) が含まれている必要があります。これは、REST API の通常のパターンで、各リクエストはそれ以前のリクエストから独立しています。

操作のリスト:

環境のリストの取得

次のリクエストを実行すると、Solution Manager に定義されている環境のリストを取得できます。

  • URL: /environments

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、JSON 形式の環境のリストが含まれます。各環境には次の情報が含まれる可能性があります。

{
    "id": <number>,
    "name": <text>,
    "uuid": <uuid>,
    "description": <text>,
    "minimumUpdateValue":<number>  /* format yyyymmdd */,
    "minimumUpdateMandatory": <boolean> /* the minimum update is mandatory in the Virtual DataPort Administration Tool */,
    "minimumUpdateDownloadUrl": <URL>,
    "licenseAlias": <text>,
    "environmentType": <environment type> /* environment type */
}

<environment type>::= "STANDARD" | "AUTOMATED_AWS"

次の例は、2 つの環境のリストを表します。

[
    {
        "id": 1,
        "name": "Environment 1",
        "uuid" : "46984e8e-be0a-4f28-9802-aab0aa03e451",
        "description": "First environment",
        "minimumUpdateMandatory": false,
        "licenseAlias": "PRODUCTION",
        "environmentType": "STANDARD"
    },
    {
        "id": 2,
        "name": "Environment 2",
        "uuid" : "979475f0-51b5-4f2e-af26-09aa76fa72a0",
        "description": "Second environment",
        "minimumUpdateMandatory": false,
        "licenseAlias": "DEVELOPMENT",
        "environmentType": "STANDARD"
    },
    {
        "id": 3,
        "name": "Environment AWS",
        "uuid": "4b6bc266-61f6-4394-9b43-aee507beddbb",
        "description": "",
        "minimumUpdateValue": "",
        "minimumUpdateMandatory": false,
        "minimumUpdateDownloadUrl": "",
        "licenseAlias": "PRODUCTION",
        "environmentType": "AUTOMATED_AWS"
    }
]

環境の作成

環境を作成するエンドポイント:

  • URL: /environments

  • メソッド: POST

  • リクエストの本文の構文:

{
    "name": <text>,
    "description": <text>,  /* optional */
    "minimumUpdateValue":<number>  /* /* optional, format yyyymmdd */,
    "minimumUpdateMandatory": <boolean> /* optional, the minimum update is mandatory in the Virtual DataPort Administration Tool */,
    "minimumUpdateDownloadUrl": <URL> /* optional */,
    "licenseAlias": <text>,    /* optional, assign a license to this environment */
    "environmentType": <environment type>  /* only "STANDARD" <environment type> is supported */
}

<environment type>::= "STANDARD" | "AUTOMATED_AWS"

注釈

環境にライセンスを割り当てるには、ライセンスのエイリアスを指定します。このエイリアスを取得するには、操作 licenseAlias を使用します。

注釈

この操作では、標準の環境のみを作成できます。

リクエストが正常に実行された場合、サービスは、HTTP コード 201 と、新しい環境の ID が含まれる応答を返します。

この例では、リクエストの本文が含まれるファイル「new_environment.json」を作成してから、cURL を使用して、このファイルの内容が含まれるリクエストを送信します。

ファイル「new_environment.json」の内容
{
    "name": "finance-development",
    "description": "Environment for the development servers allocated to the finance department",
    "minimumUpdateValue": "20190312",
    "minimumUpdateDownloadUrl": "https://denodo-repository.acme.com/denodo-v70-update-20190903.zip",
    "minimumUpdateMandatory": true,
    "licenseAlias": "DEVELOPMENT",
    "environmentType": "STANDARD"
}
「cURL」を使用した、操作「環境の作成」へのリクエストの例
curl --data @new_environment.json --header "Content-Type: application/json" --user "jsmith" "https://solution-manager.acme.com:10090/environments"
操作「環境の作成」の応答の例
{
    "id": 1,
    "name": "finance-development",
    "uuid": "d7bea1bb-8aa6-4161-bdbe-f976fdfb6d1f",
    "description": "Environment for the development servers allocated to the finance department",
    "minimumUpdateValue": "20190312",
    "minimumUpdateDownloadUrl": "https://denodo-repository.acme.com/denodo-v70-update-20190903.zip",
    "minimumUpdateMandatory": true,
    "licenseAlias": "DEVELOPMENT",
    "environmentType": "STANDARD"
}

利用可能なライセンスのリストの取得

Solution Manager に読み込まれている利用可能なライセンスのリストを取得します。

  • URL: /licenseAlias

  • メソッド: GET

リクエストが正常に実行された場合、サービスは HTTP コード 200 を返し、応答の本文に JSON 形式のライセンスのリストが含まれます。各ライセンスには次の情報が含まれる可能性があります。

{
    "alias": <text>,  /* license alias name */
    "licenseType": <license type>,  /* license type */
    "version": <text>,  /* licence version number, i.e: 8.0 */
    "uniqueLicenseType": boolean /* indicates if there is more than one license with the same type */
}

<license type>::=
      "PRODUCTION"
    | "STAGING"
    | "HOT_BACKUP"
    | "COLD_BACKUP"
    | "DEVELOPMENT"
    | "PERSONAL_DEVELOPER"
    | "TRAINING"
    | "EVALUATION"
    | "EXPRESS"
    | "TESTING"

応答の例

[{
        "alias": "DEVELOPMENT",
        "licenseType": "DEVELOPMENT",
        "version": "8.0",
        "uniqueLicenseType": true
    }, {
        "alias": "PERSONAL_DEVELOPER",
        "licenseType": "PERSONAL_DEVELOPER",
        "version": "8.0",
        "uniqueLicenseType": true
    }, {
        "alias": "PRODUCTION",
        "licenseType": "PRODUCTION",
        "version": "8.0",
        "uniqueLicenseType": true
    }
]

環境の更新

環境の構成を変更する操作です。

  • URL: /environments/{number:environmentId}

  • メソッド: PUT

  • リクエストの本文の構文:

    {
        "name": <text>,
        "description": <text>,  /* optional */
        "minimumUpdateValue": <number>,  /* optional, format yyyymmdd */
        "minimumUpdateMandatory": <boolean>, /* optional, the minimum update is mandatory in the Virtual DataPort Administration Tool */
        "minimumUpdateDownloadUrl": <URL>, /* optional */
        "licenseAlias": <text>,    /* optional, associate the environemnt with a license */
        "environmentType": <environment type>  /* only "STANDARD" <environment type> is supported */
    }
    
    <environment type>::= "STANDARD" | "AUTOMATED_AWS"
    

注釈

この操作では、標準の環境のみを更新できます。

リクエストが正常に実行された場合、サービスは HTTP コード 200 を返し、応答の本文に、環境の設定を示す JSON 形式のドキュメントが含まれます。

PUT リクエストの例:

{
    "name": "env",
    "description": "new description of the environment",
    "minimumUpdateValue": "20190312",
    "minimumUpdateDownloadUrl": "http://denodo.com/update20190312.zip",
    "minimumUpdateMandatory": false,
    "licenseAlias": "DEVELOPMENT",
    "environmentType": "STANDARD"
}

応答の例:

{
    "id": 1,
    "name": "env",
    "uuid": "979475f0-51b5-4f2e-af26-09aa76fa72a0",
    "description": "sample updated environment",
    "minimumUpdateValue": "20190312",
    "minimumUpdateMandatory": false,
    "minimumUpdateDownloadUrl": "http://denodo.com/update20190312.zip",
    "licenseAlias": "DEVELOPMENT",
    "environmentType": "STANDARD"
}

環境の削除

環境と、その中にあるすべてのクラスターとサーバーを削除します。

  • URL: /environments/{number:environmentId}

  • メソッド: DELETE

次のリクエストは、ID が 1 の環境と、そのクラスターとサーバーを削除します。

DELETE https://solution-manager.acme.com:10090/environments/1

リクエストが正常に実行された場合、サービスは HTTP コード 204 を返します。

環境に関連付けられている Virtual DataPort のプロパティのリストの取得

環境に定義されている Virtual DataPort のプロパティのリストを取得します。

  • URL: /environments/{number:environmentId}/vdpProperties

  • メソッド: GET

  • URL パラメーター。これらはすべて任意で、組み合わせて使用できます。

  • propertyName: 正確なプロパティ名を指定します。URL にこのパラメーターが含まれている場合、以下のパラメーターは操作で無視されます。

  • databaseName: データベース名でプロパティをフィルターします。

  • elementType: エレメントタイプ (ビューやデータソースなど) でプロパティをフィルターします。

  • elementTypeName: エレメントタイプ名 (JDBC や XML など) でプロパティをフィルターします。

  • elementName: エレメント名でプロパティをフィルターします。

URL パスには、環境の ID を含める必要があります。

応答の形式は次のとおりです。

{
    "environmentProperties": [
        {
            "id": <number>,
            "name": <text>,
            "value": <text>,
            "propertyType": "VDP",
            "parentId": <number>,
            "undefined": <boolean>
        },
        { ... }
   ]
}

例 1

次の例は、ID が 4 の環境のプロパティを返す応答を表しています。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/4/vdpProperties"
応答
 {
     "environmentProperties": [
         {
             "id": 30,
             "name": "users.smadmin.PASSWORD",
             "value": "mYgfbAayggeImPPOGfklFLfgt ...",
             "propertyType": "VDP",
             "parentId": 3,
             "undefined":false
         },
         {
             "id": 32,
             "name": "users.smadmin.PASSWORD.ALGORITHM",
             "value": "SHA512",
             "propertyType": "VDP",
             "parentId": 3,
             "undefined":false
         },
         {
             "id": 31,
             "name": "users.smadmin.PASSWORD.ENCRYPTED",
             "value": "ENCRYPTED",
             "propertyType": "VDP",
             "parentId": 3,
             "undefined":false
         },
         {
             "id": 32,
             "name": "undefinedProperty",
             "value": "",
             "propertyType": "VDP",
             "parentId": 1,
             "undefined": true
         }
     ]
}

例 2

次の URL は、パラメーター propertyName を使用して、ID が 2 の環境のプロパティ users.smadmin.PASSWORD.ALGORITHM の値を取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?propertyName=users.smadmin.PASSWORD.ALGORITHM"

このパラメーターを他のパラメーターと組み合わせることはできません。

例 3

次の URL は、パラメーター databaseName を使用して、データベース「admin」に定義されているプロパティを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?databaseName=admin"

例 4

次の URL は、パラメーター elementType を使用して、データソースのプロパティを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?elementType=datasources"

例 5

次の URL は、パラメーター elementTypeName を使用して、すべての JDBC データソースのプロパティを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?elementTypeName=jdbc"

例 6

次の URL は、パラメーター elementName を使用して、名前が「oracle12c」のエレメントのプロパティを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?elementName=oracle12c"

例 7

次の URL は、パラメーター databaseNameelementType 、および elementTypeName を使用して、データベース admin の LDAP データソースのプロパティを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/2/vdpProperties?databaseName=admin&elementType=datasources&elementTypeName=ldap"

環境プロパティの作成および削除

次の URL に対して POST リクエストを実行すると、環境プロパティを作成できます。

  • URL: /environments/{number:environmentId}/vdpProperties

  • メソッド: POST

リクエストの本文に、次の形式に従ってプロパティのリストを含める必要があります。

[
   {
        "name" : <text>,
        "value" : <text>
        "undefined" : <boolean>, /* optional */
        "valueEncrypted" : <boolean> /* optional */
   },
   { ... }
]

undefined プロパティは必須ではありません。これを指定しないと、この値はデフォルトで false に設定されます。

Solution Manager は、プロパティの名前に応じて一部のプロパティ (password など) を暗号化して保存します。これらのプロパティについては、Solution Manager は以下の値を受け入れます。

  • 暗号化されていない値

  • <SOLUTION_MANAGER_HOME>/bin にある encrypt_password スクリプトを使用して暗号化された値

  • Denodo サーバー (VDP) によって暗号化された値

valueEncrypted プロパティは必須ではありません。このプロパティを使用すると、encrypt_password で暗号化された値が有効かどうかを確認できます。

valueEncrypted が false の場合、この値はクリアテキストと見なされます。

valueEncrypted が true の場合、この値は暗号化されていると見なされます。この暗号化された値が無効の場合は、エラーがスローされます。

valueEncrypted が定義されていない場合、この値はまず encrypt_password スクリプトで暗号化された値と見なされ、その値が有効でない場合、暗号化されていない値と見なされます。

次の例は、いくつかのプロパティを作成する POST リクエストを示しています。

[
    {
        "name": "users.smadmin.PASSWORD",
        "value": "7mclUPUm5bGx2L3KBLmzQsnO1o533AwYCAfk+oztHHqZIZ33Ow7w ... "
    }, {
        "name": "users.smadmin.PASSWORD.ALGORITHM",
        "value": "SHA512"
    }, {
        "name": "users.acme.PASSWORD",
        "value": "mypassword",
        "valueEncrypted" : false
    }, {
        "name": "users.acme.PASSWORD.ALGORITHM",
        "value": "SHA512"
    }, {
        "name": "undefinedProperty",
        "value": "",
        "undefined": true
    }, {
        "name": "databases.admin.datasources.jdbc.acmeOracle10gDs.USERPASSWORD",
        "value": "C6zZSBoi55Oxgfxir6AX6YH7Ve5RjCfuQAPTpXsCYeQDkIg6xvVT ... "
    }, {
        "name": "databases.admin.datasources.jdbc.dsAcmeOracle11g.USERPASSWORD",
        "value": "C6zZSBoi55Oxgfxir6AX6YH7Ve5RjCfuQAPTpXsCYeQDkIg6xvVT ... ",
        "valueEncrypted": true
    }, {
        "name": "databases.admin.datasources.jdbc.dsAcmeOracle12c.USERPASSWORD",
        "value": "y0DVUNiFjBzyME8Oes6ErRZDT+ppEFScSfjSnRnLh36eAjhervMM ... "
    }, {
        "name": "databases.admin.datasources.jdbc.dsAcmeSqlServer.USERPASSWORD",
        "value": "y0DVUNiFjBzyME8Oes6ErRZDT+ppEFScSfjSnRnLh36eAjhervMM ... ",
        "valueEncrypted": true
    }, {
        "name": "databases.admin.datasources.jdbc.dsAcmeMySql4.USERPASSWORD",
        "value": "denodo"
    }, {
        "name": "databases.admin.datasources.jdbc.dsAcmeMySql5.USERPASSWORD",
        "value": "denodo",
        "valueEncrypted": false
    }
]

この例は、ユーザー PASSWORD とデータソース USERPASSWORD を追加するために、次のような複数の値がサポートされていることを示しています。

  • ユーザー smadmin 用の、Denodo サーバーによって暗号化された値「mypassword」

  • ユーザー acme 用の暗号化されていない値「mypassword」

  • acmeOracle10gDs および acmeOracle11gDs 用の、Denodo サーバーによって暗号化された値「denodo」

  • dsAcmeOracle12c および dsAcmeSqlServer 用の、encrypt_password スクリプトで暗号化された値「denodo」

  • dsAcmeMySql4 および dsAcmeMySql5 用の暗号化されていない値「denodo」

応答の本文に、新しいプロパティとその ID が含まれます。

[
    {
        "id": 30,
        "name": "users.smadmin.PASSWORD",
        "value": "7mclUPUm5bGx2L3KBLmzQsnO1o533AwYCAfk+oztHHqZIZ33Ow7w ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 31,
        "name": "users.smadmin.PASSWORD.ALGORITHM",
        "value": "SHA512",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 32,
        "name": "users.acme.PASSWORD",
        "value": "zAo2EsLelqX34qRZkIOti7mqYebZfMHSpo/Gg2VVm2JgteBRznki ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 33,
        "name": "users.acme.PASSWORD.ALGORITHM",
        "value": "SHA512",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 34,
        "name": "undefinedProperty",
        "value": "",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": true
    }, {
        "id": 35,
        "name": "databases.admin.datasources.jdbc.acmeOracle10gDs.USERPASSWORD",
        "value": "C6zZSBoi55Oxgfxir6AX6YH7Ve5RjCfuQAPTpXsCYeQDkIg6xvVTj ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 37,
        "name": "databases.admin.datasources.jdbc.dsAcmeOracle11g.USERPASSWORD",
        "value": "C6zZSBoi55Oxgfxir6AX6YH7Ve5RjCfuQAPTpXsCYeQDkIg6xvVTj ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 39,
        "name": "databases.admin.datasources.jdbc.dsAcmeOracle12c.USERPASSWORD",
        "value": "MqBvb2IsfX4MITlV1W3SxoYfNhX4xS/KJAsKP85i2Q8a4G+oCiYK ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 41,
        "name": "databases.admin.datasources.jdbc.dsAcmeSqlServer.USERPASSWORD",
        "value": "t0cDdrY54hKNyOibbbdisaUUk+P0z/glf+XV2TwAnalxLtrv8fJi ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 43,
        "name": "databases.admin.datasources.jdbc.dsAcmeMySql4.USERPASSWORD",
        "value": "M/qun/6aOiyklDw1MWAmrLt9k7rQcz77Zt8MRE0w7XdzqxcOjYvS ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }, {
        "id": 45,
        "name": "databases.admin.datasources.jdbc.dsAcmeMySql5.USERPASSWORD",
        "value": "4SQ9CRkgv3jwi4DWJAicjF1rU63q47bxocI7gpd+rbusc65qFlwM ... ",
        "propertyType": "VDP",
        "parentId": 4,
        "undefined": false
    }
]

Solution Manager は、プロパティ password の値を暗号化して返します。

次の URL に DELETE リクエストを送信すると、環境プロパティを削除できます。

  • URL: /vdpProperties/{number:vdpPropertyId}

  • メソッド: DELETE

次の例は、ID が 5 のプロパティを削除します。

DELETE https://solution-manager.acme.com:10090/vdpProperties/5

このプロパティが正常に削除された場合、応答のステータスコードは 204 です。

クラスターのリストの取得

次のリクエストは、環境に含まれるクラスターのリストを返します。

  • URL: /environments/{number:environmentId}/clusters

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、JSON 形式のクラスターのリストが含まれます。各クラスターには次の情報が含まれる可能性があります。

{
    "clusters": [
        {
            "id": <number>,
            "name": <text>,
            "uuid": <uuid>,
            "enabled": <boolean>,
        },
        { ... }
    ]
}

次の例は、2 つのクラスターのリストを返します。

{
    "clusters": [
        {
            "id": 7,
            "name": "Cluster 2",
            "uuid": "a5c4fdea-9545-44d3-b462-44ee4ca3f567",
            "enabled": true
        },
        {
            "id": 8,
            "name": "Cluster 3",
            "uuid": "5a7cd9f1-6444-4900-aafd-b11148681a39",
            "enabled": false
        }
    ]
}

クラスターの作成

次の URL に対して POST リクエストを実行すると、クラスターを作成できます。

  • URL: /clusters

  • メソッド: POST

注釈

この操作では、標準の環境内のクラスターのみを作成できます。

リクエストの本文の形式は次のとおりです。

{
    "name": <text>,
    "description": <text>, /* optional */
    "environmentId": <number>,
    "enabled": <boolean>
}

environmentId は、「 環境のリストの取得 」で取得できる環境 ID です。

クラスターが正常に挿入された場合、応答のステータスコードは 201 です。

次の例は、クラスターを作成する POST リクエストを示しています。

{
    "name": "clusterSample",
    "description": "A cluster sample",
    "environmentId": 1,
    "enabled": true
}

応答の本文に、追加されたクラスターとその ID が含まれます。

{
    "id": 10,
    "name": "clusterSample",
    "uuid": "30facc8e-7973-4817-9e95-8a6e0ebd3b0e",
    "description": "A cluster sample",
    "order": 1,
    "environmentId": 1,
    "enabled": true
}

返される順序は、環境内のクラスターの順序を示します。

クラスターの取得

次のリクエストは、環境に含まれるクラスターのリストを返します。

  • URL: /clusters/{number:clusterId}

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、JSON 形式のクラスターと次の情報が含まれます。

{
    "id": <number>,
    "name": <text>,
    "uuid": <uuid>,
    "description": <text>,
    "order": <number>,
    "environmentId": <number>,
    "enabled": <boolean>
}

次の例は、ID が 10 のクラスターを返します。

{
    "id": 10,
    "name": "clusterSample",
    "uuid": "a5c4fdea-9545-44d3-b462-44ee4ca3f567",
    "description": "A cluster sample",
    "order": 1,
    "environmentId": 1,
    "enabled": true
}

クラスターの更新

次の URL に対して PUT リクエストを実行すると、クラスターを更新できます。

  • URL: /clusters/{number:clusterId}

  • メソッド: PUT

注釈

この操作では、標準の環境内のクラスターのみを更新できます。

リクエストの本文の形式は次のとおりです。

{
    "name": <text>,
    "description": <text>,  /* optional */
    "environmentId": <number>,
    "enabled": <boolean>
}

クラスターが正常に更新された場合、応答のステータスコードは 200 です。

次の例は、ID が 10 のクラスターを更新する PUT リクエストを示しています。

{
    "name": "clusterSample updated",
    "description": "A cluster sample updated",
    "environmentId": 1,
    "enabled": true
}

応答の本文に、更新されたクラスターが含まれます。

{
    "id": 10,
    "name": "clusterSample updated",
    "uuid": "a5c4fdea-9545-44d3-b462-44ee4ca3f567",
    "description": "A cluster sample updated",
    "order": 1,
    "environmentId": 1,
    "enabled": true
}

クラスターの削除

次の URL に DELETE リクエストを送信すると、クラスターを削除できます。

  • URL: /clusters/{number:clusterId}

  • メソッド: DELETE

次の例は、ID が 10 のクラスターを削除します。

DELETE https://solution-manager.acme.com:10090/clusters/10

クラスターが正常に削除された場合、応答のステータスコードは 204 です。この操作は、クラスターに含まれるすべてのサーバーを削除します。

クラスターに関連付けられている Scheduler のプロパティのリストの取得

次の URL は、指定したクラスターの Scheduler のプロパティのリストを返します。

  • URL: /clusters/{number:clusterId}/schProperties

  • メソッド: GET

  • パラメーター:

    • propertyName: 正確なプロパティ名を指定します。

    • projectName: プロジェクト名でプロパティをフィルターします。

    • elementType: エレメントタイプ (データソースなど) でプロパティをフィルターします。

    • elementTypeName: エレメントタイプ名 (VDP など) でプロパティをフィルターします。

    • elementName: エレメント名でプロパティをフィルターします。

URL パスには、クラスターの ID を含める必要があります。次の URL は、ID が 3 のクラスターの Scheduler のプロパティを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/cluster/3/schProperties"

クラスターのプロパティをフィルターするための任意のリクエストパラメーター

次の URL は、パラメーター propertyName を指定して、名前が SolutionManager.dataSource.ITP.itpds.dbName の Scheduler のプロパティを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/4/schProperties?propertyName=SolutionManager.dataSource.ITP.itp.dbName"

注釈

propertyName を指定した場合、その他のパラメーターは無視されます。

パラメーター projectName は、プロジェクトでプロパティをフィルターします。次の URL は、 SolutionManager.* に一致するすべてのプロパティを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/2/schProperties?projectName=SolutionManager"

パラメーター elementType は、エレメントタイプでプロパティをフィルターします。次の URL は、 *.datasource.* に一致するすべてのプロパティを返します (例: SolutionManager.dataSource.ITP.itpds.host)。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/2/schProperties?elementType=datasource"

パラメーター elementName は、エレメントタイプ名でプロパティをフィルターします。次の URL は、 ITP に関連するすべてのプロパティを返します (例: SolutionManager.dataSource.ITP.itpds.host)。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/2/schProperties?elementTypeName=ITP"

パラメーター elementName は、エレメント名でプロパティをフィルターします。次の URL は、名前が itpds のデータソースのプロパティを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/2/schProperties?elementName=itpds"

パラメーター propertyName を除き、同じリクエスト内で複数のパラメーターを組み合わせて使用できます。たとえば、次の URL は、プロジェクト SolutionManager のデータソースのすべてのプロパティを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/clusters/2/schProperties?projectName=SolutionManager&elementType=datasource"

クラスターのプロパティの作成および削除

次の URL に対して POST リクエストを実行すると、クラスターのプロパティを作成できます。

  • URL: /clusters/{number:clusterId}/schProperties

  • メソッド: POST

リクエストの本文に、次の形式に従ってプロパティのリストを含める必要があります。

[
   {
        "name" : <text>,
        "value" : <text>,
        "undefined" : <boolean>, /* optional */
        "valueEncrypted" : <boolean> /* optional */
   },
   { ... }
]

undefined 属性は任意です。これを指定しないと、この値はデフォルトで false に設定されます。

属性 valueEncrypted を指定する際には、以下の点に留意してください。

  • Solution Manager は、データソースやユーザーアカウントなどの値のパスワードを表すプロパティの値を暗号化して保存します。ただし、API を使用してこのようなプロパティを定義する場合は、プロパティの値を暗号化して送信することも、クリアテキストで送信することもできます。

    Solution Manager で暗号化して保存される値には、そのエレメントの VQL をエクスポートした場合に、値の横にトークン ENCRYPTED が付きます。

  • valueEncryptedtrue の場合、 value が暗号化されていることを示します。

    値を暗号化するには、スクリプト <SOLUTION_MANAGER_HOME>/bin/encrypt_password を使用します。

  • valueEncryptedfalse の場合、 value はクリアテキストとして扱われます。

  • valueEncrypted は任意です。これを定義していない場合に、このプロパティがパスワードを表すときは、API はそのパスワードを復号化しようとします。パスワードを復号化できない場合、そのパスワードはクリアテキストとして扱われます。

次の例は、いくつかのプロパティを作成する POST リクエストを示しています。

[
    {
        "name": "default.dataSource.VDP.vdp.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp.password",
        "value": "5Aq8JFwEcYWcfIXzZiC8jkxXLqyiKshHGf+TIY0pky/kK1KBkyg3 ... "
    }, {
        "name": "default.dataSource.VDP.vdp2.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp2.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp2.password",
        "value": "5Aq8JFwEcYWcfIXzZiC8jkxXLqyiKshHGf+TIY0pky/kK1KBkyg3 ... ",
        "valueEncrypted": true
    }, {
        "name": "default.dataSource.VDP.vdp3.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp3.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp3.password",
        "value": "TCcNJ8G5vxpKrjXAYWQtKtvUiQ/qh8hT9gnXdUzxIxft45Civz8i ... "
    }, {
        "name": "default.dataSource.VDP.vdp4.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp4.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp4.password",
        "value": "TCcNJ8G5vxpKrjXAYWQtKtvUiQ/qh8hT9gnXdUzxIxft45Civz8i ... ",
        "valueEncrypted": true
    }, {
        "name": "default.dataSource.VDP.vdp5.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp5.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp5.password",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp6.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin"
    }, {
        "name": "default.dataSource.VDP.vdp6.login",
        "value": "admin"
    }, {
        "name": "default.dataSource.VDP.vdp6.password",
        "value": "admin",
        "valueEncrypted": false
    }, {
        "name": "undefinedProperty",
        "value": "",
        "undefined": true
    }
]

この例は、データソース password を追加するために、次のような複数の値がサポートされていることを示しています。

  • データソース vdp および vdp2 用の、Scheduler サーバーによって暗号化された値「admin」

  • vdp3 および vdp4 用の、encrypt_password スクリプトを使用して暗号化された値「admin」

  • vdp5 および vdp6 用の暗号化されていない値「admin」

応答の本文に、作成されたプロパティとその ID が含まれます。

[
    {
        "id": 45,
        "name": "default.dataSource.VDP.vdp.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 46,
        "name": "default.dataSource.VDP.vdp.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 47,
        "name": "default.dataSource.VDP.vdp.password",
        "value": "5Aq8JFwEcYWcfIXzZiC8jkxXLqyiKshHGf+TIY0pky/kK1KBkyg3 ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 49,
        "name": "default.dataSource.VDP.vdp2.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 50,
        "name": "default.dataSource.VDP.vdp2.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 51,
        "name": "default.dataSource.VDP.vdp2.password",
        "value": "5Aq8JFwEcYWcfIXzZiC8jkxXLqyiKshHGf+TIY0pky/kK1KBkyg3 ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 53,
        "name": "default.dataSource.VDP.vdp3.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 54,
        "name": "default.dataSource.VDP.vdp3.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 55,
        "name": "default.dataSource.VDP.vdp3.password",
        "value": "Ag/hk7xFu9t+DdFOwHm7U+fNMHn8QJsJ26gfXMk/UeTgfPcNNyH1 ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 57,
        "name": "default.dataSource.VDP.vdp4.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 58,
        "name": "default.dataSource.VDP.vdp4.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 59,
        "name": "default.dataSource.VDP.vdp4.password",
        "value": "gS6vbKXngsHVE2eIWYMYZIlCmtTRwIBnokVg2sgjj/JlkLMnLj7l ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 61,
        "name": "default.dataSource.VDP.vdp5.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 62,
        "name": "default.dataSource.VDP.vdp5.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 63,
        "name": "default.dataSource.VDP.vdp5.password",
        "value": "WdaU+vTYcAvjPrCBpDZbSrR3CvegkbPBCZtpv/amhDpxLoZMLmmw ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 65,
        "name": "default.dataSource.VDP.vdp6.connectionURI",
        "value": "//solution-manager.acme.com:19999/admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 66,
        "name": "default.dataSource.VDP.vdp6.login",
        "value": "admin",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 67,
        "name": "default.dataSource.VDP.vdp6.password",
        "value": "s0jcp9bWAR8drBZTGn4j3BMbQzpvSVaG96+YdJVw9Jb0AgSyVDp1 ... ",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": false
    },
    {
        "id": 69,
        "name": "undefinedProperty",
        "value": "",
        "propertyType": "SCHEDULER",
        "parentId": 5,
        "undefined": true
    }
]

この操作は、パスワードを暗号化して返します。

次の URL に DELETE リクエストを送信すると、クラスターのプロパティを削除できます。

  • URL: /schProperties/{number:schPropertyId}

  • メソッド: DELETE

次の例は、ID が 5 のプロパティを削除します。

DELETE https://solution-manager.acme.com:10090/schProperties/5

このプロパティが正常に削除された場合、応答のステータスコードは 204 です。

サーバーのリストの取得

次のリクエストは、環境に含まれるサーバーのリストを返します。

  • URL: /environments/{number:environmentId}/servers

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、JSON 形式のサーバーのリストと基本情報が含まれます。各サーバーには次の情報が含まれる可能性があります。

{
    "servers": [
        {
            "id": <number>,
            "name": <text>,
            "typeNode": <type-node>,
            "clusterId": <number>,  /* id of the cluster to which it belongs */
            "enabled": <boolean>
        },
        { ... }
    ]
}

<type-node> ::= "VDP" | "SCHEDULER" | "ITP_BROWSER_POOL" | "ITP_VERIFICATION" | "VDP_DATA_CATALOG"

次の例は、ID が 6 の環境のサーバーを取得します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/environments/6/servers"
応答
 {
     "servers": [
         {
             "id": 9,
             "name": "vdpServer",
             "typeNode": "VDP",
             "clusterId": 7,
             "enabled": true
         },
         {
             "id": 10,
             "name": "schedulerServer",
             "typeNode": "SCHEDULER",
             "clusterId": 7,
             "enabled": true
         }
     ]
 }

サーバーに関するその他の情報を取得するには、「 サーバーの取得 」を参照してください。

サーバーの作成

次の URL に対して POST リクエストを実行すると、サーバーを作成できます。

  • URL: /servers

  • メソッド: POST

注釈

この操作では、標準の環境内のサーバーのみを作成できます。

リクエストの本文の形式は次のとおりです。

{
    "id": <number> ,
    "name": <text> ,
    "description": <text> , /* optional */
    "typeNode": <node type> ,
    "urlIP": <text> ,
    "urlPort": <number> ,
    "clusterId": <number> ,
    "useKerberos": <boolean> ,
    "usePassThrough": <boolean> ,
    "username": <text> ,
    "password": <text> ,
    "defaultDatabase": <text> ,
    "enabled": <boolean> ,
    "licenseAlias": <text> , /* optional */
    "useDefaultLicenseAlias": <boolean>,
    "environmentType": <environment type>  /* only "STANDARD" <environment type> is supported */
}

<node type>::=
      "VDP"
    | "SCHEDULER"
    | "ITP_BROWSER_POOL"
    | "ITP_VERIFICATION"
    | "VDP_DATA_CATALOG"

<environment type>::= "STANDARD" | "AUTOMATED_AWS"

clusterId は、「 クラスターのリストの取得 」で取得可能なクラスター ID である必要があります。

password には、以下の値を指定できます。

  • 暗号化されていないパスワード

  • <SOLUTION_MANAGER_HOME>/bin にある encrypt_password スクリプトを使用して暗号化されたパスワード

useDefaultLicenseAlias が true の場合、licenseAlias フィールドを省略するか、このフィールドに空の文字列を使用できます。useDefaultLicenseAlias が false の場合、「 利用可能なライセンスのリストの取得 」で取得可能なライセンスのエイリアスを指定する必要があります。サーバーが正常に挿入された場合、応答のステータスコードは 201 です。

次の例は、サーバーを作成する POST リクエストを示しています。

{
    "name": "vdpLocal",
    "description": "",
    "typeNode": "VDP",
    "urlIP": "cajun",
    "urlPort": 9999,
    "clusterId": 11,
    "useKerberos": false,
    "usePassThrough": false,
    "username": "admin",
    "password": "admin",
    "defaultDatabase": "admin",
    "enabled": true,
    "licenseAlias": "",
    "useDefaultLicenseAlias": true,
    "environmentType": "STANDARD"
}

この例では、password は暗号化されていないパスワードです。このパスワードが encrypt_password を使用して生成されたものである場合、password は次のようになります。

"password": "8seLz7OWe6SRc9ivmekrkE+NTn8DzGxy",

応答の本文に、追加されたサーバーとその ID が含まれます。

{
    "id": 12,
    "name": "vdpLocal",
    "uuid": "e8b408c3-8b7d-4d28-a98a-ac448c08b98a",
    "description": "",
    "typeNode": "VDP",
    "urlIP": "cajun",
    "urlPort": 9999,
    "clusterId": 11,
    "useKerberos": false,
    "usePassThrough": false,
    "username": "admin",
    "defaultDatabase": "admin",
    "enabled": true,
    "licenseAlias": "",
    "useDefaultLicenseAlias": true,
    "environmentType": "STANDARD",
    "environmentId": 2
}

サーバーの取得

次のリクエストはサーバーを返します。

  • URL: /servers/{number:serverId}

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、JSON 形式のサーバーと次の情報が含まれます。

{
    "id": <number>,
    "name": <text>,
    "uuid": <uuid>,
    "description": <text>,
    "typeNode": <node type>,
    "urlIP": <text>,
    "urlPort": <number>,
    "clusterId": <number>,
    "useKerberos": <boolean>,
    "usePassThrough": <boolean>,
    "username": <text>,
    "defaultDatabase": <text>,
    "enabled": <boolean>,
    "licenseAlias": <text>,
    "useDefaultLicenseAlias": <boolean>,
    "environmentType": <environment type>,
    "environmentId": <number>
}

<node type>::=
      "VDP"
    | "SCHEDULER"
    | "ITP_BROWSER_POOL"
    | "ITP_VERIFICATION"
    | "VDP_DATA_CATALOG"

<environment type>::= "STANDARD" | "AUTOMATED_AWS"

値が Null のプロパティは JSON に含まれません。

次の例は、ID が 12 のサーバーを返します。

{
    "id": 12,
    "name": "vdpLocal",
    "uuid": "e8b408c3-8b7d-4d28-a98a-ac448c08b98a",
    "description": "",
    "typeNode": "VDP",
    "urlIP": "cajun",
    "urlPort": 9999,
    "clusterId": 11,
    "useKerberos": false,
    "usePassThrough": false,
    "username": "admin",
    "defaultDatabase": "admin",
    "enabled": true,
    "licenseAlias": "",
    "useDefaultLicenseAlias": true,
    "environmentType": "STANDARD",
    "environmentId": 2
}

サーバーの更新

次の URL に対して PUT リクエストを実行すると、サーバーを更新できます。

  • URL: /servers/{number:serverId}

  • メソッド: PUT

注釈

この操作では、標準の環境内のサーバーのみを更新できます。

リクエストの本文の形式は次のとおりです。

{
    "name": <text>,
    "description": <text>,  /* optional */
    "typeNode": <node type>,
    "urlIP": <text>,
    "urlPort": <number>,
    "clusterId": <number>,
    "useKerberos": <boolean>,
    "usePassThrough": <boolean>,
    "username": <text>,
    "password": <text>,
    "defaultDatabase": <text>,
    "enabled": <boolean>,
    "licenseAlias": <text>,  /* optional */
    "useDefaultLicenseAlias": <boolean>,
    "environmentType": <environment type>
}

<node type>::=
      "VDP"
    | "SCHEDULER"
    | "ITP_BROWSER_POOL"
    | "ITP_VERIFICATION"
    | "VDP_DATA_CATALOG"

<environment type>::= "STANDARD" | "AUTOMATED_AWS"

注釈

password には、以下の値を指定できます。

  • ********」 (8 個のアスタリスク)、この値を指定した場合、password の値は変更されません。

  • 暗号化されていないパスワード

  • <SOLUTION_MANAGER_HOME>/bin にある encrypt_password スクリプトを使用して暗号化されたパスワード

サーバーが正常に更新された場合、応答のステータスコードは 200 です。

次の例は、ID が 12 のサーバーを更新する PUT リクエストを示しています。

{
    "name": "vdpLocal-modif",
    "description": "",
    "typeNode": "VDP",
    "urlIP": "cajun",
    "urlPort": 9999,
    "clusterId": 11,
    "useKerberos": false,
    "usePassThrough": false,
    "username": "admin",
    "password": "********",
    "defaultDatabase": "admin",
    "enabled": true,
    "licenseAlias": "",
    "useDefaultLicenseAlias": true,
    "environmentType": "STANDARD"
}

応答の本文に、更新されたサーバーが含まれます。

{
    "id": 12,
    "name": "vdpLocal-modif",
    "uuid": "e8b408c3-8b7d-4d28-a98a-ac448c08b98a",
    "description": "",
    "typeNode": "VDP",
    "urlIP": "cajun",
    "urlPort": 9999,
    "clusterId": 11,
    "useKerberos": false,
    "usePassThrough": false,
    "username": "admin",
    "defaultDatabase": "admin",
    "enabled": true,
    "licenseAlias": "",
    "useDefaultLicenseAlias": true,
    "environmentType": "STANDARD",
    "environmentId": 2
}

サーバーの削除

次の URL に DELETE リクエストを送信すると、サーバーを削除できます。

  • URL: /servers/{number:serverId}

  • メソッド: DELETE

次の例は、ID が 12 のプロパティを削除します。

DELETE https://solution-manager.acme.com:10090/servers/12

サーバーが正常に削除された場合、応答のステータスコードは 204 です。

リビジョンのリストの取得

次の URL は、リビジョンのリストを返します。

  • URL: /revisions

  • メソッド: GET

  • パラメーター:

    • start: 返されるコレクションの最初のエレメントを指定します。

    • count: 返される結果の最大数を指定します。

応答の本文に、次の形式に従ってリビジョンのリストが含まれます。

{
    "start": <number> , /* specifies the first revision of the collection to be returned */
    "count": <number> , /* maximum number of revisions to be returned */
    "numElements": <number> , /* total number of revisions included in the response */
    "revisions": [{
            "id": <number> ,
            "description": <text> ,
            "name": <text> ,
            "type": { "INSERT" | "DELETE" }, /* alias for CREATE and DROP */
            "replace": <replace-drop Virtual DataPort elements> ,
            "creationUser": <text>,
            "creationTime": <date>, /* date format: yyyy-MM-dd'T'HH:mm:ss.SSZ */
            "lastModifiedUser": <text>,
            "lastModifiedTime": <date>, /* date format: yyyy-MM-dd'T'HH:mm:ss.SSZ */
            "hasVql": <boolean>,
            "hasScheduler": <boolean>,
            "includeJars": <boolean>,
            "includeI18N": <boolean>,
            "includeStatistics": <boolean>,
            "includeServerProperties": <boolean>,
            "includeWebContainerProperties": <boolean>,
            "includeJdbcWrapperProperties": <boolean>,
            "includeVdpDependencies": <boolean>,
            "useDefaultDatabase": <boolean>,
            "deployedOn": [/* list of environments in which the revision was already deployed */
                {
                    "id": <number> ,
                    "name": <text> ,
                    "description": <text> ,
                    "minimumUpdateMandatory": <boolean>
                }, {
                    ...
                }
            ]
        }, {
            ...
        }
    ]
}

<replace-drop Virtual DataPort elements>::=
      "DO_NOT_REPLACE_EXISTING"
    | "REPLACE_EXISTING"
    | "DROP_ELEMENTS_BEFORE"

次の例は、JSON 形式の 2 つのリビジョンを表しています。最初のリビジョンは 2 つの環境にデプロイされていて、2 つ目のリビジョンはいずれの環境にもデプロイされていません。

{
   "start": 0,
   "count": 10,
   "numElements": 2,
   "revisions": [
        {
            "id": 3,
            "description": "Third revision",
            "name": "Revision 3",
            "type": "INSERT",
            "replace": "DO_NOT_REPLACE_EXISTING",
            "creationUser": "smadmin",
            "creationTime": "2017-11-11T00:15:34.507+0000",
            "lastModifiedUser": "smadmin",
            "lastModifiedTime": "2017-11-11T00:15:34.507+0000",
            "hasVql": true,
            "hasScheduler": false,
            "includeJars": false,
            "includeI18N": false,
            "includeStatistics": false,
            "includeServerProperties": false,
            "includeWebContainerProperties": false,
            "includeJdbcWrapperProperties": true,
            "includeVdpDependencies": false,
            "useDefaultDatabase": true,
            "deployedOn": [
                {
                    "id": 2,
                    "name": "Environment 2",
                    "description": "Second environment",
                    "minimumUpdateMandatory": false
                },
                {
                    "id": 3,
                    "name": "Environment 3",
                    "description": "Third environment",
                    "minimumUpdateMandatory": false
                }
            ]
        },
        {
            "id": 2,
            "description": "Second revision",
            "name": "Revision 2",
            "type": "DELETE",
            "replace": "DROP_ELEMENTS_BEFORE",
            "creationUser": "smadmin",
            "creationTime": "2017-11-11T00:15:34.429+0000",
            "lastModifiedUser": "smadmin",
            "lastModifiedTime": "2017-11-11T00:15:34.429+0000",
            "hasVql": true,
            "hasScheduler": false,
            "includeJars": false,
            "includeI18N": false,
            "includeStatistics": false,
            "includeServerProperties": false,
            "includeWebContainerProperties": false,
            "includeJdbcWrapperProperties": true,
            "includeVdpDependencies": false,
            "useDefaultDatabase": true
        }
    ]
}

VQL ファイルからのリビジョンの作成

次の URL に対して POST リクエストを実行すると、VQL ファイルからリビジョンを作成できます。

  • URL: /revisions/loadFromVQL

  • メソッド: POST

リクエストの本文の形式は次のとおりです。

{
    "name": <text>, /* descriptive name for the revision*/
    "description": <text>,  /* optional. Extensive description about the revision. */
    "content": <text> /* vql file content as **xsd:base64Binary** encoded in **UTF-8** */
}

注釈

フィールド content は vql ファイルの内容である必要があり、その形式は UTF-8 でエンコードされた xsd:base64Binary でなければなりません。リビジョンは、vql ファイルが環境プロパティでパラメーター化されていない場合でも作成されます。vql ファイルを生成する際は常に、環境固有のプロパティを別途生成することを強くお勧めします。VDP Admin Tool を使用して vql ファイルを生成する場合、[Export] ダイアログと [Export database] ダイアログで [Export environment specific properties separately] オプションを選択する必要があります。このオプションを選択しない場合は、vql に環境プロパティの値が含まれていないことを確認してください。別個の環境プロパティなしに vql から作成したリビジョンをデプロイすると、予期しない結果が生じる可能性があることに注意してください。

注釈

VDP Admin Tool を使用してエレメントをエクスポートする際に生成される vql ファイルには、UTF-8 でエンコードされていることを示す BOM マークが含まれます。 BOM マークはスキップする必要があります。

応答の本文に、追加されたリビジョンとその ID が含まれます。

{
    "id": 4,
    "description": "Creating revision using exportTestDB-WithProperties",
    "name": "revFromVQLWithProperties",
    "type": "VQL",
    "replace": "REPLACE_EXISTING",
    "creationUser": "admin",
    "creationTime": "2019-08-27T15:22:59.292+0000",
    "lastModifiedUser": "admin",
    "lastModifiedTime": "2019-08-27T15:22:59.292+0000",
    "hasVql": false,
    "hasScheduler": false,
    "includeJars": false,
    "includeI18N": false,
    "includeStatistics": false,
    "includeServerProperties": false,
    "includeWebContainerProperties": false,
    "includeJdbcWrapperProperties": true,
    "includeVdpDependencies": false,
    "useDefaultDatabase": true
}

デプロイのリストの取得

次の URL は、デプロイのリストを返します。

  • URL: /deployments

  • メソッド: GET

  • パラメーター:

    • start: 返されるコレクションの最初のデプロイを指定します。

    • count: 返されるデプロイの最大数を指定します。

    • environmentId: ターゲット環境でデプロイをフィルターします。

    • status: 実行ステータス (OKERRORIN_PROGRESS) でデプロイをフィルターします。

    • description: 説明でデプロイをフィルターします。

    • user: ユーザーでデプロイをフィルターします。

    • startDeploymentTime: デプロイ開始時間でデプロイをフィルターします。日付の形式は、 yyyy-MM-dd'T'HH:mm:ssZ です。

    • endDeploymentTime: デプロイ終了時間でデプロイをフィルターします。日付の形式は、 yyyy-MM-dd'T'HH:mm:ssZ です。

応答の本文に、次のテンプレートに従って JSON 形式のデプロイが含まれます。

{
    "start": <number>,
    "count": <number>,
    "numElements": <number>,
    "deployments": [{
            "id": <number>,
            "user": <text>,
            "deploymentTime": <date>, /* date format: yyyy-MM-dd'T'HH:mm:ss.SSZ */
            "description": <text>,
            "state": <deployment status>,
            "multipleErrors": <boolean>,
            "targetEnvironment": {
                "id": <number>,
                "name": <text>,
                "minimumUpdateMandatory": <boolean>
            },
            "revisions": [{
                    "id": <number>,
                    "description": <text>,
                    "name": <text>,
                    "includeJars": <boolean>,
                    "includeI18N": <boolean>,
                    "includeStatistics": <boolean>,
                    "includeServerProperties": <boolean>,
                    "includeWebContainerProperties": <boolean>,
                    "includeJdbcWrapperProperties": <boolean>,
                    "includeVdpDependencies": <boolean>
                }, { ... }
            ],
        }, { ... }
    ]
}

<deployment status>::=
      "OK"
    | "ERROR"
    | "IN_PROGRESS"
    | "PENDING"
    | "CANCELLED"

次の例は、2 つのデプロイのリストを返します。

{
    "start": 0,
    "count": 10,
    "numElements": 2,
    "deployments": [{
            "id": 28,
            "user": "admin",
            "deploymentTime": "2017-11-12T23:05:53.179+0000",
            "description": "",
            "targetEnvironment": {
                "id": 3,
                "name": "Environment 3",
                "minimumUpdateMandatory": false
            },
            "revisions": [{
                    "id": 3,
                    "description": "Third revision",
                    "name": "Revision 3",
                    "includeJars": false,
                    "includeI18N": false,
                    "includeStatistics": false,
                    "includeServerProperties": false,
                    "includeWebContainerProperties": false,
                    "includeJdbcWrapperProperties": true,
                    "includeVdpDependencies": false
                }
            ],
            "state": "OK",
            "multipleErrors": false
        }, {
            "id": 27,
            "user": "admin",
            "deploymentTime": "2017-11-12T23:05:40.838+0000",
            "description": "",
            "targetEnvironment": {
                "id": 3,
                "name": "Environment 3",
                "minimumUpdateMandatory": false
            },
            "revisions": [{
                    "id": 3,
                    "description": "Third revision",
                    "name": "Revision 3",
                    "includeJars": false,
                    "includeI18N": false,
                    "includeStatistics": false,
                    "includeServerProperties": false,
                    "includeWebContainerProperties": false,
                    "includeJdbcWrapperProperties": true,
                    "includeVdpDependencies": false
                }
            ],
            "state": "OK",
            "multipleErrors": false
        }
    ]
}

次の URL は、 2017-11-07T16:50:32+0100 から 2017-11-15T16:50:33+0100 までのデプロイのリストを返します。 startDeploymentTime パラメーターと endDeploymentTime パラメーターの両方を一緒に指定する必要があります。

curl --user "jsmith" "https://solution-manager.acme.com:10090/deployments?startDeploymentTime=2017-11-07T16%3A50%3A32%2B0100&endDeploymentTime=2017-11-15T16%3A50%3A33%2B0100"

次の URL は、進行中のデプロイのリストを返します。

curl --user "jsmith" "https://solution-manager.acme.com:10090/deployments?status=IN_PROGRESS"

リビジョンのリストからの新規デプロイの開始

次の URL に POST リクエストを送信すると、新規デプロイを実行できます。

  • URL: /deployments

  • メソッド: POST

リクエストの本文は、次のテンプレートに従う必要があります。

{
    "revisionIds": [ <number>, ... ],
    "environmentId": <number>,
    "description": <text>
}

このリクエストには、リビジョン ID (revisionIds) のリストに加え、ターゲット環境の ID (environmentId) も含める必要があります。次の例は、ID が 3 のターゲット環境にリビジョン 1 と 2 からデプロイを作成します。

{
    "revisionIds": [1, 2],
    "environmentId": 3,
    "description": "My first deployment"
}

デプロイが正常に作成された場合、応答の本文に、数値形式のデプロイ ID が含まれます。

{
    "deploymentId": 7,
}

ターゲット環境で指定されていないプロパティがある場合、デプロイプロセスは失敗し、応答の本文は検証の結果を返します。

{
    "validationResponse": {
        "validation": {
            "resultVqlValidation": "ERROR",
            "outputVqlValidation": "Error validating revision 'Third revision'.\n Missing VQL properties: \ndatabases.admin.datasources.jdbc.oracle_ds.DATABASEURI\ndatabases.admin.datasources.jdbc.oracle_ds.USERNAME\ndatabases.admin.datasources.jdbc.oracle_ds.USERPASSWORD\ndatabases.admin.datasources.jdbc.oracle_ds.USERPASSWORD.ENCRYPTED\nusers.user1.PASSWORD\nusers.user1.PASSWORD.ALGORITHM\nusers.user1.PASSWORD.ENCRYPTED\n\n",
            "errorVqlValidation": "Error validating revision 'Third revision'.\n Some Virtual DataPort properties required by the revision are not defined in the target environment\n\n",
            "missingVqlPropertiesWithServerValues": {
                "users.user1.PASSWORD": "ISTcnym4dJECzqYlA7+Xv6+RJo5s0VupzxEhXqoXC9XHu+5+M03kn3ftHGwW57FB5Q1d4Glcad4g54l9iBdEm55U431gIeob",
                "users.user1.PASSWORD.ALGORITHM": "SHA512",
                "databases.admin.datasources.jdbc.oracle_ds.USERPASSWORD.ENCRYPTED": "ENCRYPTED",
                "databases.admin.datasources.jdbc.oracle_ds.USERPASSWORD": "hJfznA24IFFPM8Z+6qCDO6Kg2Z3OSjP8W+uooHqFUpp8MoJT1FC3gdgsFe8cyh+Xmvu0dPIkFY21fidp75fqE4euFqx9QpH4Y8gcRE3CaeszFlB97AXg4dJ99eJFbWZ7",
                "users.user1.PASSWORD.ENCRYPTED": "ENCRYPTED",
                "databases.admin.datasources.jdbc.oracle_ds.USERNAME": "dblogin",
                "databases.admin.datasources.jdbc.oracle_ds.DATABASEURI": "jdbc:oracle:thin:@host:port:database"
            },
            "resultSchValidation": "OK",
            "outputSchValidation": "",
            "errorSchValidation": "",
            "targetEnvironment": {
                "id": 1,
                "name": "env1",
                "uuid": "9417994b-3657-499a-a3b0-234cab5dfc07",
                "description": "",
                "minimumUpdateValue": "",
                "minimumUpdateMandatory": false,
                "minimumUpdateDownloadUrl": "",
                "licenseAlias": "PRODUCTION_1"
            },
            "state": "ERROR",
            "messageResult": "Some of the Virtual DataPort properties included in the revision are not defined in the target environment. "
        },
        "scriptValidationsResult": []
    }
}

デプロイの進行状況の取得

次の URL は、デプロイのステータスとデプロイタスクのリストを返します。

  • URL: /deployments/{number:deploymentId}/progress

  • メソッド: GET

  • パラメーター

    • lastUpdate: 最終更新日でデプロイタスクをフィルターします。

応答の本文に、次のテンプレートに従ってデプロイの進行状況とデプロイタスクのリストが含まれます。

{
    "deploymentId": <number>,
    "state": <deployment state>,
    "progress": <number>, /* percent between 0 and 100 */
    "tasks": [{
            "id": <number>,
            "name": <text>,
            "state": <deployment task state>,
            "startDate": <date>,
            "endDate": <date>,
            "deploymentExecutionType": <deployment execution type>,
            "output": <text>,
            "cluster": {
                "id": <number>,
                "name": <text>,
                "enabled": <boolean>
            },
            "server": {
                "id": <number>,
                "name": <text>,
                "enabled": <boolean>,
                "useDefaultLicenseAlias": <boolean>
            }
        }, { ... }
    ]
}

<deployment state> ::=
      "OK"
    | "ERROR"
    | "IN_PROGRESS"

<deployment task state> ::=
      "OK"
    | "ERROR"
    | "IN_PROGRESS"
    | "PENDING"
    | "WARNING"
    | "SKIPPED"
    | "CANCELLED"

 <deployment execution type> ::=
      "VQL"
    | "SCH"
    | "CACHE"
    | "DATACATALOG_SYNC"
    | "SCRIPT_CLUSTER"
    | "SCRIPT_SERVER"
    | "BACKUP"
    | "ROLLBACK"
    | "SERVER_DEPLOYMENT"
    | "CLUSTER_DEPLOYMENT"

任意のリクエストパラメーター lastUpdate は、最終更新日でタスクをフィルターします。このパラメーターを指定した場合、応答の本文には、この日付以降に変更されたタスクのみが含まれます。

次の例は、実行タスク 1 のデプロイの進行状況を示しています。

{
    "deploymentId": 1,
    "state": "OK",
    "progress": 100,
    "tasks": [{
            "id": 1,
            "name": "Revision Revision 1 VQL deployment",
            "state": "OK",
            "startDate": "2017-11-13T11:18:40.999+0000",
            "endDate": "2017-11-13T11:18:41.065+0000",
            "deploymentExecutionType": "VQL",
            "output": " - Executed 1 of 1 VQL commands",
            "cluster": {
                "id": 7,
                "name": "Cluster 2",
                "enabled": true
            },
            "server": {
                "id": 8,
                "name": "Server 3",
                "enabled": true,
                "useDefaultLicenseAlias": true
            }
        }
    ]
}

ライセンス使用の解放

Denodo サーバー (Virtual DataPort サーバー、Scheduler サーバーなど) を停止すると、そのサーバーから License Manager に HTTP リクエストが送信され、そのサーバーが停止することが通知されます。License Manager がこのリクエストを受信すると、対応するライセンスを解放し、別のサーバーで使用できるようにします。

Denodo サーバーが予期せず動作を停止した場合 (サーバーが実行されているマシンが予期せず再起動した場合など) は、この Denodo サーバーで使用していたライセンスが使用されなくなったことを License Manager に手動で通知する必要があります。そうしないと、 猶予期間 が終了するまで (この Denodo サーバーのライセンスの最終更新日から 5 日間) ライセンスは使用中であると見なされます。

ライセンスを解放するには、Solution Manager にログインします。エレメントツリーで、解放するライセンスを使用しているサーバーの定義を開き、 Host フィールドをコピーします。

次に、以下のエンドポイントにリクエストを送信します。

  • URL: /externalShutdown

  • メソッド: GET

  • URL パラメーター:

    • nodeIp: Solution Manager の Host フィールドがホスト名ではなく IP アドレスである場合、このパラメーターの値はその IP アドレスにする必要があります。

    • hostDomainName: Solution Manager の Host フィールドがホスト名である場合、このパラメーターの値はそのホスト名にする必要があります。

    • port: Denodo サーバーのポート。

    • product: この値は VDP にする必要があります。

以下の点に留意してください。

  • パラメーターの名前では大文字と小文字が区別されます。

  • URL にはパラメーター nodeIp または hostDomainName を追加する必要があります。両方を追加することはできません。

  • 未指定のパラメーターがあると、サービスは HTTP コード 400 (無効なリクエスト) を返します。

  • このページで説明している他のエンドポイントとは異なり、HTTP ヘッダー Cookie をリクエストに追加しないでください。

  • このページで説明している他のエンドポイントとは異なり、このエンドポイントは Solution Manager サーバーではなく License Manager サーバーであるため、ポートが異なります (デフォルト値は 10091 で、他の操作の 10090 とは異なります)。

例 1

ホスト denodo-dv1-prod.denodo.com で実行されている Virtual DataPort サーバーに関連付けられているライセンスを解放します。

curl --user "jsmith" "https://solution-manager.acme.com:10091/externalShutdown?hostDomainName=denodo-dv1-prod.denodo.com&port=9999&product=VDP"

例 2

IP アドレスが 192.168.0.120 のホストで実行されている Virtual DataPort サーバーに関連付けられているライセンスを解放します。

curl --user "jsmith" "https://solution-manager.acme.com:10091/externalShutdown?nodeIp=192.168.0.120&port=9999&product=VDP"

サービスからの応答には、操作の概要、および結果とメッセージが含まれます。

{
    "result": { "OK" | "ERROR" },
    "message": <text>
}

License Manager サーバーへの ping の実行

エンドポイント「pingLicenseManager」を使用して、License Manager の状態を確認します。

  • URL: https://denodo-server.acme.com:10091/pingLicenseManager

  • メソッド: GET

リクエストの送信先は、Solution Manager ではなく License Manager (デフォルトのポートは 10091) であることに注意してください。

サーバーが稼働中で、そのメタデータの保存先のデータベースが稼働中の場合、このエンドポイントから HTTP コード 200 とテキスト OK が返されます。そうでない場合、リクエストは失敗します。

Solution Manager サーバーへの ping の実行

エンドポイント「pingSolutionManager」を使用して、Solution Manager サーバーの状態を確認します。

  • URL: https://denodo-server.acme.com:10090/pingSolutionManager

  • メソッド: GET

サーバーが稼働中で、そのメタデータの保存先のデータベースが稼働中の場合、このエンドポイントから HTTP コード 200 とテキスト OK が返されます。そうでない場合、リクエストは失敗します。