diff options
Diffstat (limited to 'app/graphql/mutations/clusters/agents/create.rb')
-rw-r--r-- | app/graphql/mutations/clusters/agents/create.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/app/graphql/mutations/clusters/agents/create.rb b/app/graphql/mutations/clusters/agents/create.rb new file mode 100644 index 00000000000..0896cc7b203 --- /dev/null +++ b/app/graphql/mutations/clusters/agents/create.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module Mutations + module Clusters + module Agents + class Create < BaseMutation + include FindsProject + + authorize :create_cluster + + graphql_name 'CreateClusterAgent' + + argument :project_path, GraphQL::Types::ID, + required: true, + description: 'Full path of the associated project for this cluster agent.' + + argument :name, GraphQL::Types::String, + required: true, + description: 'Name of the cluster agent.' + + field :cluster_agent, + Types::Clusters::AgentType, + null: true, + description: 'Cluster agent created after mutation.' + + def resolve(project_path:, name:) + project = authorized_find!(project_path) + result = ::Clusters::Agents::CreateService.new(project, current_user).execute(name: name) + + { + cluster_agent: result[:cluster_agent], + errors: Array.wrap(result[:message]) + } + end + end + end + end +end |