メインコンテンツまでスキップ

API リファレンス

このページは、統合を作成するときや、手元にある LicOps のレスポンスの意味を知りたいときに参照してください。このセクションのほかのページでは、各リクエストを、それが使われるタスクの中で説明しています。

各 LicOps ホストの API ブラウザー​

すべての LicOps デプロイは、実行中のビルドから生成されたインタラクティブなリファレンスを次のアドレスで提供しています。

http://<licops-host>:8100/swagger

使用しているビルドの正確なスキーマは、ここで確認してください。掲載されている項目の大半は Router の運用向けです。統合が呼び出すのは、以下のアドミッションエンドポイントです。

ポート 8100 と 8101 へのアクセスを制限する

ポート 8100 と 8101 は管理用のインターフェイスです。管理用ネットワークとジョブを投入するホストからのアクセスだけを許可し、インターネットには公開しないでください。公開するのは、クライアントが使用するライセンスポートだけにします。システム要件を参照してください。

アドミッションエンドポイント​

ベースパス: http://<licops-host>:8100/api/v1/admission-controller。リクエストとレスポンスは JSON で、フィールド名は camelCase、decision などの値は文字列です。エンドポイントを次の表に示します。

メソッドパス成功時その他の応答
POST/admit判定を含む 200無効なボディの場合、または同じセッション ID を異なるベンダー、フィーチャー、シート数で再利用した場合は 400。コールドスタート中は Retry-After 付きの 503。
POST/dispatchライセンスサーバーを含む 200無効なボディの場合は 400。不明なセッションの場合は 404。ThrottleDeferred と Retry-After 付きの 503、または NoCapacityAtDispatch 付きの 503。
POST/release常に 200無効なボディの場合は 400。
GET/availability常に 200なし

Admit​

リクエストのフィールドを次の表に示します。

フィールド必須説明
sessionIdはい自分で生成する ID で、通常は UUID です。1 つのジョブの 3 つのリクエストすべてで使用します。セッションが有効な間は、同じ ID で admit を繰り返すと最初の応答が返されます。拒否された admit は保存されません。
vendorはいプールのベンダーデーモン名。大文字と小文字の区別を含めて完全一致です。
featureはいプールのフィーチャー名。大文字と小文字の区別を含めて完全一致です。スペースはスペースのまま送信します。
userいいえジョブを投入したユーザー。記録され、アドミッションルールで使用できます。
hostいいえジョブの投入元。記録され、アドミッションルールでは client host として使用できます。
totalQuantityいいえ許可するシート数。1 以上で、既定値は 1 です。すべてのシートが 1 台のサーバーから割り当てられます。
jobDetailsいいえシートとともに記録されるジョブのコンテキスト: clusterName、account、queue、jobName、declaredRuntimeSeconds、および Kubernetes では namespace と podName。各フィールドは任意です。判定には影響しません。

レスポンス:

フィールド説明
decisionAdmit または Deny。
sessionIdAdmit の場合はセッション ID、Deny の場合は null。
expiresAtAdmit の場合、それまでにジョブが dispatch されないとシートが失効する時刻。
reasonDeny の場合、その理由。拒否理由 を参照してください。

コールドスタート中の 503 には、type、title、status、traceId を含む problem document と、Retry-After ヘッダーが付きます。

拒否理由​

拒否理由、発生した状況、対処方法を次の表に示します。

理由発生した状況対処方法
NoServerAvailableこのベンダーとフィーチャーを提供する正常なサーバーがありません。まず GET /api/v1/stats と照らしてスペルを確認します。次に、プールのサーバーが停止していないかを確認します。
NoCapacityサーバーには到達できますが、要求を満たす空きシートを持つサーバーがありません。ジョブをキューに入れ、後で再試行します。
ConstraintBlockedサーバーに空きシートはありますが、すべてのサーバーが予約による上限に達しているか、現在の期間中ブロックされています。上限の範囲内でシートが空くのを待つか、予約を変更します。スケジュールでシート数を制限する を参照してください。
PolicyDeniedDeny the request が設定されたアドミッションルールに一致しました。意図された動作です。LicOps Configuration のルールを確認してください。
StaleSnapshotLicOps が OpenLM Platform から最新の数値を受け取っていないため、自身のカウントを信頼していません。OpenLM Platform との同期を復旧します。それまでは再試行しても解決しません。トラブルシューティング を参照してください。
ContentionExhausted現在は返されません。対処は不要です。古いクライアントとの互換性のためにこの値が残されています。

Dispatch​

リクエストのフィールドを次の表に示します。

フィールド必須説明
sessionIdはいadmit で送信した ID。
executionNodeIpはいジョブを実行するノードの IP アドレス。チェックアウトのルーティングを使う場合、LicOps はこれを使ってノードのチェックアウトをこのセッションに対応付けます。
jobIdいいえスケジューラーのジョブ ID。記録されます。
jobDetailsいいえadmit と同じです。ここで指定した値は、admit の値をフィールドごとに置き換えます。省略すると admit の値が保持されます。

レスポンス:

フィールド説明
hostName、portチェックアウト先のライセンスサーバー。3 サーバー冗長構成のライセンスサーバーの場合は、その 1 台目のマシン。
licenseFileLM_LICENSE_FILE に使用する値で、port@host の形式です。3 サーバー冗長構成のライセンスサーバーの場合は、3 台すべてのマシンをカンマ区切りで示します。返されたとおりにそのまま使用してください。
fallbackTargetsプール内のその他の正常なサーバー。それぞれに hostName、port、licenseFile があります。

404 のボディは空で、セッションが存在しないか、すでに終了していることを示します。503 のボディはプレーンテキストで、Throttle ルールがチェックアウトのペースを調整している場合は ThrottleDeferred、セッションのサーバーに障害が発生し、プール内のほかのサーバーに空きシートがない場合は NoCapacityAtDispatch です。ThrottleDeferred の場合、シートは保持されたままです。Retry-After の時間だけ待ってから、もう一度 dispatch します。NoCapacityAtDispatch の場合、LicOps はセッションを解放済みで、Retry-After も送信しません。新しいセッション ID でもう一度 admit します。

Release​

リクエストに指定するのは sessionId だけです。レスポンスのステータスは常に 200 で、state は次のいずれかです。

状態意味
Releasedこのリクエストでシートが返却されました。
AlreadyClosedセッションはすでに終了しています。対処は不要です。
NotFoundそのようなセッションは存在しません。対処は不要です。

Availability​

GET /availability は、LicOps が把握しているすべてのプールと、その背後にあるすべてのサーバー (停止中のサーバーを含む) を、アドミッション自体が使用する数値とともに返します。何も変更しません。

フィールド説明
lastPlatformSyncTime、lastReconcileTimeLicOps が最後に OpenLM Platform から数値を受け取った時刻と、最後にその数値でカウントを補正した時刻。
coldStartLicOps が最初の数値を受け取るまでは true。その間、admit は 503 を返します。
staleForAdmission数値が古すぎて信頼できない場合は true。その間、admit は StaleSnapshot で拒否します。
pools[]プールごとに 1 エントリ。vendor、feature、アドミッションが使用できるサーバー全体の合計値 total、used、reserved、free、および largestAdmittableRequest (現時点で 1 つのリクエストが取得できる最大シート数) を含みます。
pools[].servers[]サーバーごとに 1 エントリ。isHealthy、シート数、constraints を含みます。
pools[].servers[].constraints[]サーバーに対する各予約の上限。その limit、上限の下で保持されているシート数 held、残りの余裕 headroom を含みます。limit が 9223372036854775807 の場合は、上限が適用されていないことを示します。

free は 0 に切り上げられません。負の値は、LicOps がそのサーバーで保有数を超えるシートを許可したことを意味します。通常は、シートを解放しなかったジョブのシートが原因です。

LicOps の運用に使うエンドポイント​

LicOps の運用に使うエンドポイントを次の表に示します。

メソッドパス機能
GET/api/v1/statusLicOps が構成済みかどうか、リッスンポート、および configurationManagement に示される OpenLM Platform との同期状況。
GET/api/v1/statsすべてのプールとサーバー、および現在のシート数。正確なベンダー名とフィーチャー名の情報源です。
GET/api/v1/rules/router-admissionLicOps が適用しているアドミッションルール (組み込みのルールを含む)。読み取り専用です。ルールは OpenLM Platform で定義します。
GET/api/v1/platform/serversLicOps が OpenLM Platform から受け取ったライセンスサーバー。受け取るまでは 503 を返します。
GET、PUT/api/v1/admission-controller/platform-credentialsOpenLM Platform 接続を読み取る、または保存します。シークレットはマスクされた状態で返されます。
POST/api/v1/admission-controller/platform-credentials/check-connection保存済みの資格情報ではなく、リクエストボディ内の資格情報をテストします。
GET/readyzどのリッスンポートがバインドされ、どのポートが必要とされているか。LicOps が構成を取得するまでは 503 を返します。
GET/health/ready、/health/live、/health/startOpenLM の標準のヘルスチェック。

既定値​

既定の設定を次の表に示します。

設定既定値意味
API ポート8100上記のすべてのアドレスで使用するポート。
LicOps のリッスンポート30001LicOps 経由でルーティングするチェックアウト用。HTTP ではなく FlexLM プロトコルで通信します。
Admit タイムアウト15 分この時間内に dispatch されないジョブは、シートを失います。
Dispatch タイムアウト2 時間開始したジョブは、release がなくてもこの時間だけシートを保持します。
コールドスタート時の Retry-After10 秒コールドスタート時の 503 の後に待つ時間。
OpenLM Platform の数値約 10 秒ごとLicOps がカウントを補正する頻度。新しい数値が約 30 秒間届かないと、admit は StaleSnapshot で拒否します。

タイムアウトを変更するには、セッションのタイムアウトを設定する を参照してください。

ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。