Project

General

Profile

Download (2.98 KB) Statistics
| Branch: | Tag: | Revision:

foreman_pipeline / app / controllers / foreman_pipeline / api / jenkins_users_controller.rb @ 937eb715

1
module ForemanPipeline
2
  class Api::JenkinsUsersController < Katello::Api::V2::ApiController
3
    respond_to :json
4

    
5
    include Api::Rendering
6

    
7
    before_filter :find_organization, :only => [:create, :index]
8
    before_filter :find_jenkins_user, :only => [:show, :destroy, :update]
9

    
10
    def_param_group :jenkins_user_id do
11
      param :organization_id, :number, :desc => N_("organization identifier"), :required => true
12
      param :id, :number, :desc => N_("Jenkins user identifier"), :required => true
13
    end
14

    
15
    def_param_group :jenkins_user do
16
      param :name, String, :desc => N_("Jenkins user name")
17
      param :token, String, :desc => N_("Jenkins user token")
18
    end
19

    
20
    api :GET, "/organizations/:organization_id/jenkins_users", N_("List jenkins users")
21
    param :organization_id, :number, :desc => N_("organization identifier"), :required => true
22
    param :name, String, :desc => N_("Name of the jenkins instance")
23
    def index
24
       ids = JenkinsUser.readable
25
            .where(:organization_id => @organization.id)
26
            .pluck(:id)
27
      filters = [:terms => {:id => ids}]       
28
      filters << {:term => {:name => params[:name]}} if params[:name]
29

    
30
      options = {
31
         :filters => filters,
32
         :load_records? => true
33
      }
34
      respond_for_index(:collection => item_search(JenkinsUser, params, options))
35
    end
36

    
37
    api :GET, "/organizations/:organization_id/jenkins_users/:id", N_("Get jenkins user by identifier")
38
    param_group :jenkins_user_id
39
    def show
40
      respond_for_show(:resource => @jenkins_user)
41
    end
42

    
43
    api :PUT, "/organizations/:organization_id/jenkins_users/:id", N_("Update jenkins user")
44
    param_group :jenkins_user_id
45
    param_group :jenkins_user
46
    def update
47
      if jenkins_user_params[:token].empty? || jenkins_user_params[:token].nil?
48
        @jenkins_user.update_attributes!(jenkins_user_params.except(:token).except(:name))
49
      else
50
        @jenkins_user.update_attributes!(jenkins_user_params.except(:name))
51
      end
52
      @jenkins_user.save!
53

    
54
      respond_for_show(:resource => @jenkins_user)
55
    end
56

    
57
    api :POST, "/organizations/:organization_id/jenkins_users/:id", N_("Update jenkins user")
58
    param_group :jenkins_user_id
59
    param_group :jenkins_user
60
    def create
61
      @jenkins_user = JenkinsUser.new(jenkins_user_params)
62
      @jenkins_user.organization = @organization
63
      @jenkins_user.save!
64

    
65
      respond_for_show(:resource => @jenkins_user)
66
    end
67

    
68
    api :DELETE, "/organizations/:organization_id/jenkins_users/:id", N_("Update jenkins user")
69
    param_group :jenkins_user_id
70
    def destroy
71
      @jenkins_user.destroy
72
      respond_for_show(:resource => @jenkins_user)
73
    end
74

    
75

    
76
    protected
77

    
78
    def find_jenkins_user
79
      @jenkins_user = JenkinsUser.find_by_id(params[:id])
80
      fail ::Katello::HttpErrors::NotFound, "Could not find Jenkins User with id #{params[:id]}" if @jenkins_user.nil?
81
      @jenkins_user 
82
    end
83

    
84
    def jenkins_user_params
85
      params.require(:jenkins_user).permit(:name, :token)
86
    end
87
    
88
  end
89
end