def main(): """ Using the keyname and public_key defined in settings Ensure that the keypair has been distributed to every identity on the provider. It is essential that all users carry the same keypair to allow Deployment access """ keyname = settings.ATMOSPHERE_KEYPAIR_NAME with open(settings.ATMOSPHERE_KEYPAIR_FILE, 'r') as pub_key_file: public_key = pub_key_file.read() print "Adding keypair: %s Contents: %s" % (keyname, public_key) os_providers = Provider.objects.filter(type__name="OpenStack") for prov in os_providers: count = 0 identities = Identity.objects.filter(provider=prov) os_accounts = OSAccountDriver(prov) for ident in identities: creds = os_accounts.parse_identity(ident) try: (keypair, created) = os_accounts.get_or_create_keypair( creds['username'], creds['password'], creds['tenant_name'], keyname, public_key) except Unauthorized, exc: print "Could not create keypair for %s. Error message: %s"\ % (creds['username'], exc.message) if created: print "Created keypair %s for user %s"\ % (keypair, creds['username']) count += 1 print 'Keypairs added for %s accounts on %s' % (count, prov)
def keypair_init(core_identity): os_driver = OSAccountDriver(core_identity.provider) creds = core_identity.get_credentials() with open(settings.ATMOSPHERE_KEYPAIR_FILE, 'r') as pub_key_file: public_key = pub_key_file.read() keypair, created = os_driver.get_or_create_keypair( creds['key'], creds['secret'], creds['ex_tenant_name'], settings.ATMOSPHERE_KEYPAIR_NAME, public_key) if created: logger.info("Created keypair for %s" % creds['key']) return keypair