def main(): for prov in Provider.objects.filter(type__name__icontains='openstack'): if not prov.is_active(): continue print "Importing machine membership for %s" % prov accounts = OSAccounts(prov) if not accounts: print "Aborting import: Could not retrieve OSAccounts driver "\ "for Provider %s" % prov continue admin_driver = get_admin_driver(prov) if not admin_driver: print "Aborting import: Could not retrieve admin_driver "\ "for Provider %s" % prov continue private_images = admin_driver.filter_machines( accounts.list_all_images(is_public=False), black_list=["eki-", "eri-", "ChromoSnapShot"]) public_images = admin_driver.filter_machines( accounts.list_all_images(is_public=True), black_list=["eki-", "eri-", "ChromoSnapShot"]) fix_public_images(public_images, prov, accounts) fix_private_images(private_images, prov, accounts) fix_private_images_without_repr(private_images, prov, accounts)
def update_membership(): from core.models import ApplicationMembership, Provider, ProviderMachine from service.accounts.openstack import AccountDriver as OSAcctDriver from service.accounts.eucalyptus import AccountDriver as EucaAcctDriver for provider in Provider.objects.all(): if not provider.is_active(): return [] if provider.type.name.lower() == 'openstack': driver = OSAcctDriver(provider) else: logger.warn("Encountered unknown ProviderType:%s, expected" " [Openstack] " % (provider.type.name, )) continue images = driver.list_all_images() changes = 0 for img in images: pm = ProviderMachine.objects.filter(identifier=img.id, provider=provider) if not pm or len(pm) > 1: logger.debug("pm filter is bad!") logger.debug(pm) continue else: pm = pm[0] app_manager = pm.application.applicationmembership_set if not img.is_public: #Lookup members image_members = accts.image_manager.shared_images_for( image_id=img.id) #add machine to each member #(Who owns the cred:ex_project_name) in MachineMembership #for member in image_members: else: members = app_manager.all() if members: logger.info("Application for PM:%s used to be private." " %s Users membership has been revoked. " % (img.id, len(members))) changes += len(members) members.delete() #if MachineMembership exists, remove it (No longer private) logger.info("Total Updates to machine membership:%s" % changes) return changes
def update_membership(): from core.models import ApplicationMembership, Provider, ProviderMachine from service.accounts.openstack import AccountDriver as OSAcctDriver from service.accounts.eucalyptus import AccountDriver as EucaAcctDriver for provider in Provider.objects.all(): if not provider.is_active(): return [] if provider.type.name.lower() == 'openstack': driver = OSAcctDriver(provider) else: logger.warn("Encountered unknown ProviderType:%s, expected" " [Openstack]") continue images = driver.list_all_images() changes = 0 for img in images: pm = ProviderMachine.objects.filter(identifier=img.id, provider=provider) if not pm or len(pm) > 1: logger.debug("pm filter is bad!") logger.debug(pm) continue else: pm = pm[0] app_manager = pm.application.applicationmembership_set if not img.is_public: #Lookup members image_members = accts.image_manager.shared_images_for( image_id=img.id) #add machine to each member #(Who owns the cred:ex_project_name) in MachineMembership #for member in image_members: else: members = app_manager.all() if members: logger.info("Application for PM:%s used to be private." " %s Users membership has been revoked. " % (img.id, len(members))) changes += len(members) members.delete() #if MachineMembership exists, remove it (No longer private) logger.info("Total Updates to machine membership:%s" % changes) return changes