litmus/litmus-portal/graphql-server/graph/schema.graphqls

303 lines
6.4 KiB
GraphQL

# GraphQL schema example
#
# https://gqlgen.com/getting-started/
directive @authorized on FIELD_DEFINITION
type Cluster {
cluster_id: ID!
project_id: ID!
cluster_name: String!
description: String
platform_name: String!
access_key: String!
is_registered: Boolean!
is_cluster_confirmed: Boolean!
is_active: Boolean!
updated_at: String!
created_at: String!
cluster_type: String!
no_of_schedules: Int
no_of_workflows: Int
token: String!
agent_namespace: String
serviceaccount: String
agent_scope: String!
agent_ns_exists: Boolean
agent_sa_exists: Boolean
}
input ClusterInput {
cluster_name: String!
description: String
platform_name: String!
project_id: ID!
cluster_type: String!
agent_namespace: String
serviceaccount: String
agent_scope: String!
agent_ns_exists: Boolean
agent_sa_exists: Boolean
}
type ClusterEvent {
event_id: ID!
event_type: String!
event_name: String!
description: String!
cluster: Cluster!
}
type ActionPayload {
request_type: String!
k8s_manifest: String!
namespace: String!
external_data: String
}
type ClusterAction {
project_id: ID!
action: ActionPayload!
}
input ClusterActionInput {
cluster_id: ID!
action: String!
}
input ClusterEventInput {
event_name: String!
description: String!
cluster_id: String!
access_key: String!
}
input ClusterIdentity {
cluster_id: String!
access_key: String!
}
type ClusterConfirmResponse {
isClusterConfirmed: Boolean!
newClusterKey: String
cluster_id: String
}
input WeightagesInput {
experiment_name: String!
weightage: Int!
}
type weightages {
experiment_name: String!
weightage: Int!
}
input ChaosWorkFlowInput {
workflow_id: String
workflow_manifest: String!
cronSyntax: String!
workflow_name: String!
workflow_description: String!
weightages: [WeightagesInput!]!
isCustomWorkflow: Boolean!
project_id: ID!
cluster_id: ID!
}
type ChaosWorkFlowResponse {
workflow_id: String!
cronSyntax: String!
workflow_name: String!
workflow_description: String!
isCustomWorkflow: Boolean!
}
type WorkflowRun {
workflow_run_id: ID!
workflow_id: ID!
cluster_name: String!
last_updated: String!
project_id: ID!
cluster_id: ID!
workflow_name: String!
cluster_type: String
execution_data: String!
}
input WorkflowRunInput {
workflow_id: ID!
workflow_run_id: ID!
workflow_name: String!
execution_data: String!
cluster_id: ClusterIdentity!
completed: Boolean!
}
type PodLogResponse {
workflow_run_id: ID!
pod_name: String!
pod_type: String!
log: String!
}
input PodLog {
cluster_id: ClusterIdentity!
request_id: ID!
workflow_run_id: ID!
pod_name: String!
pod_type: String!
log: String!
}
input PodLogRequest {
cluster_id: ID!
workflow_run_id: ID!
pod_name: String!
pod_namespace: String!
pod_type: String!
exp_pod: String
runner_pod: String
chaos_namespace: String
}
type ScheduledWorkflows {
workflow_id: String!
workflow_manifest: String!
cronSyntax: String!
cluster_name: String!
workflow_name: String!
workflow_description: String!
weightages: [weightages!]!
isCustomWorkflow: Boolean!
updated_at: String!
created_at: String!
project_id: ID!
cluster_id: ID!
cluster_type: String!
isRemoved: Boolean!
}
type Workflow {
workflow_id: String!
workflow_manifest: String!
cronSyntax: String!
cluster_name: String!
workflow_name: String!
workflow_description: String!
weightages: [weightages!]!
isCustomWorkflow: Boolean!
updated_at: String!
created_at: String!
project_id: ID!
cluster_id: ID!
cluster_type: String!
isRemoved: Boolean!
workflow_runs: [WorkflowRuns]
}
type WorkflowRuns {
execution_data: String!
workflow_run_id: ID!
last_updated: String!
}
type clusterRegResponse {
token: String!
cluster_id: String!
cluster_name: String!
}
type SSHKey {
publicKey: String!
privateKey: String!
}
type Query {
# [Deprecated soon]
getWorkFlowRuns(project_id: String!): [WorkflowRun!]! @authorized
getCluster(project_id: String!, cluster_type: String): [Cluster!]! @authorized
getUser(username: String!): User! @authorized
getProject(projectID: String!): Project! @authorized
users: [User!]! @authorized
# [Deprecated soon]
getScheduledWorkflows(project_id: String!): [ScheduledWorkflows]! @authorized
ListWorkflow(project_id: String!, workflow_ids: [ID]): [Workflow]! @authorized
getCharts(HubName: String!, projectID: String!): [Chart!]! @authorized
getHubExperiment(experimentInput: ExperimentInput!): Chart! @authorized
getHubStatus(projectID: String!): [MyHubStatus]! @authorized
getYAMLData(experimentInput: ExperimentInput!): String!
}
type Mutation {
#It is used to create external cluster.
userClusterReg(clusterInput: ClusterInput!): clusterRegResponse! @authorized
#It is used to create chaosworkflow
createChaosWorkFlow(input: ChaosWorkFlowInput!): ChaosWorkFlowResponse!
@authorized
createUser(user: CreateUserInput!): User! @authorized
updateUser(user: UpdateUserInput!): String! @authorized
deleteChaosWorkflow(workflowid: String!): Boolean! @authorized
sendInvitation(member: MemberInput!): Member @authorized
acceptInvitation(member: MemberInput!): String! @authorized
declineInvitation(member: MemberInput!): String! @authorized
removeInvitation(member: MemberInput!): String! @authorized
#It is used to confirm the subscriber registration
clusterConfirm(identity: ClusterIdentity!): ClusterConfirmResponse!
#It is used to send cluster related events from the subscriber
newClusterEvent(clusterEvent: ClusterEventInput!): String!
chaosWorkflowRun(workflowData: WorkflowRunInput!): String!
podLog(log: PodLog!): String!
addMyHub(myhubInput: CreateMyHub!, projectID: String!): MyHub! @authorized
saveMyHub(myhubInput: CreateMyHub!, projectID: String!): MyHub! @authorized
syncHub(id: ID!): [MyHubStatus!]! @authorized
updateChaosWorkflow(input: ChaosWorkFlowInput): ChaosWorkFlowResponse!
@authorized
deleteClusterReg(cluster_id: String!): String! @authorized
generaterSSHKey: SSHKey! @authorized
updateMyHub(myhubInput: UpdateMyHub!, projectID: String!): MyHub! @authorized
deleteMyHub(hub_id: String!): Boolean! @authorized
}
type Subscription {
#It is used to listen cluster events from the graphql server
clusterEventListener(project_id: String!): ClusterEvent! @authorized
workflowEventListener(project_id: String!): WorkflowRun! @authorized
getPodLog(podDetails: PodLogRequest!): PodLogResponse! @authorized
#It is used to listen cluster operation request from the graphql server
clusterConnect(clusterInfo: ClusterIdentity!): ClusterAction!
}