Google App Engine sigue avanzando y dando nuevas funcionalidades, desgraciadamente, si no conoces Python y tu lenguaje es Java, las cosas van un poco más lentas… A pesar de que la API de GAE indica (en inglés) los pasos a seguir para realizar una migración de una aplicación a otra, me he encontrado con numerosos problemas hasta llegar a migrar la base de datos.

Requisitos:

- Permisos: El usuario con el que trabajemos debe tener el rol “Owner” en ambas aplicaciones (aplicación origen de datos y aplicación destino de los datos)
Datastore Admin: Debe estar activo en ambas aplicaciones. Esta funcionalidad se puede activar desde el Dashboard de la aplicación, en: Application Settings – Built-ins
Activar el Remote API: Simplemente hay que incluir las siguientes líneas en los web.xml de ambos proyectos:

	<servlet>
	    <servlet-name>RemoteApi</servlet-name>
	   <servlet-class> com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
	</servlet>
	<servlet-mapping>
	    <servlet-name>RemoteApi</servlet-name>
	    <url-pattern>/remote_api</url-pattern>
	</servlet-mapping>

- Pyhton: Podéis descargarlo aquí (versión 2.7)
SDK de GAE-Pyhton: Podéis descargarlo aquí (versión 1.7)

Creando el Runtime de Pyhton:

Aunque trabajemos bajo GAE con Java, aún no está activa la posibilidad de realizar las migraciones con alguna de sus utilidades. Así que debemos crear un Runtime de Python que nos da la posibilidad de activar el trabajo con la base de datos. Aunque, como en mi caso, desconozcáis el lenguaje, realizar este paso no es complejo:

1. Debemos descargar la aplicación datastore_admin_app. Son dos ficheros que debemos incluir en el mismo directorio del SDK de Google-Python (por defecto: “DISCO:Archivos de programa\Google\google_appengine“, en una nueva carpeta (en este ejemplo: “GAE“)

2. Editamos ambos ficheros, indicando los IDs de las aplicaciones con las que trabajaremos:
app.yaml: En la línea 7 debemos indicar el ID de nuestra aplicación destino en la migración
appengine_config.py En la línea 37 debemos indicar el ID de nuestra aplicación origen de la migración

3. Actualizamos el Runtime en ambas aplicaciones , ejecutando desde una consola del sistema:

appcfg.py -A <ID DE LA APLICACIÓN ORIGEN/DESTINO> update GAE/

Ojo, ¡se debe ejecutar una vez por aplicación! Es decir, dicha instrucción se hace con el ID de la aplicación origen y posteriormente con la de destino. Así creamos el runtime necesario en ambos proyectos.

Ejemplo instalación Datastore Admin App

Migrando

Este proceso ya se puede hacer desde nuestro Dashboard, en el apartado que activamos inicialmente: Datastore Admin

En este apartado, tendremos un listado con las tablas de la base de datos de la aplicación. Accedemos a la aplicación origen, marcamos las tablas deseadas y pulsamos el botón “Copy to another app

GAE - Tablas en Datastore Admin

Nos pedirá el ID de la aplicación destino y procederá a copiar:

GAE - Copiado en el Datastore Admin

Tras esto, ya podremos ver en el Datastore Admin de nuestra aplicación destino las tablas migradas.