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):
+ if (deletion):
+ return []
- 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()
+ 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 = []
+
+ 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()
+