UserAppServer

shatterednirvana edited this page Sep 10, 2012 · 2 revisions

Executive Summary: Handles user and application data within AppScale.

Why do we need it?

Google App Engine provides a Users API that leverages Google Accounts to authenticate users. As AppScale does not have access to Google Accounts, it has to implement support for the Users API via an alternative method. The UserAppServer fills this role, and also provides support for handling application-level data.

What does it do, and how does it do it?

The UserAppServer exposes a SOAP interface that can be used to add, delete, and modify user or application-level data, storing this data in whatever database the user has specified (via the AppDB translation layer).

When does it do it?

In response to queries for user or application data, or whenever users or applications need to be created or destroyed.

Where does it do it?

A UserAppServer runs on each database node within an AppScale deployment.

Developer stuff

The UserAppServer is written in Python, and its code can be found in appscale/AppDB/soap_server.py. Because of this name, some documents informally refer to the UserAppServer as the SOAP Server.

The UserAppServer doesn't have tests right now. Boo! You could help us out a lot by writing some tests for the UserAppServer. To match other Python code, we'd appreciate it a lot if you used unittest and flexmock. If you did, we'd also love it if you modified Rakefile to run the test suite via rake userappserver:test (but if you don't it's not a big deal).