def main(): """ Generate openstack users then add them to the DB """ driver = AccountDriver(secrets.OPENSTACK_ARGS) #Build the admin driver for openstack first. driver.create_identity(secrets.OPENSTACK_ADMIN_KEY, secrets.OPENSTACK_ADMIN_SECRET, secrets.OPENSTACK_ADMIN_TENANT, True) success = 1 #Add the others core_services = ['atmo_test' ] #'sgregory', 'jmatt', 'edwins', 'cjlarose','mlent'] for username in core_services: try: password = driver.hashpass(username) user = driver.get_user(username) if not user: user = driver.create_user(username, usergroup=True) print 'New OStack User - %s Pass - %s' % (user.name, password) else: print 'Found OStack User - %s Pass - %s' % (user.name, password) #ASSERT: User exists on openstack, create an identity for them. ident = driver.create_identity(user.name, password, project_name=username) success += 1 print 'New OStack Identity - %s:%s' % (ident.id, ident) except Exception as e: print "Problem adding username: %s" % username print e raise print "Total users created:%s/%s" % (success, len(core_services))
def set_provider_quota(identity_uuid, limit_dict=None): """ """ identity = Identity.objects.get(uuid=identity_uuid) if not identity.credential_set.all(): #Can't update quota if credentials arent set return if not limit_dict: limit_dict = _get_hard_limits(identity.provider) if identity.provider.get_type_name().lower() == 'openstack': driver = get_cached_driver(identity=identity) username = identity.created_by.username user_id = driver._connection._get_user_id() tenant_id = driver._connection._get_tenant_id() membership = IdentityMembership.objects.get( identity__uuid=identity_uuid, member__name=username) user_quota = membership.quota if user_quota: #Don't go above the hard-set limits per provider. if user_quota.cpu > limit_dict['cpu']: user_quota.cpu = limit_dict['cpu'] if user_quota.memory > limit_dict['ram']: user_quota.memory = limit_dict['ram'] #Use THESE values... values = {'cores': user_quota.cpu, 'ram': user_quota.memory * 1024} logger.info("Updating quota for %s to %s" % (username, values)) ad = AccountDriver(identity.provider) admin_driver = ad.admin_driver admin_driver._connection.ex_update_quota_for_user( tenant_id, user_id, values) return True
def main(): """ Add a user to openstack. """ parser = argparse.ArgumentParser() parser.add_argument('users', type=str, nargs='+') args = parser.parse_args() openstack_prov = Provider.objects.get(location='OPENSTACK') driver = AccountDriver(openstack_prov) success = 0 for username in args.users: print "Adding username... %s" % username try: if not is_atmo_user(username): print "User is not in the atmo-user group.\n"\ + "User does not exist in Atmosphere." raise Exception("User does not exist in Atmosphere.") user = driver.get_user(username) if not user: identity = driver.create_account(username) credentials = identity.credential_set.all() print 'New OStack User - Credentials: %s ' % (credentials) send_new_provider_email(username, "Openstack") else: password = driver.hashpass(username) identity = driver.create_identity(user.name, password, project_name=username) credentials = identity.credential_set.all() print 'Found OStack User - Credentials: %s' % (credentials) #ASSERT: User exists on openstack, create an identity for them. success += 1 print 'New OStack Identity - %s:%s' % (identity.id, identity) except Exception as e: print "Problem adding username: %s" % username print e raise print "Total users created:%s/%s" % (success, len(args.users))
def set_provider_quota(identity_id): """ """ identity = Identity.objects.get(id=identity_id) if not identity.credential_set.all(): #Can't update quota if credentials arent set return if identity.provider.get_type_name().lower() == 'openstack': driver = get_esh_driver(identity) username = identity.created_by.username user_id = driver._connection._get_user_id() tenant_id = driver._connection._get_tenant_id() membership = IdentityMembership.objects.get(identity__id=identity_id, member__name=username) user_quota = membership.quota if user_quota: values = {'cores': user_quota.cpu, 'ram': user_quota.memory * 1024} logger.info("Updating quota for %s to %s" % (username, values)) ad = AccountDriver(identity.provider) admin_driver = ad.admin_driver admin_driver._connection.ex_update_quota_for_user( tenant_id, user_id, values) return True