def move_cartridge(cart, source_gear, destination_gear)
app = source_gear.app
prof = app.profile_name_map[app.default_profile]
cinst = ComponentInstance::find_component_in_cart(prof, app, cart, app.get_name_prefix)
ginst = app.group_instance_map[cinst.group_instance_name]
if destination_gear.nil?
res, destination_gear = ginst.add_gear(app)
keep_uid = false
else
keep_uid = (source_gear.uid==destination_gear.uid)
end
source_container = source_gear.get_proxy
destination_container = destination_gear.get_proxy
idle, leave_stopped, quota_blocks, quota_files = get_cart_status(app, source_gear, cart)
pre_move_cart(cart, source_gear, leave_stopped, keep_uid)
rsync_keyfile = Rails.configuration.auth[:rsync_keyfile]
log_debug `eval \`ssh-agent\`; ssh-add #{rsync_keyfile}; ssh -o StrictHostKeyChecking=no -A root@#{source_container.get_ip_address} "rsync -aA#{ keep_uid ? 'X' : ''} -e 'ssh -o StrictHostKeyChecking=no' /var/lib/openshift/#{source_gear.uuid}/#{cart}/ root@#{destination_container.get_ip_address}:/var/lib/openshift/#{destination_gear.uuid}/#{cart}"; ssh-agent -k`
post_move_cart(cart, destination_gear, keep_uid, idle)
source_gear.deconfigure(cinst)
end