# File lib/openshift-origin-msg-broker-mcollective/lib/openshift/mcollective_application_container_proxy.rb, line 573
      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
        pre_move_cart(cart, source_gear, leave_stopped, keep_uid)

        # rsync
        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`

        # move and post-move
        post_move_cart(cart, destination_gear, keep_uid, idle)

        # deconfigure old gear
        source_gear.deconfigure(cinst)
      end