USER MANUALS

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>,  /* license 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 を返します。

AWS グローバル資格情報の更新

8.0 update 20210715 以降で 可能

この操作を実行すると、 グローバル AWS 資格情報のアクセスキー を更新できます。

  • URL: /configuration/credentials/aws

  • メソッド: POST

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

    {
        "accessKeyId": <text>, /* Mandatory. Access key id */
        "secretAccessKey": <text>  /* Mandatory. Secret access key */
    }
    

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

  • どちらのパラメータも必須です (accessKeyIdsecretAccessKey)。

  • secretAccessKey の値はプレーンテキストまたは暗号化した値を指定します。暗号化には <SOLUTION_MANAGER_HOME>/bin/encrypt_password スクリプトを使用してください。

注釈

この操作ではグローバル AWS 資格情報のみを更新できます。

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

AWS グローバル資格情報を更新する POST リクエストの例:

{
    "accessKeyId" : "accessKeyId",
    "secretAccessKey" : "clearOrEncryptedSecretAccessKey"
}

AWS 環境資格情報の更新

8.0 update 20210715 以降で 可能

この操作を実行すると、特定の AWS 環境の資格情報を更新できます。

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

  • メソッド: POST

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

    {
        "accessKeyId": <text>, /* Mandatory. Access key id */
        "secretAccessKey": <text>  /* Mandatory. Secret access key */
    }
    

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

  • どちらのパラメータも必須です (accessKeyIdsecretAccessKey)。

  • secretAccessKey の値はプレーンテキストまたは暗号化した値を指定します。暗号化には <SOLUTION_MANAGER_HOME>/bin/encrypt_password スクリプトを使用してください。

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

ID が 1 の AWS 環境の資格情報を更新する POST リクエストの例:

POST https://solution-manager.acme.com:10090/environments/1/credentials
{
    "accessKeyId" : "accessKeyId",
    "secretAccessKey" : "clearOrEncryptedSecretAccessKey"
}

Azure グローバル資格情報の更新

8.0 update 20220126 以降で 可能

この操作を実行すると、 グローバル Azure 資格情報のアクセスキー を更新できます。

  • URL: /configuration/credentials/azure

  • メソッド: POST

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

    {
        "subscriptionId": <text>, /* Mandatory */
        "clientId": <text>,  /* Mandatory */
        "tenantId": <text>,  /* Mandatory */
        "secret": <text>  /* Mandatory */
    }
    

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

  • すべてのパラメータは必須です。

  • secret の値には、プレーンテキストまたは暗号化した値を指定できます。この値を暗号化するには、スクリプト <SOLUTION_MANAGER_HOME>/bin/encrypt_password を使用してください。

注釈

この操作ではグローバル Azure 資格情報のみを更新できます。

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

AWS グローバル資格情報を更新する POST リクエストの例:

{
    "subscriptionId" : "subscriptionId",
    "clientId" : "clientId",
    "tenantId" : "tenantId",
    "secret" : "clearOrEncryptedSecret"
}

Azure 環境資格情報の更新

8.0 update 20220126 以降で 可能

この操作を実行すると、特定の Azure 環境の資格情報を更新できます。

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

  • メソッド: POST

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

     {
        "subscriptionId": <text>, /* Mandatory */
        "clientId": <text>,  /* Mandatory */
        "tenantId": <text>,  /* Mandatory */
        "secret": <text>  /* Mandatory */
    }
    

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

  • どちらのパラメータも必須です。

  • secret の値には、プレーンテキストまたは暗号化した値を指定できます。この値を暗号化するには、スクリプト <SOLUTION_MANAGER_HOME>/bin/encrypt_password を使用してください。

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

ID が 1 の AWS 環境の資格情報を更新する POST リクエストの例:

POST https://solution-manager.acme.com:10090/environments/1/credentials
{
    "subscriptionId" : "subscriptionId",
    "clientId" : "clientId",
    "tenantId" : "tenantId",
    "secret" : "clearOrEncryptedSecret"
}

自動モードクラスタの起動

8.0 update 20210715 以降で 可能

この操作を実行すると、自動モードで作成されたクラスタを起動できます。

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

  • メソッド: POST

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

ID が 1 の AWS クラスタを起動する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/start

自動モードクラスタの停止

8.0 update 20210715 以降で 可能

この操作を実行すると、自動モードで作成されたクラスタを停止できます。

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

  • メソッド: POST

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

ID が 1 の AWS クラスタを停止する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/stop

自動モードクラスタの再起動

8.0 update 20210715 以降で 可能

この操作を実行すると、自動モードで作成されたクラスタを再起動できます。

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

  • メソッド: POST

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

ID が 1 の AWS クラスタを再起動する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/restart

自動モードクラスタの再作成

8.0 update 20210715 以降で 可能

この操作を実行すると、自動モードで作成されたクラスタを部分的または完全に再作成できます。

重要

一部のサーバーで手動変更を行っている場合、クラスタの再作成によって変更内容が失われます。変更内容を維持する場合は、サーバーからクラスタを再作成する操作を使用してください。

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

  • メソッド: POST

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

    {
        "servers" : [ /* List with the type of product cluster servers to recreate */
           {
             "typeNode": <server type> /* Server type to recreate */
           }
        ],
        "withZeroDowntime": <boolean> /* To specify if the recreate process is performed minimizing downtime (true) or not (false) */
    }
    
    <server type>::= "VDP" | "SCHEDULER" | "VDP_DATA_CATALOG"
    

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

ダウンタイムを最小化せずに、クラスタの一部を再作成する例

ダウンタイムを最小化せずに、ID が 1 の AWS クラスタから Virtual DataPort 本番クラスタのみを再作成する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/recreate
{
  "servers": [
    {
      "typeNode": "VDP"
    }
  ],
  "withZeroDowntime": false
}

ダウンタイム最小化オプションを使用して、クラスタを完全に再作成する例

ダウンタイム最小化オプションを使用して、ID が 1 の AWS クラスタで完全にクラスタを再作成する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/recreate
{
  "servers": [
    {
      "typeNode": "VDP"
    },
    {
      "typeNode": "SCHEDULER"
    },
    {
      "typeNode": "VDP_DATA_CATALOG"
    }
  ],
  "withZeroDowntime": true
}

サーバーからの自動モードクラスタの再作成

8.0 update 20210715 以降で 可能

この操作を実行すると、サーバーをテンプレートとして自動モードクラスタを再作成できます。

重要

サーバーに手動で変更を行っており、その変更を対応する本番クラスタに複製する場合は、この操作を行うことをお勧めします。

注釈

この操作にはダウンタイム最小化を適用できません。

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

  • メソッド: POST

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

    {
        "servers" : [ /* List with the type of product cluster servers to recreate */
           {
             "typeNode": <server type>, /* Server type to recreate */
             "instanceId": <text> /* Instance id of the server that will be used as the base for the recreation process */
           }
        ]
    }
    
    <server type>::= "VDP" | "SCHEDULER" | "VDP_DATA_CATALOG"
    

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

サーバーから部分的にクラスタを再作成する例

ID が 1 の AWS クラスタで、サーバーから Virtual DataPort 本番クラスタのみを再作成する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/recreateFromServers
{
  "servers": [
    {
      "typeNode": "VDP",
      "instanceId": "virtualDataPortServerInstanceId"
    }
  ]
}

サーバーからクラスタを完全に再作成する例

ID が 1 の AWS クラスタで、サーバーからクラスタを完全に再作成する POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/recreateFromServers
{
  "servers": [{
      "typeNode": "VDP",
      "instanceId": "virtualDataPortServerInstanceId"
    },
    {
      "typeNode": "SCHEDULER",
      "instanceId": "schedulerServerInstanceId"
    },
    {
      "typeNode": "VDP_DATA_CATALOG",
      "instanceId": "dataCatalogServerInstanceId"
    }
  ]
}

自動モードクラスタへの Denodo 更新プログラムのインストール

8.0 update 20210715 以降で 可能

この操作を実行すると、自動モードで作成されたクラスタに Denodo の更新プログラムをインストールできます。なお、更新ファイルは AWS S3 バケットに格納する必要があります。

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

  • メソッド: POST

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

     {
      "denodoProductClusterUpdateDtos": [
        {
          "updateType": "S3", /* Type of update. Only S3 allowed */
          "typeNode": <server type>, /* Type of the server where the update is installed */
          "arnProfileForS3Access": <text>, /* ARN of the instance profile role that grants access to the S3 bucket where the update file is stored */
          "s3UpdatePath": <text> /* Complete path to the Denodo update file */
        }
      ],
      "withZeroDowntime": <boolean> /* To specify if the Denodo update installation process is performed minimizing downtime (true) or not (false) */
    }
    
     <server type>::= "VDP" | "SCHEDULER" | "VDP_DATA_CATALOG"
    

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

特定のタイプのサーバーに更新プログラムをインストールする例

ダウンタイム最小化を使用せずに、ID が 1 の AWS クラスタの Virtual DataPort サーバーのみに Denodo 更新プログラムをインストールする POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/installDenodoUpdate
{
  "denodoProductClusterUpdateDtos": [
    {
      "updateType": "S3",
      "typeNode": "VDP",
      "arnProfileForS3Access": "arn:aws:iam::accountId:instance-profile/instanceProfileRoleName",
      "s3UpdatePath": "s3://bucketaNme/folderPath/denodoUpdateFile.zip"
    }
  ],
  "withZeroDowntime": false
}

すべてのタイプのサーバーに更新プログラムをインストールする例

ダウンタイム最小化を使用して、ID が 1 の AWS クラスタの各タイプのサーバーに特定の更新プログラムをインストールする POST リクエストの例:

POST https://solution-manager.acme.com:10090/clusters/1/installDenodoUpdate
{
  "denodoProductClusterUpdateDtos": [
    {
      "updateType": "S3",
      "typeNode": "VDP",
      "arnProfileForS3Access": "arn:aws:iam::accountId:instance-profile/instanceProfileRoleName",
      "s3UpdatePath": "s3://bucketName/folderPath/denodoUpdateFile.zip"
    }, {
      "updateType": "S3",
      "typeNode": "VDP_DATA_CATALOG",
      "arnProfileForS3Access": "arn:aws:iam::accountId:instance-profile/instanceProfileRoleName",
      "s3UpdatePath": "s3://bucketName/folderPath/denodoUpdateFile.zip"
    }, {
      "updateType": "S3",
      "typeNode": "SCHEDULER",
      "arnProfileForS3Access": "arn:aws:iam::accountId:instance-profile/instanceProfileRoleName",
      "s3UpdatePath": "s3://bucketName/folderPath/denodoUpdateFile.zip"
    }
  ],
  "withZeroDowntime": true
}

環境に関連付けられている 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
        }
    ]
}

環境の監視の開始

8.0 update 20230301 から 利用可能

この操作は、既存の環境の監視を開始します。

  • URL: /environments/{number:environmentId}/monitor/start

  • メソッド: POST

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

ID が 1 の環境の監視を開始する POST リクエストの例:

POST https://solution-manager.acme.com:10090/environments/1/monitor/start

環境の監視の停止

8.0 update 20230301 から 利用可能

この操作は、既存の環境の監視を停止します。

  • URL: /environments/{number:environmentId}/monitor/stop

  • メソッド: POST

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

ID が 1 の環境の監視を停止する POST リクエストの例:

POST https://solution-manager.acme.com:10090/environments/1/monitor/stop

クラスタの作成

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

  • URL: /clusters

  • メソッド: POST

注釈

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

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

{
    "name": <text>,
    "description": <text>, /* optional */
    "environmentId": <number>,
    "enabled": <boolean>,
    "externalDesignStudioUrl": <text>, /* optional */,
    "vdpUrlBalancer": <text>, /* optional */,
    "externalSchedulerAdminToolUrl": <text>, /* optional */,
    "schUrlBalancer": <text>, /* optional */,
    "dcUrlBalancer": <text>, /* optional */
}

ロードバランサーの背後でサーバーを稼働している場合、メインパネルで対応するツールにアクセスする方法に関する追加情報を設定できます。

  • externalDesignStudioUrl: クラスタの [My Applications] に表示される Design Studio の URL。

  • vdpUrlBalancer: クラスタの [My Applications] に表示される Virtual DataPort サーバーロードバランサーの URL。

  • externalSchedulerAdminToolUrl: クラスタの [My Applications] に表示される Scheduler Administration Tool ロードバランサーの URL。

  • schUrlBalancer: クラスタの [My Applications] に表示される Scheduler サーバーロードバランサーの URL。

  • dcUrlBalancer: クラスタの [My Applications] に表示される Data Catalog ロードバランサーの URL。

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 を使用したクラスタの作成

次の例は、メインパネルのさまざまなサーバーにアクセスするためのロードバランサーの情報を使用して、ID が 1 の環境でクラスタを作成する POST リクエストの例です。

{
    "name": "Cluster sample with LB",
    "description": "Cluster sample with Load Balancers",
    "environmentId": 1,
    "enabled": true,
    "externalDesignStudioUrl": "http://load-balancer.acme.org:9090/denodo-design-studio",
    "vdpUrlBalancer": "//load-balancer.acme.org:9999",
    "externalSchedulerAdminToolUrl": "http://load-balancer.acme.org:9090/webadmin/denodo-scheduler-admin",
    "schUrlBalancer": "//load-balancer.acme.org:8000",
    "dcUrlBalancer": "http://load-balancer.acme.org:9090/denodo-data-catalog"
}

クラスタの取得

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

  • 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: /clusters/{number:clusterId}/status

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文には、以下のような JSON 形式のクラスタステータスに関する情報、およびその他の情報が含まれます。

{
    "clusterId": <number>,
    "status": <cluster status>,
    "lastOperationType": <operation type>,
    "lastOperationStatus": <operation status>
}

<cluster status>::=
    "AWAITING_SERVICES"
  | "AWAITING_SERVICES_ONE_REGISTERED"
  | "DELETED"
  | "DELETING"
  | "ERROR"
  | "INITIALIZING"
  | "OK"
  | "PENDING"
  | "RESTARTING"
  | "RECREATING_CLUSTER_ZERO_DOWNTIME"
  | "RECREATING_FROM_SERVERS"
  | "STARTING"
  | "STOPPED"
  | "STOPPING"
  | "WARNING"
  | "PENDING_RECREATION"
  | "PENDING_CONFIGURATION"

<operation type>::=
    "CREATING_CLUSTER"
  | "MODIFYING_CLUSTER"
  | "STARTING"
  | "STOPPING"
  | "RESTARTING"
  | "RECREATING_CLUSTER_ZERO_DOWNTIME"
  | "LAUNCHING_CLUSTER_UPDATE"
  | "DELETING_CLUSTER"
  | "LAUNCHING_CLUSTER_DEPLOYMENT"
  | "RECREATING_CLUSTER"
  | "RECREATING_CLUSTER_FROM_SERVERS"

<operation status>::=
    "IN_PROGRESS"
  | "OK"
  | "ERROR"
  | "PENDING"
  | "WARNING"
  | "SKIPPED"

応答では、以下のフィールドはすべてのタイプのクラスタで共通です。

  • clusterId: クラスタの ID。

  • status: クラスタのステータス。クラスタのさまざまなステータスは、 こちら の概要画面で確認できます。標準的なクラスタのステータスは「OK」になります。

以下のフィールドは、自動モードクラスタに固有です。

  • lastOperationType: クラスタに対して最後に行われた操作 (作成、開始、停止、デプロイ、更新...)。

  • lastOperationStatus: クラスタでの最後の操作のステータス。

次の例は、停止操作後に ID 10 の自動化されたクラスタのステータスを返します。

{
    "clusterId": 10,
    "status": "STOPPED",
    "lastOperationType": "STOPPING",
    "lastOperationStatus": "OK"
}

クラスタの更新

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

  • URL: /clusters/{number:clusterId}

  • メソッド: PUT

注釈

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

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

{
    "name": <text>,
    "description": <text>,  /* optional */
    "environmentId": <number>,
    "enabled": <boolean>,
    "externalDesignStudioUrl": <text>, /* optional */,
    "vdpUrlBalancer": <text>, /* optional */,
    "externalSchedulerAdminToolUrl": <text>, /* optional */,
    "schUrlBalancer": <text>, /* optional */,
    "dcUrlBalancer": <text>, /* optional */
}

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

クラスタを更新する例

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

{
    "name": "clusterSample updated",
    "description": "A cluster sample updated",
    "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 でクラスタを更新

次の例は、メインパネルの複数のサーバーにアクセスするためのロードバランサーの情報で、ID が 10 のクラスタを更新する PUT リクエストの例です。

{
    "name": "Updated cluster sample with LB",
    "description": "Updated cluster sample with Load Balancers",
    "enabled": true,
    "externalDesignStudioUrl": "http://load-balancer.acme.org:9090/denodo-design-studio",
    "vdpUrlBalancer": "//load-balancer.acme.org:9999",
    "externalSchedulerAdminToolUrl": "http://load-balancer.acme.org:9090/webadmin/denodo-scheduler-admin",
    "schUrlBalancer": "//load-balancer.acme.org:8000",
    "dcUrlBalancer": "http://load-balancer.acme.org:9090/denodo-data-catalog"
}

クラスタの削除

次の 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 */
    "infrastructureDto": { /* optional */
         "provider": <text>, /* optional */
         "region": <text> /* optional */
    }
}

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

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

注釈

更新プログラム 8.0u20240926 以降、「ITP_BROWSER_POOL」サーバー、「ITP_VERIFICATION」サーバー、「VDP_DATA_CATALOG」サーバーではユーザー名とパスワードのフィールドが無視されます。

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",
    "infrastructureDto": {
        "provider": "On prem"
    }
}

この例では、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,
    "infrastructureDto": {
        "provider": "On prem"
    }
}

サーバーの取得

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

  • 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>,
    "infrastructureDto": {
         "provider": <text>,
         "region": <text>
    }
}

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

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

注釈

更新プログラム 8.0u20240926 以降、「ITP_BROWSER_POOL」サーバー、「ITP_VERIFICATION」サーバー、「VDP_DATA_CATALOG」サーバーではユーザー名とパスワードのフィールドが扱われません。

値が 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,
    "infrastructureDto": {
        "provider": "On prem"
    }
}

サーバーの更新

次の 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>,
    "infrastructureDto": { /* optional */
         "provider": <text>, /* optional */
         "region": <text> /* optional */
    }
}

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

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

注釈

更新プログラム 8.0u20240926 以降、「ITP_BROWSER_POOL」サーバー、「ITP_VERIFICATION」サーバー、「VDP_DATA_CATALOG」サーバーではユーザー名とパスワードのフィールドが無視されます。

注釈

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",
    "infrastructureDto": {
        "provider": "AWS",
        "region": "eu-west-1"
   }
}

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

{
    "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,
    "infrastructureDto": {
        "provider": "AWS",
        "region": "eu-west-1"
   }
}

サーバーの削除

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

  • URL: /servers/{number:serverId}

  • メソッド: DELETE

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

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

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

Solution Manager のカタログと構成のエクスポート

8.0 update 20210715 以降で 可能

この操作を使用すると、Solution Manager の環境、クラスタ、サーバー、一部の設定をエクスポートできます。

  • URL: /export

  • メソッド: POST

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

{
    "customPasswd" : <text> /* Optional. Used for sensitive data encryption */
}

注釈

カスタムパスワードを指定する場合、エクスポートしたコンテンツをインポートする際に同じパスワードを指定する必要があります 。コンテンツを暗号化しない場合は、リクエストの本文を空のままにします。

エクスポート操作が正常に完了した場合、応答のステータスコードは 200 です。

カスタムパスワードによる暗号化を用いてエクスポートしたコンテンツを取得する POST リクエストの例:

POST https://solution-manager.acme.com:10090/export
{
  "customPasswd" : "passwd"
}

Solution Manager のカタログと構成のインポート

8.0 update 20210715 以降で 可能

この操作を使用すると、Solution Manager の環境、クラスタ、サーバー、一部の設定を含むファイルをインポートできます。

  • URL: /import

  • メソッド: POST

  • パラメータ:

    • overwrite: オプションです。true または false を指定します。インポートしたファイルに既存の環境の情報が含まれている場合、 true を指定します。そうでない場合、その情報はインポートされません。

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

{
    "exportOptions" : {
       "customPasswd" : <text> /* Optional. Used for sensitive data encryption. Only needed if you specified a value for the export operation */
    },
    "importData" : <JSON catalog info> /* Copy the JSON content of the export here */
}

注釈

エクスポート作業の際にカスタムパスワードを指定した場合、インポート操作の際に同じパスワードを指定する必要があります 。エクスポートするコンテンツを暗号化しなかった場合、リクエスト本文の exportOptions フィールドを空のままにします。

操作が正常に完了した場合、応答のステータスコードは 200 です。

カスタムパスワードを使用しないインポートの例

エクスポート操作で取得したコンテンツをインポートする POST リクエストの例:

POST https://solution-manager.acme.com:10090/import
{
  "importData" : {
    "environments": [
      {
          "id": 230,
          "name": "test",
          "uuid": "8a7ad34c-b61a-435b-a428-7df36a04a397",
          "minimumUpdateMandatory": false,
          "licenseAlias": "DEVELOPMENT_1",
          "environmentType": "ON_PREMISES",
          "deploymentConfiguration": {
              "deploymentsEnabled": true,
              "deploymentType": "ONLINE",
              "sharedCache": false,
              "cacheURLPrimary": "",
              "cacheURLSecondary": "",
              "clusterStrategy": "ONE_BY_ONE",
              "serverStrategy": "ONE_BY_ONE",
              "rollbackEnabled": false,
              "backupEnabled": false,
              "dataCatalogSynchronizeEnabled": false,
              "dataCatalogSyncType": "ALL",
              "dataCatalogSyncPriority": "SERVER_WITH_LOCAL_CHANGES",
              "dataCatalogVDPServerToSync": "",
              "environmentSyncDataCatalogs": []
          }
      }
    ]
  }
}

カスタムパスワードを使用し、データを上書きするインポートの例

既存のエレメントを上書きするオプションとカスタムパスワードを指定して、エクスポート操作で取得したコンテンツをインポートする POST リクエストの例:

POST https://solution-manager.acme.com:10090/import?overwrite=true
{
  "exportOptions" : {
    "customPasswd" : "exportPasswd"
  },
  "importData" : {
    "environments": [
      {
          "id": 230,
          "name": "test",
          "uuid": "8a7ad34c-b61a-435b-a428-7df36a04a397",
          "minimumUpdateMandatory": false,
          "licenseAlias": "DEVELOPMENT_1",
          "environmentType": "ON_PREMISES",
          "deploymentConfiguration": {
              "deploymentsEnabled": true,
              "deploymentType": "ONLINE",
              "sharedCache": false,
              "cacheURLPrimary": "",
              "cacheURLSecondary": "",
              "clusterStrategy": "ONE_BY_ONE",
              "serverStrategy": "ONE_BY_ONE",
              "rollbackEnabled": false,
              "backupEnabled": false,
              "dataCatalogSynchronizeEnabled": false,
              "dataCatalogSyncType": "ALL",
              "dataCatalogSyncPriority": "SERVER_WITH_LOCAL_CHANGES",
              "dataCatalogVDPServerToSync": "",
              "environmentSyncDataCatalogs": []
          }
      }
    ]
  }
}

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

次の 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>,
            "includeUsersAndPrivileges": <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,
            "includeUsersAndPrivileges": 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,
            "includeUsersAndPrivileges": 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 ファイルを生成する際は常に、環境固有のプロパティを別途生成することを強くお勧めします。Design Studio を使用して VQL ファイルを生成する場合、[Export] ダイアログと [Export database] ダイアログで [Export environment specific properties separately] オプションを選択します。そうしない場合は、VQL ファイルに JDBC データソースのパスワードなどの環境プロパティの値が含まれていないことを確認してください。別個の環境プロパティなしに 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,
    "includeUsersAndPrivileges": false,
    "useDefaultDatabase": true
}

リビジョンの VQL のダウンロード

8.0 update 20230301 から 利用可能

次のリクエストは、リビジョンの VQL をダウンロードします。

  • URL: /revisions/{number:revisionId}/VQL

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文に、テキスト形式のリビジョンの VQL が含まれます。リビジョンに VQL が含まれない場合、応答の本文は空ですが、ステータスコードは 200 のままです。

注釈

生成される VQL には、UTF-8 でエンコードされていることを示す BOM マークが含まれます。

以下のリクエストは、ID が 1 のリビジョンの VQL をダウンロードします。

GET https://solution-manager.acme.com:10090/revisions/1/VQL

リクエストが正常に実行された場合、サービスは HTTP コード 200 を返し、応答の本文は VQL になります。

リビジョンの Scheduler ZIP のダウンロード

8.0 update 20230301 から 利用可能

次のリクエストは、リビジョンの Scheduler zip メタデータをダウンロードします。

  • URL: /revisions/{number:revisionId}/schedulerZip

  • メソッド: GET

リクエストが正常に実行された場合、サーバーはステータスコード 200 を送信します。応答の本文には、リビジョンに Scheduler ジョブが含まれる zip ファイルが含まれます。リビジョンに Scheduler エレメントが含まれない場合、応答の本文は空ですが、ステータスコードは 200 のままです。

次のリクエストは、ID 1 のリビジョンの Scheduler zip メタデータをダウンロードします。

GET https://solution-manager.acme.com:10090/revisions/1/schedulerZip

リクエストが正常に実行された場合、サービスは HTTP コード 200 を返し、応答の本文は Scheduler メタデータ zip になります。

デプロイのリストの取得

次の 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>,
                    "includeUsersAndPrivileges": <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,
                    "includeUsersAndPrivileges": 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,
                    "includeUsersAndPrivileges": 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) も含める必要があります。リビジョンは、 revisionIds で指定されている順序で実行されます。次の例は、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"
    | "PENDING"
    | "CANCELLED"

<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"
    | "INITIALIZE_DEPLOYMENT_INSTANCE"
    | "CLUSTER_REBOOT"
    | "PROMOTION_CONFIG"
    | "VQL_TRANSACTIONAL"
    | "VQL_COMMIT"
    | "VQL_ROLLBACK"

任意のリクエストパラメータ 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 フィールドがホスト名である場合、このパラメータの値はそのホスト名にする必要があります。

    • instanceId: 自動クラウドモードのサーバーインスタンスのインスタンス ID。

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

    • product: この値は VDPSCHEDULERVDP_DATA_CATALOG のいずれかにする必要があります。

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

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

  • URL にはパラメータ instanceIdnodeIphostDomainNameいずれか を追加する必要があります。 instanceId を指定した場合、 nodeIphostDomainName は無効になります。 instanceId を指定しない場合は、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"

例 3

インスタンス i-08ae3ee3f75ced7d0 で実行されている自動クラウドモードの Virtual DataPort サーバーに関連付けられたライセンスを解放します。

GET https://solution-manager.acme.com:10091/externalShutdown?instanceId=i-08ae3ee3f75ced7d0&port=9999&product=VDP

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

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

サーバー ID を用いた使用中のライセンスの解放

この操作は使用中のライセンスを解放するもう一つの方法であり、サーバーの ID を使用します。

  • URL: /servers/{number:serverId}/externalShutdown

  • メソッド: POST

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

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

ID が 3 のサーバーで使用中のライセンスを解放する POST リクエストの例:

POST https://solution-manager.acme.com:10091/servers/3/externalShutdown

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 が返されます。そうでない場合、リクエストは失敗します。

Add feedback