# File lib/rudy/routines/handlers/disks.rb, line 137
137:     def attach(rbox, disk, index)
138:       
139:       Rudy::Routines.rescue {
140:         unless disk.volume_exists?
141:           msg = "Creating volume... "
142:           disk.create
143:           Rudy::Utils.waiter(2, 60, STDOUT, msg) { 
144:             disk.volume_available?
145:           }
146:         end
147:       }
148:       
149:       raise Rudy::Metadata::UnknownObject, disk.name unless disk.exists?
150:       disk.refresh!
151:       
152:       unless @@global.force
153:         raise Rudy::Disks::AlreadyAttached, disk.name if disk.volume_attached?
154:       end
155:       
156:       devices = rbox.stash.attached_volumes.collect { |v| v.device }
157:       if devices.member? disk.device
158:         li "Device ID #{disk.device} is taken. Using #{devices.sort.last.succ}"
159:         disk.device = devices.sort.last.succ 
160:         disk.save :replace
161:       end
162:       
163:       Rudy::Routines.rescue {
164:         msg = "Attaching #{disk.volid} to #{rbox.stash.instid}... "
165:         disk.volume_attach(rbox.stash.instid)
166:         Rudy::Utils.waiter(3, 30, STDOUT, msg) { 
167:           disk.volume_attached?
168:         }
169:       }
170:     end