GraphQL クエリのサポート
GraphQL は API のクエリ言語であり、既存のデータでそれらのクエリを満たすためのランタイムです。ユーザーは必要なものを正確に、それ以上でもそれ以下でもなく要求する力を得られます。
Enum(列挙型)
Enum(列挙型)は、フィールドの値として可能な集合を表します。
たとえば、Node
オブジェクトには status
というフィールドがあります。状態は、UP
、DRAINING
、または UNAVAILABLE
のいずれかである可能性があるため、enum (具体的には Status
型) です。
Scalar(スカラー)
Scalar(スカラー)はプリミティブな値です。Int
、Float
、String
、Boolean
、または ID
です。
GraphQL API を呼び出すときは、スカラーのみを返すまでネストされたサブフィールドを指定する必要があります。
スキーマの構造
Grid スキーマの構造は次のとおりです。
{
session(id: "<session-id>") : {
id,
capabilities,
startTime,
uri,
nodeId,
nodeUri,
sessionDurationMillis
slot : {
id,
stereotype,
lastStarted
}
}
grid: {
uri,
totalSlots,
nodeCount,
maxSession,
sessionCount,
version,
sessionQueueSize
}
sessionsInfo: {
sessionQueueRequests,
sessions: [
{
id,
capabilities,
startTime,
uri,
nodeId,
nodeUri,
sessionDurationMillis
slot : {
id,
stereotype,
lastStarted
}
}
]
}
nodesInfo: {
nodes : [
{
id,
uri,
status,
maxSession,
slotCount,
sessions: [
{
id,
capabilities,
startTime,
uri,
nodeId,
nodeUri,
sessionDurationMillis
slot : {
id,
stereotype,
lastStarted
}
}
],
sessionCount,
stereotypes,
version,
osInfo: {
arch,
name,
version
}
}
]
}
}
GraphQL のクエリ
GraphQL をクエリする最良の方法は、curl
リクエストを使用することです。クエリは JSON として解釈されます。予期しないエラーを避けるために、二重引用符が適切にエスケープされていることを確認してください。GraphQL を使用すると、必要なデータのみを取得でき、それ以上でもそれ以下でもありません。
GraphQL クエリの例を以下に示します。必要に応じて独自のクエリを構築できます。
Grid 内の maxSession
および sessionCount
の数をクエリする
curl -X POST -H "Content-Type: application/json" --data '{"query": "{ grid { maxSession, sessionCount } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
通常、ローカルマシンでは <LINK_TO_GRAPHQL_ENDPOINT>
は http://localhost:4444/graphql
になります。
セッション、ノード、および Grid のすべての詳細をクエリする
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ grid { uri, maxSession, sessionCount }, nodesInfo { nodes { id, uri, status, sessions { id, capabilities, startTime, uri, nodeId, nodeUri, sessionDurationMillis, slot { id, stereotype, lastStarted } }, slotCount, sessionCount }} }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内の現在のセッション数を取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ grid { sessionCount } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内の最大セッション数を取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ grid { maxSession } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内のすべてのノードのすべてのセッション詳細を取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ sessionsInfo { sessions { id, capabilities, startTime, uri, nodeId, nodeId, sessionDurationMillis } } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内の各ノードのすべてのセッションのスロット情報を取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ sessionsInfo { sessions { id, slot { id, stereotype, lastStarted } } } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
特定のセッションのセッション情報を取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ session (id: \"<session-id>\") { id, capabilities, startTime, uri, nodeId, nodeUri, sessionDurationMillis, slot { id, stereotype, lastStarted } } } "}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内の各ノードのケイパビリティをクエリする
curl -X POST -H "Content-Type: application/json" --data '{"query": "{ nodesInfo { nodes { stereotypes } } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
Grid 内の各ノードのステータスをクエリする
curl -X POST -H "Content-Type: application/json" --data '{"query": "{ nodesInfo { nodes { status } } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
各ノードと Grid の URI をクエリする
curl -X POST -H "Content-Type: application/json" --data '{"query": "{ nodesInfo { nodes { uri } } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
新しいセッションキューの現在のリクエストを取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ sessionsInfo { sessionQueueRequests } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>
新しいセッションキューのサイズを取得するクエリ
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ grid { sessionQueueSize } }"}' -s <LINK_TO_GRAPHQL_ENDPOINT>