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
Example #2
0
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
Example #3
0
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)
Example #4
0
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
Example #5
0
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
Example #6
0
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)