Sha256: 696caa6dd4adf93691609025ae0b1098b54d0fd68455de9e1761a02cdd95b3f3

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module TeamcityRuby
  class AgentPool
    extend TeamcityRuby::Resource

    attr_accessor :teamcity_id

    url_path "/agentPools"
    resource_name "agentPool"

    def self.create(name, options = {})
      payload = { "name" => name }.to_json
      response = client.post("/agentPools", :body => payload)
      new(response)
    end

    def initialize(options = {})
      @teamcity_id = options["id"].to_s
      @name = options["name"]
    end

    def destroy!
      client.delete("/agentPools/id:#{teamcity_id}")
    end

    def add_project(options = {})
      raise "Agent pool needs a teamcity_id" unless self.teamcity_id
      project_id = options.fetch(:project_id) { raise ":project_id is required" }
      payload = { "id" => project_id }
      response = client.post("/agentPools/id:#{self.teamcity_id}/projects", :body => payload.to_json)
    end

    def projects
      raise "Agent pool needs a teamcity_id" unless self.teamcity_id
      client.get("/agentPools/id:#{self.teamcity_id}/projects")["project"].map do |p|
        Project.new(p)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
teamcity_ruby-0.0.6 lib/teamcity_ruby/agent_pool.rb