| Class | MirrorsController |
| In: |
app/controllers/mirrors_controller.rb
|
| Parent: | ApplicationController |
| SORTFIELDS | = | %w{id name active size last_update age status} |
# 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
# 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
# File app/controllers/mirrors_controller.rb, line 66
66: def edit
67: @mirror = Mirror.find(params[:id])
68: end
# File app/controllers/mirrors_controller.rb, line 29
29: def index
30: list
31: render :action => 'list'
32: end
# 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
# File app/controllers/mirrors_controller.rb, line 93
93: def pause
94: backend_action(:pause, params[:id])
95: end
# 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
# File app/controllers/mirrors_controller.rb, line 98
98: def resume
99: backend_action(:resume, params[:id])
100: end
# File app/controllers/mirrors_controller.rb, line 44
44: def show
45: @mirror = Mirror.find(params[:id])
46: end
# File app/controllers/mirrors_controller.rb, line 88
88: def trigger
89: backend_action(:trigger_update, params[:id])
90: end
# 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
# File app/controllers/mirrors_controller.rb, line 83
83: def updatestats
84: @stats = MirrorUpdate.findLatestWithName(200)
85: end
# 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
# 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
# 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