Class MirrorsController
In: app/controllers/mirrors_controller.rb
Parent: ApplicationController

Methods

backend_action   create   destroy   edit   index   invalidate   list   new   pause   public_list   resume   show   sort_and_filter   trigger   update   updatestats  

Included Modules

Dsadmin::Contractor Dsadmin::CoreClient

Constants

SORTFIELDS = %w{id name active size last_update age status}

Public Instance methods

[Source]

    # File app/controllers/mirrors_controller.rb, line 54
54:   def create
55:     @mirror = Mirror.new(params[:mirror])
56:     if @mirror.save
57:       flash[:notice] = 'Mirror was successfully created.'
58:       invalidate(params[:id])
59:       redirect_to :action => 'list'
60:     else
61:       render :action => 'new'
62:     end
63:   end

[Source]

     # File app/controllers/mirrors_controller.rb, line 111
111:   def destroy
112:     mirror = Mirror.find(params[:id])
113:     mname = mirror.name
114:     mirror.destroy
115:     flash[:notice] = "Mirror \"#{mname}\" has been destroyed."
116:     invalidate(params[:id])
117:     redirect_to :action => 'list'
118:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 66
66:   def edit
67:     @mirror = Mirror.find(params[:id])
68:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 29
29:   def index
30:     list
31:     render :action => 'list'
32:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 34
34:   def list
35:     @show_hidden = (params[:show_hidden] != nil)
36:     @sortby = params[:sortby] || 'name'
37:     @mirrors = sort_and_filter(Mirror.findOverview)
38:     
39:     @total_size = @mirrors.inject(0) { |sum, cur| cur.active? ? sum + cur.size : sum }
40:     @nactive    = @mirrors.inject(0) { |sum, cur| cur.active? ? sum+1 : sum }
41:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 49
49:   def new
50:     @mirror = Mirror.new
51:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 93
93:   def pause 
94:     backend_action(:pause, params[:id])
95:   end

[Source]

     # File app/controllers/mirrors_controller.rb, line 103
103:   def public_list
104:     @sortby = params[:sortby] || 'name'
105:     @show_hidden = false
106:     
107:     @mirrors    = sort_and_filter(Mirror.findOverview)
108:     @total_size = @mirrors.inject(0) { |sum, cur| sum + cur.size }
109:   end

[Source]

     # File app/controllers/mirrors_controller.rb, line 98
 98:   def resume
 99:     backend_action(:resume, params[:id])
100:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 44
44:   def show
45:     @mirror = Mirror.find(params[:id])
46:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 88
88:   def trigger
89:     backend_action(:trigger_update, params[:id])
90:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 71
71:   def update
72:     @mirror = Mirror.find(params[:id])
73:     if @mirror.update_attributes(params[:mirror])
74:       flash[:notice] = 'Mirror was successfully updated.'
75:       invalidate(params[:id])
76:       redirect_to :action => 'show', :id => @mirror
77:     else
78:       render :action => 'edit'
79:     end
80:   end

[Source]

    # File app/controllers/mirrors_controller.rb, line 83
83:   def updatestats
84:     @stats = MirrorUpdate.findLatestWithName(200)
85:   end

Private Instance methods

[Source]

     # File app/controllers/mirrors_controller.rb, line 124
124:   def backend_action(action, mirrorid)
125:     proxy = Dsadmin::Webfe::BackendInterface.new
126:     username = Thread.current[:auth_username]
127:     passwd   = Thread.current[:auth_passwd]
128:     
129:     begin
130:       res = proxy.call(:mirrors, action, username, passwd, 'mirrorid' => mirrorid)
131:       
132:       if(res.status == :success)
133:         flash[:notice] = "Success"
134:       else
135:         flash[:warning] = "Didn't get quite the expected response from the backend: '#{res.status}'"
136:       end
137:     rescue StandardError => e
138:       log.bug(e)
139:       flash[:error] = "Uhh, something went very wrong here. Please kick the admin."
140:     end
141:     
142:     redirect_to :action => 'list'
143:   end

[Source]

     # File app/controllers/mirrors_controller.rb, line 146
146:   def invalidate(mirrorid)
147:     proxy = Dsadmin::Webfe::BackendInterface.new
148:     username = Thread.current[:auth_username]
149:     passwd   = Thread.current[:auth_passwd]
150:     
151:     begin
152:       res = proxy.call(:mirrors, :invalidate, username, passwd, 'mirrorid' => mirrorid)
153:       
154:       unless(res.status == :success)
155:         log.error("Unexpected response on /mirrors/invalidate: #{res.status}")
156:       end
157:     rescue StandardError => e
158:       log.bug(e)
159:     end
160:   end

[Source]

     # File app/controllers/mirrors_controller.rb, line 163
163:   def sort_and_filter(list)
164:     assertTrue(SORTFIELDS.include?(@sortby))
165:     
166:     tmp = list.sort_by { |item| item.send(@sortby) }
167:     
168:     unless(@show_hidden)
169:       tmp.delete_if { |cur| cur =~ /\([A-Z]{6,}\)/ }
170:     end
171:     
172:     return tmp
173:   end

[Validate]