def main(): """ TODO: Add argparse, --delete : Deletes existing users in eucalyptus (Never use in PROD) """ euca = Provider.objects.get(location='Eucalyptus (retiring March 4)') euca_driver = EucaAccountDriver(euca) openstack = Provider.objects.get(location='iPlant Cloud - Tucson') os_driver = OSAccountDriver(openstack) all_users = euca_driver.list_users() #Sort by users all_values = sorted(all_users.values(), key=lambda user: user['username']) total = 0 for user_dict in all_values: id_exists = Identity.objects.filter( created_by__username=user_dict['username'], provider=euca) if not id_exists: euca_driver.create_account(user_dict) total += 1 print "Added to Eucalyptus: %s" % user_dict['username'] print "Total users added:%s" % total if include_openstack: print "Adding all eucalyptus users to openstack" total = 0 for user_dict in all_values: id_exists = Identity.objects.filter( created_by__username=user_dict['username'], provider=openstack) if not id_exists: os_driver.create_account(user_dict['username']) total += 1 print "Added to Openstack: %s" % user_dict['username'] print "Total users added to openstack:%s" % total
def get_account_driver(provider, raise_exception=False): """ Create an account driver for a given provider. """ try: if type(provider) == uuid.UUID: provider = CoreProvider.objects.get(uuid=provider) type_name = provider.get_type_name().lower() if 'openstack' in type_name: from service.accounts.openstack_manager import AccountDriver as\ OSAccountDriver return OSAccountDriver(provider) elif 'eucalyptus' in type_name: from service.accounts.eucalyptus import AccountDriver as\ EucaAccountDriver return EucaAccountDriver(provider) except: if type(provider) == uuid.UUID: provider_str = "Provider with UUID %s" % provider else: provider_str = "Provider %s" % provider.location logger.exception("Account driver for provider %s not found." % (provider_str)) if raise_exception: raise return None
def main(): """ TODO: Add argparse, --delete : Deletes existing users in openstack (Never use in PROD) """ euca_driver = EucaAccountDriver( Provider.objects.get(location='EUCALYPTUS')) os_driver = OSAccountDriver(Provider.objects.get(location='iPlant Cloud - Tucson')) found = 0 create = 0 core_services = ['estevetest03', ] # get_core_services() for user in core_services: euca_driver.create_account(user, max_quota=True) # Then add the Openstack Identity os_driver.create_account(user, max_quota=True) make_admin(user) print "Total core-service/admins added:%s" % len(core_services)
def get_account_driver(provider): """ Create an account driver for a given provider. """ try: type_name = provider.get_type_name().lower() if 'openstack' in type_name: from service.accounts.openstack import AccountDriver as\ OSAccountDriver return OSAccountDriver(provider) elif 'eucalyptus' in type_name: from service.accounts.eucalyptus import AccountDriver as\ EucaAccountDriver return EucaAccountDriver(provider) except: logger.exception("Account driver for provider %s not found." % (provider.location)) return None
def get_account_driver(provider_id): try: provider = Provider.objects.get(id=provider_id) except CoreProvider.DoesNotExist: return Response('No provider matching id %s' % provider_id, status=status.HTTP_404_NOT_FOUND) #TODO: We need better logic here. maybe use provider name? provider_name = provider.location.lower() #TODO: How we select args will change.. if 'openstack' in provider_name: driver = OSAccountDriver(provider) elif 'eucalyptus' in provider_name: driver = EucaAccountDriver(provider) #elif 'aws' in provider_name: # driver = AWSAccountDriver(provider) else: raise Exception("Could not find a driver for provider %s" % provider_name) return driver
def start(images): print 'Initializing account drivers' euca_accounts = EucaAccountDriver(Provider.objects.get(id=1)) euca_img_class = euca_accounts.image_manager.__class__ euca_img_creds = euca_accounts.image_creds os_accounts = OSAccountDriver(Provider.objects.get(id=4)) os_img_class = os_accounts.image_manager.__class__ os_img_creds = os_accounts.image_creds migrate_args = { 'download_dir': "/Storage", 'image_id': None, 'xen_to_kvm': True, } print 'Account drivers initialized' for mach_to_migrate in images: migrate_args['image_id'] = mach_to_migrate pm = ProviderMachine.objects.get(identifier=mach_to_migrate) migrate_args['image_name'] = pm.application.name print 'Migrating %s..' % mach_to_migrate # Lookup machine, set nme migrate_image(euca_img_class, euca_img_creds, os_img_class, os_img_creds, **migrate_args)