This tree was mixed up, with an old version of the EC2 Observer. This
change copies across the version demo'd the OpenCloud developer meeting.
diff --git a/planetstack/ec2_observer/steps/sync_users.py b/planetstack/ec2_observer/steps/sync_users.py
index 71f9c0f..d742186 100644
--- a/planetstack/ec2_observer/steps/sync_users.py
+++ b/planetstack/ec2_observer/steps/sync_users.py
@@ -1,20 +1,43 @@
 import os
 import base64
-import hashlib
+import random
+import time
+from datetime import datetime 
 from django.db.models import F, Q
 from planetstack.config import Config
-from observer.openstacksyncstep import OpenStackSyncStep
-from core.models.user import User, UserDeployments
+from ec2_observer.syncstep import SyncStep
+from core.models.user import User
+from core.models.site import *
+from ec2_observer.awslib import *
+import pdb
 
-class SyncUsers(OpenStackSyncStep):
-    provides=[User]
-    requested_interval=0
+class SyncUsers(SyncStep):
+	provides=[User]
+	requested_interval=0
 
-    def fetch_pending(self):
-        return User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+	def fetch_pending(self, deletion):
+		users = User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
+		if (users):
+			key_sig = aws_run('ec2 describe-key-pairs')
+			ec2_keys = key_sig['KeyPairs']
+		else:
+			ec2_keys = []
 
-    def sync_record(self, user):
-        for user_deployment in UserDeployments.objects.filter(user=user):
-            # bump the 'updated' field so user account are updated across 
-            # deployments.
-            user_deployment.save()
+		for user in users:
+			if (user.public_key): 
+				key_name = user.email.lower().replace('@', 'AT').replace('.', '')
+				key_found = False
+
+				for key in ec2_keys:
+					if (key['KeyName']==key_name):
+						key_found = True
+						break
+
+				if (not key_found):
+					aws_run('ec2 import-key-pair --key-name %s --public-key-material "%s"'%(key_name, user.public_key))
+					
+		return users
+
+	def sync_record(self, node):
+		node.save()
+