6.4. Fuse Online パブリック API エクスポートエンドポイントの呼び出し

外部ツールを使用して Fuse Online インテグレーションを別の Fuse Online 環境からコピーできるようにするには、先に以下のタスクを実行する必要があります。

  • Fuse Online では、CI/CD パイプラインのためにエクスポートするインテグレーションを特定の環境に対してマーク付けする必要があります。CI/CD のインテグレーションのマーク付け を参照してください。

    この要件には例外があります。1 回のエクスポート操作で Fuse Online 環境からすべてのインテグレーションをエクスポートする場合、特定の環境に対してインテグレーションがすでにマーク付けされているかどうかは重要ではありません。

  • Fuse Online のパブリック API が公開済みである必要があります。外部ツールが使用する Fuse Online のパブリック REST API の公開 を参照してください。

特定環境のインテグレーションをエクスポートするためのエンドポイント

特定の環境に対してマーク付けされたインテグレーションをエクスポートするために、Fuse Online は以下の GET メソッドエンドポイントを提供します。

/public​/integrations​/{env}​/export.zip

{env} を、すでに作成した CI/CD 環境ラベルに置き換えてください。インテグレーションが特定の環境に対してマーク付けされている場合、Fuse Online はマーク付けされたタイミングを示すタイムスタンプで管理します。エンドポイントがマーク付けされてからエクスポートされていない場合に限り、インテグレーションをエクスポートするのがデフォルトの挙動です。たとえば、test1 環境に対してマーク付けされたインテグレーションをエクスポートする場合、エンドポイントは以下のようになります。

/public/integrations/test1/export.zip

このエンドポイントは、test1 環境ラベルがあり、以下の条件のいずれかを満たす、各インテグレーションをエクスポートします。

  • インテグレーションは、最後にエクスポートされた後に test1 環境に対してマーク付けされた。
  • インテグレーションは test1 環境に対してマーク付けされ、エクスポートされていない。

エンドポイントはインテグレーションを export.zip ファイルにパッケージ化し、そのファイルを返します。

インテグレーションがエクスポートされた後に指定の環境に対してマーク付けされたインテグレーションがない場合は、エンドポイントは HTTP 204 応答を返し、返すものがないことを示します。

指定された環境に対してタグ付けされたすべてのインテグレーションをエクスポートするためのエンドポイント

エクスポートエンドポイントを呼び出して、指定する環境ラベルでタグ付けされた Fuse Online 環境のすべてのインテグレーションをエクスポートすることができます。エンドポイントは、インテグレーションが最後にエクスポートされた後に指定の環境に対してマーク付けされたかどうかをインテグレーションにエクスポートします。これにより、特定のタグがあるすべてのインテグレーションを別の Fuse Online 環境で簡単に複製できます。これを行うには、以下を実行します。

  • 環境ラベルがすでに作成されている必要があります。CI/CD のインテグレーションのマーク付け を参照してください。
  • エクスポートエンドポイントの呼び出しに ignoreTimestamp=true オプションを追加します。

以下に例を示します。

/public/integrations/test1/export.zip?ignoreTimestamp=true -o export.zip

すべてのインテグレーションをエクスポートするためのエンドポイント

エクスポートエンドポイントを呼び出して、単一の Fuse Online 環境ですべてのインテグレーションをエクスポートすることができます。これにより、別の Fuse Online 環境ですべてのインテグレーションを簡単に複製できます。これを行うには、以下を実行します。

以下に例を示します。

/public/integrations/{env}/export.zip?all=true

{env} を CI/CD 環境ラベルに置き換えます。エンドポイントは、その環境に対してマーク付けされていない各インテグレーションに、指定した環境ラベルを割り当てます。

all=true オプションを追加する場合、エクスポートされたインテグレーションを export.zip ファイルにパッケージ化するように明示的に指定する必要もあります。以下に例を示します。

/public/integrations/test1/export.zip?all=true -o export.zip

このエンドポイントの呼び出しによって、以下のことが実行されます。

  • test1 環境の各インテグレーションがマーク付けされます。
  • export.zip ファイルのすべてのインテグレーションを返します。

    -o export.zip オプションを指定しない場合、エンドポイントは export.zip?all=true という名前のファイルを返します。

エクスポートエンドポイントに必要なカスタムヘッダー

エクスポートエンドポイントを呼び出すコマンドでは、以下のカスタムヘッダーを正確に指定する必要があります。

  • -H "Content-Type: multipart/form-data"
  • -H "SYNDESIS-XSRF-TOKEN: awesome"

    Fuse Online のパブリック API では、リクエストの認証にこのヘッダーが必要です。

  • -H 'Authorization: Bearer <token>'

    <token> を、Fuse Online のパブリック API の公開に使用される OpenShift サービスアカウントの作成時にファイルにコピーしたシークレットトークンに置き換えます。

インテグレーションをエクスポートする curl コマンドの例

以下は、インテグレーションをエクスポートする Fuse Online API エンドポイントを呼び出す curl コマンドの例です。

curl -v -k -L -H "Content-Type: multipart/form-data" -H "SYNDESIS-XSRF-TOKEN: awesome" -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJzeW5kZXNpcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJzeW5kZXNpcy1jZC1jbGllbnQtdG9rZW4tMnZjNmwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoic3luZGVzaXMtY2QtY2xpZW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjUxMjYxNGMtMmYwMS0xMWU5LTk3OWEtNDI1YWNlMzY3MTcyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnN5bmRlc2lzOnN5bmRlc2lzLWNkLWNsaWVudCJ9.uKsri0JSKJDbgHoQwAhBJSNuWKwJgjegf2QlrCkhxVssSK1zIMZQaF9P5a4R7ZcWRnrZ_345UTqxYVeRlfHWVH0PqBkD-n7PAS9dcKJIFdS1jUHOmL1FTGgc3YW-bz1SlWT93tvK1EhorZ4_-EBfXhSAP4Uumi5qAg3_QUTMDstq233NSwBKYtFOw3Pp1ys3p3y0hcaiLMimeCH60vR4iWvptqqzc5QDigHiPySZNWxs_5awZlwdoIDvR-nSj690aC-49UKFgyEEdzdFU4bI2W4hOyDyhN9fVaIAZQKeJUrJBU-lnFTHI_NAd2OwzOEBpWZuj31Za5w9fU4kf4UDGA'
https://public-syndesis.192.168.64.42.nip.io/api/v1/public/integrations/dev1/export.zip

コマンドでは、以下のようになります。

  • コマンドの最後にある URL は、インテグレーションをエクスポートする Fuse Online 環境を識別します。
  • dev1 環境ラベルの指定内容は、dev1 環境に対してマーク付けされ、その後エクスポートされていないインテグレーションをエクスポートすることを示しています。