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 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
예제 #3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--provider",
                        type=int,
                        help="Atmosphere provider ID"
                        " to use when importing users.")
    parser.add_argument("--users",
                        help="LDAP usernames to import. (comma separated)")
    parser.add_argument("--admin",
                        action="store_true",
                        help="Users addded as admin and staff users.")
    args = parser.parse_args()
    users = None
    added = 0
    if args.provider:
        provider = Provider.objects.get(id=args.provider)
    else:
        provider = Provider.objects.get(location='iPlant Cloud - Tucson')
    print "Using Provider: %s" % provider
    type_name = provider.type.name.lower()
    if type_name == 'openstack':
        acct_driver = OSAccountDriver(provider)
    elif type_name == 'eucalyptus':
        acct_driver = EucaAccountDriver(provider)
    else:
        raise Exception("Could not find an account driver for Provider with"
                        " type:%s" % type_name)
    if not args.users:
        print "Retrieving all 'atmo-user' members in LDAP."
        users = get_members('atmo-user')
    else:
        users = args.users.split(",")
    for user in users:
        # Then add the Openstack Identity
        try:
            id_exists = Identity.objects.filter(
                created_by__username__iexact=user, provider=provider)
            if id_exists:
                continue
            acct_driver.create_account(user, max_quota=args.admin)
            added += 1
            if args.admin:
                make_admin(user)
                print "%s added as admin." % (user)
            else:
                print "%s added." % (user)
        except Exception as e:
            print "Problem adding %s." % (user)
            print e.message
    print "Total users added:%s" % (added)
예제 #4
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--provider", type=int,
                        help="Atmosphere provider ID"
                        " to use when importing users.")
    parser.add_argument("--users",
                        help="LDAP usernames to import. (comma separated)")
    parser.add_argument("--admin", action="store_true",
                        help="Users addded as admin and staff users.")
    args = parser.parse_args()
    users = None
    added = 0
    if args.provider:
        provider = Provider.objects.get(id=args.provider)
    else:
        provider = Provider.objects.get(location='iPlant Cloud - Tucson')
    print "Using Provider: %s" % provider
    type_name = provider.type.name.lower()
    if type_name == 'openstack':
        acct_driver = OSAccountDriver(provider)
    elif type_name == 'eucalyptus':
        acct_driver = EucaAccountDriver(provider)
    else:
        raise Exception("Could not find an account driver for Provider with"
                        " type:%s" % type_name)
    if not args.users:
        print "Retrieving all 'atmo-user' members in LDAP."
        users = get_members('atmo-user')
    else:
        users = args.users.split(",")
    for user in users:
        # Then add the Openstack Identity
        try:
            id_exists = Identity.objects.filter(
                    created_by__username__iexact=user,
                    provider=provider)
            if id_exists:
                continue
            acct_driver.create_account(user, max_quota=args.admin)
            added += 1
            if args.admin:
                make_admin(user)
                print "%s added as admin." % (user)
            else:
                print "%s added." % (user)
        except Exception as e:
            print "Problem adding %s." % (user)
            print e.message
    print "Total users added:%s" % (added)
예제 #5
0
    def setUp(self):
        #Initialize core DB
        #Ensure there is an account created/ready to go

        #self.euca_admin_id = create_euca_provider()
        #self.euca_provider = self.euca_admin_id.provider
        #euca_accounts = EucaAccounts(self.euca_provider)
        #euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
        #self.euca_id = euca_accounts.create_account(euca_user, max_quota=True)

        self.os_admin_id = create_os_provider()
        self.os_provider = self.os_admin_id.provider
        os_accounts = OSAccounts(self.os_provider)
        self.os_id = os_accounts.create_account(settings.TEST_RUNNER_USER,
                                                os_accounts.hashpass(
                                                    settings.TEST_RUNNER_USER),
                                                max_quota=True)
        user = AtmosphereUser.objects.get(username=settings.TEST_RUNNER_USER)
        user.is_staff = True
        user.is_superuser = True
        user.save()
        #Initialize API
        self.api_client = TokenAPIClient()
        self.api_client.login(username=settings.TEST_RUNNER_USER,
                              password=settings.TEST_RUNNER_PASS)
        reverse_link = reverse('api:public_apis:instance-list',
                               args=[self.os_id.provider.id, self.os_id.id])
        self.os_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse('api:public_apis:machine-request-list',
                               args=[self.os_id.provider.id, self.os_id.id])
        self.os_request_url = urljoin(settings.SERVER_URL, reverse_link)
예제 #6
0
    def setUp(self):
        #Initialize core DB
        #Ensure there is an account created/ready to go

        #self.euca_admin_id = create_euca_provider()
        #self.euca_provider = self.euca_admin_id.provider
        #euca_accounts = EucaAccounts(self.euca_provider)
        #euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
        #self.euca_id = euca_accounts.create_account(euca_user, max_quota=True)

        self.os_admin_id = create_os_provider()
        self.os_provider = self.os_admin_id.provider
        os_accounts = OSAccounts(self.os_provider)
        self.os_id = os_accounts.create_account(
                settings.TEST_RUNNER_USER,
                os_accounts.hashpass(settings.TEST_RUNNER_USER), max_quota=True)
        user = AtmosphereUser.objects.get(username=settings.TEST_RUNNER_USER)
        user.is_staff = True
        user.is_superuser = True
        user.save()
        #Initialize API
        self.api_client = TokenAPIClient()
        self.api_client.login(
                username=settings.TEST_RUNNER_USER,
                password=settings.TEST_RUNNER_PASS)
        reverse_link = reverse('api:v1:instance-list',
                               args=[self.os_id.provider.id,
                                     self.os_id.id])
        self.os_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse('api:v1:machine-request-list',
                               args=[self.os_id.provider.id,
                                     self.os_id.id])
        self.os_request_url = urljoin(settings.SERVER_URL, reverse_link)
예제 #7
0
 def setUp(self):
     #Initialize core DB
     self.euca_admin_id = create_euca_provider()
     self.euca_provider = self.euca_admin_id.provider
     self.os_admin_id = create_os_provider()
     self.os_provider = self.os_admin_id.provider
     #Ensure there is an account created/ready to go
     euca_accounts = EucaAccounts(self.euca_provider)
     euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
     self.euca_id = euca_accounts.create_account(euca_user)
     os_accounts = OSAccounts(self.os_provider)
     self.os_id = os_accounts.create_account(
             settings.TEST_RUNNER_USER, 
             os_accounts.hashpass(settings.TEST_RUNNER_USER))
     #Initialize API
     self.api_client = TokenAPIClient()
     self.api_client.login(
             username=settings.TEST_RUNNER_USER,
             password=settings.TEST_RUNNER_PASS)
     reverse_link = reverse('api:public_apis:machine-list',
                            args=[self.os_id.provider.id,
                                  self.os_id.id])
     self.os_machine_url = urljoin(settings.SERVER_URL, reverse_link)
     reverse_link = reverse('api:public_apis:machine-list',
                           args=[self.euca_id.provider.id,
                                 self.euca_id.id])
     self.euca_machine_url = urljoin(settings.SERVER_URL, reverse_link)
def main():
    """
    TODO: Add argparse, --delete : Deletes existing users in openstack (Never use in PROD)
    """
    openstack = Provider.objects.filter(
        type__name__iexact="openstack").order_by("id")
    if not openstack:
        raise Provider.DoesNotExist("No OpenStack Provider Found")
    openstack = openstack[0]
    os_driver = OSAccountDriver(openstack)
    found = 0
    create = 0
    usernames = os_driver.list_usergroup_names()
    quota_dict = {'cpu': 10, 'memory': 20, 'storage': 10, 'storage_count': 10}
    higher_quota = Quota.objects.get_or_create(**quota_dict)[0]
    for user in usernames:
        # Openstack account exists, but we need the identity.
        ident = os_driver.create_account(user)
        if is_staff(ident):
            im = ident.identity_membership.all()[0]
            #Disable time allocation
            im.allocation = None
        #Raise everybody's quota
        im.quota = higher_quota
        im.save()
    print "Total users added to atmosphere:%s" % len(usernames)
def main():
    """
    TODO: Add argparse, --delete : Deletes existing users in openstack (Never use in PROD)
    """
    openstack = Provider.objects.filter(
        type__name__iexact="openstack").order_by("id")
    if not openstack:
        raise Provider.DoesNotExist("No OpenStack Provider Found")
    openstack = openstack[0]
    os_driver = OSAccountDriver(openstack)
    found = 0
    create = 0
    usernames = os_driver.list_usergroup_names()
    quota_dict = {
        'cpu': 10,
        'memory': 20,
        'storage': 10,
        'storage_count': 10
    }
    higher_quota = Quota.objects.get_or_create(**quota_dict)[0]
    for user in usernames:
        # Openstack account exists, but we need the identity.
        ident = os_driver.create_account(user)
        if is_staff(ident):
            im = ident.identity_membership.all()[0]
            # Disable time allocation
            im.allocation = None
        # Raise everybody's quota
        im.quota = higher_quota
        im.save()
    print "Total users added to atmosphere:%s" % len(usernames)
예제 #10
0
 def setUp(self):
     #Initialize core DB
     self.euca_admin_id = create_euca_provider()
     self.euca_provider = self.euca_admin_id.provider
     self.os_admin_id = create_os_provider()
     self.os_provider = self.os_admin_id.provider
     #Ensure there is an account created/ready to go
     euca_accounts = EucaAccounts(self.euca_provider)
     euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
     self.euca_id = euca_accounts.create_account(euca_user)
     os_accounts = OSAccounts(self.os_provider)
     self.os_id = os_accounts.create_account(
         settings.TEST_RUNNER_USER,
         os_accounts.hashpass(settings.TEST_RUNNER_USER))
     #Initialize API
     self.api_client = TokenAPIClient()
     self.api_client.login(username=settings.TEST_RUNNER_USER,
                           password=settings.TEST_RUNNER_PASS)
     reverse_link = reverse('api:public_apis:machine-list',
                            args=[self.os_id.provider.id, self.os_id.id])
     self.os_machine_url = urljoin(settings.SERVER_URL, reverse_link)
     reverse_link = reverse(
         'api:public_apis:machine-list',
         args=[self.euca_id.provider.id, self.euca_id.id])
     self.euca_machine_url = urljoin(settings.SERVER_URL, reverse_link)
예제 #11
0
    def setUp(self):
        #Initialize core DB
        self.euca_admin_id = create_euca_provider()
        self.euca_provider = self.euca_admin_id.provider
        self.os_admin_id = create_os_provider()
        self.os_provider = self.os_admin_id.provider
        #Ensure there is an account created/ready to go
        euca_accounts = EucaAccounts(self.euca_provider)
        euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
        self.euca_id = euca_accounts.create_account(euca_user, max_quota=True)
        os_accounts = OSAccounts(self.os_provider)
        self.os_id = os_accounts.create_account(settings.TEST_RUNNER_USER,
                                                os_accounts.hashpass(
                                                    settings.TEST_RUNNER_USER),
                                                max_quota=True)
        #user = AtmosphereUser.objects.get(username=settings.TEST_RUNNER_USER)
        #user.is_staff = True
        #user.is_superuser = True
        #user.save()
        #Initialize API
        self.api_client = TokenAPIClient()
        self.api_client.login(username=settings.TEST_RUNNER_USER,
                              password=settings.TEST_RUNNER_PASS)
        reverse_link = reverse('api:public_apis:instance-list',
                               args=[self.os_id.provider.id, self.os_id.id])
        self.os_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse('api:public_apis:volume-list',
                               args=[self.os_id.provider.id, self.os_id.id])
        #Prepare Openstack
        self.os_volume_url = urljoin(settings.SERVER_URL, reverse_link)
        instance_data = {
            "size_alias": "2",
            "machine_alias": "0f539197-3718-40bc-8a29-c22e0841684f",
            "name": "test volume attachment",
            "delete_before": False
        }
        (self.os_instance_id,
         self.os_instance_ip) = standup_instance(self, self.os_instance_url,
                                                 **instance_data)

        #Prepare Eucalyptus
        reverse_link = reverse(
            'api:public_apis:volume-list',
            args=[self.euca_id.provider.id, self.euca_id.id])
        self.euca_volume_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse(
            'api:public_apis:instance-list',
            args=[self.euca_id.provider.id, self.euca_id.id])
        self.euca_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        instance_data = {
            "size_alias": "m1.small",
            "machine_alias": "emi-E7F8300F",
            "name": "test volume attachment",
            "delete_before": False
        }
        (self.euca_instance_id,
         self.euca_instance_ip) = standup_instance(self,
                                                   self.euca_instance_url,
                                                   **instance_data)
예제 #12
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='OpenStack-Tucson (BETA)'))
    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)
예제 #13
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)
예제 #14
0
    def setUp(self):
        #Initialize core DB
        self.euca_admin_id = create_euca_provider()
        self.euca_provider = self.euca_admin_id.provider
        self.os_admin_id = create_os_provider()
        self.os_provider = self.os_admin_id.provider
        #Ensure there is an account created/ready to go
        euca_accounts = EucaAccounts(self.euca_provider)
        euca_user = euca_accounts.get_user(settings.TEST_RUNNER_USER)
        self.euca_id = euca_accounts.create_account(euca_user, max_quota=True)
        os_accounts = OSAccounts(self.os_provider)
        self.os_id = os_accounts.create_account(
                settings.TEST_RUNNER_USER, 
                os_accounts.hashpass(settings.TEST_RUNNER_USER), max_quota=True)
        #user = AtmosphereUser.objects.get(username=settings.TEST_RUNNER_USER)
        #user.is_staff = True
        #user.is_superuser = True
        #user.save()
        #Initialize API
        self.api_client = TokenAPIClient()
        self.api_client.login(
                username=settings.TEST_RUNNER_USER,
                password=settings.TEST_RUNNER_PASS)
        reverse_link = reverse('api:public_apis:instance-list',
                              args=[self.os_id.provider.id,
                                    self.os_id.id])
        self.os_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse('api:public_apis:volume-list',
                               args=[self.os_id.provider.id,
                                     self.os_id.id])
        #Prepare Openstack
        self.os_volume_url = urljoin(settings.SERVER_URL, reverse_link)
        instance_data = {
                "size_alias":"2",
                "machine_alias":"0f539197-3718-40bc-8a29-c22e0841684f",
                "name":"test volume attachment",
                "delete_before":False
            }
        (self.os_instance_id, self.os_instance_ip) = standup_instance(
                self, self.os_instance_url, **instance_data)

        #Prepare Eucalyptus
        reverse_link = reverse('api:public_apis:volume-list',
                              args=[self.euca_id.provider.id,
                                    self.euca_id.id])
        self.euca_volume_url = urljoin(settings.SERVER_URL, reverse_link)
        reverse_link = reverse('api:public_apis:instance-list',
                              args=[self.euca_id.provider.id,
                                    self.euca_id.id])
        self.euca_instance_url = urljoin(settings.SERVER_URL, reverse_link)
        instance_data = {
                "size_alias":"m1.small",
                "machine_alias":"emi-E7F8300F",
                "name":"test volume attachment",
                "delete_before":False
            }
        (self.euca_instance_id, self.euca_instance_ip) = standup_instance(
                self, self.euca_instance_url, **instance_data)
예제 #15
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
    raise Exception("Must manually set core_services!! See Line 30.")
    core_services = ['jchansen', ] # get_core_services() # ['estevetest03', ]
    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)
예제 #16
0
def setUp_openstack():
    # Initialize core DB
    global os_base_instance_url
    os_admin_id = create_os_provider()
    os_provider = os_admin_id.provider
    os_accounts = OSAccounts(os_provider)
    os_id = os_accounts.create_account(
        settings.TEST_RUNNER_USER, os_accounts.hashpass(settings.TEST_RUNNER_USER), max_quota=True
    )
    reverse_link = reverse("instance-list", args=[os_id.provider.id, os_id.id])
    os_base_instance_url = urljoin(settings.SERVER_URL, reverse_link)
예제 #17
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--provider",
                        type=int,
                        help="Atmosphere provider ID"
                        " to use when importing users.")
    parser.add_argument("users",
                        help="LDAP usernames to import. (comma separated)")
    parser.add_argument("--admin",
                        action="store_true",
                        help="Users addded as admin and staff users.")
    args = parser.parse_args()
    users = None
    added = 0
    if args.provider:
        os_driver = OSAccountDriver(Provider.objects.get(id=args.provider))
    else:
        os_driver = OSAccountDriver(
            Provider.objects.get(location='iPlant Workshop Cloud - Tucson'))
    users = args.users.split(",")
    for user in users:
        # Then add the Openstack Identity
        try:
            if is_atmo_user(user):
                os_driver.create_account(user, max_quota=args.admin)
                added += 1
            else:
                print "%s is not in the ldap atmosphere group (atmo-user)." % (
                    user)
                continue
            if args.admin:
                make_admin(user)
                print "%s added as admin." % (user)
            else:
                print "%s added." % (user)
        except Exception as e:
            print "Problem adding %s." % (user)
            print e.message
    print "Total users added:%s" % (added)
예제 #18
0
def setUp_openstack():
    #Initialize core DB
    global os_base_instance_url
    os_admin_id = create_os_provider()
    os_provider = os_admin_id.provider
    os_accounts = OSAccounts(os_provider)
    os_id = os_accounts.create_account(settings.TEST_RUNNER_USER,
                                       os_accounts.hashpass(
                                           settings.TEST_RUNNER_USER),
                                       max_quota=True)
    reverse_link = reverse('api:public_apis:instance-list',
                           args=[os_id.provider.id, os_id.id])
    os_base_instance_url = urljoin(settings.SERVER_URL, reverse_link)
예제 #19
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--provider", type=int,
                        help="Atmosphere provider ID"
                        " to use when importing users.")
    parser.add_argument("users",
                        help="LDAP usernames to import. (comma separated)")
    parser.add_argument("--admin", action="store_true",
                        help="Users addded as admin and staff users.")
    args = parser.parse_args()
    users = None
    added = 0
    if args.provider:
        os_driver = OSAccountDriver(Provider.objects.get(id=args.provider))
    else:
        os_driver = OSAccountDriver(
            Provider.objects.get(location='iPlant Workshop Cloud - Tucson'))
    users = args.users.split(",")
    for user in users:
        # Then add the Openstack Identity
        try:
            if is_atmo_user(user):
                os_driver.create_account(user, max_quota=args.admin)
                added += 1
            else:
                print "%s is not in the ldap atmosphere group (atmo-user)." % (user)
                continue
            if args.admin:
                make_admin(user)
                print "%s added as admin." % (user)
            else:
                print "%s added." % (user)
        except Exception as e:
            print "Problem adding %s." % (user)
            print e.message
    print "Total users added:%s" % (added)
예제 #20
0
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='iPlant Cloud - Tucson')
    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))
예제 #21
0
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))