Esempio n. 1
0
    def fill_auth_record_info(self, record):
        tenant_name = hrn_to_os_tenant_name(record['hrn'])
        tenant = self.shell.auth_manager.tenants.find(name=tenant_name)
        researchers = []
        pis = []

        # look for users and pis in slice tenant
        for user in tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(user, tenant):
                hrn = ".".join([self.hrn, tenant.name, user.name])
                if role.name.lower() == 'pi':
                    pis.append(hrn)
                elif role.name.lower() in ['user', 'member']:
                    researchers.append(hrn)

        # look for slices
        slices = []
        all_tenants = self.shell.auth_manager.tenants.list() 
        for tmp_tenant in all_tenants:
            if tmp_tenant.name.startswith(tenant.name+"."):
                slices.append(".".join([self.hrn, tmp_tenant.name])) 

        record['name'] = tenant_name
        record['description'] = tenant.description
        record['PI'] = pis
        record['enabled'] = tenant.enabled
        record['researchers'] = researchers
        record['slices'] = slices
        return record
Esempio n. 2
0
    def fill_auth_record_info(self, record):
        tenant_name = hrn_to_os_tenant_name(record['hrn'])
        tenant = self.shell.auth_manager.tenants.find(name=tenant_name)
        researchers = []
        pis = []

        # look for users and pis in slice tenant
        for user in tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(
                    user, tenant):
                hrn = ".".join([self.hrn, tenant.name, user.name])
                if role.name.lower() == 'pi':
                    pis.append(hrn)
                elif role.name.lower() in ['user', 'member']:
                    researchers.append(hrn)

        # look for slices
        slices = []
        all_tenants = self.shell.auth_manager.tenants.list()
        for tmp_tenant in all_tenants:
            if tmp_tenant.name.startswith(tenant.name + "."):
                slices.append(".".join([self.hrn, tmp_tenant.name]))

        record['name'] = tenant_name
        record['description'] = tenant.description
        record['PI'] = pis
        record['enabled'] = tenant.enabled
        record['researchers'] = researchers
        record['slices'] = slices
        return record
Esempio n. 3
0
    def register_slice(self, sfa_record, hrn):
        # add slice description, name, researchers, PI
        name = hrn_to_os_tenant_name(hrn)
        description = sfa_record.get('description', None)
        self.shell.auth_manager.tenants.create(name, description)
        tenant = self.shell.auth_manager.tenants.find(name=name)
        auth_hrn = OSXrn(xrn=hrn, type='slice').get_authority_hrn()
        parent_tenant_name = OSXrn(xrn=auth_hrn,
                                   type='slice').get_tenant_name()
        parent_tenant = self.shell.auth_manager.tenants.find(
            name=parent_tenant_name)
        researchers = sfa_record.get('researchers', [])
        for researcher in researchers:
            name = Xrn(researcher).get_leaf()
            user = self.shell.auth_manager.users.find(name=name)
            self.shell.auth_manager.roles.add_user_role(user, 'Member', tenant)
            self.shell.auth_manager.roles.add_user_role(user, 'user', tenant)

        pis = sfa_record.get('pis', [])
        for pi in pis:
            name = Xrn(pi).get_leaf()
            user = self.shell.auth_manager.users.find(name=name)
            self.shell.auth_manager.roles.add_user_role(user, 'pi', tenant)
            self.shell.auth_manager.roles.add_user_role(
                user, 'pi', parent_tenant)

        return tenant
Esempio n. 4
0
    def register_slice(self, sfa_record, hrn):
        # add slice description, name, researchers, PI
        name = hrn_to_os_tenant_name(hrn)
        description = sfa_record.get('description', None)
        self.shell.auth_manager.tenants.create(name, description)
        tenant = self.shell.auth_manager.tenants.find(name=name)
        auth_hrn = OSXrn(xrn=hrn, type='slice').get_authority_hrn()
        parent_tenant_name = OSXrn(xrn=auth_hrn, type='slice').get_tenant_name()
        parent_tenant = self.shell.auth_manager.tenants.find(name=parent_tenant_name)
        researchers = sfa_record.get('researchers', [])
        for researcher in researchers:
            name = Xrn(researcher).get_leaf()
            user = self.shell.auth_manager.users.find(name=name)
            self.shell.auth_manager.roles.add_user_role(user, 'Member', tenant)
            self.shell.auth_manager.roles.add_user_role(user, 'user', tenant)
            

        pis = sfa_record.get('pis', [])
        for pi in pis:
            name = Xrn(pi).get_leaf()
            user = self.shell.auth_manager.users.find(name=name)
            self.shell.auth_manager.roles.add_user_role(user, 'pi', tenant)
            self.shell.auth_manager.roles.add_user_role(user, 'pi', parent_tenant)

        return tenant
Esempio n. 5
0
    def fill_slice_record_info(self, record):
        tenant_name = hrn_to_os_tenant_name(record['hrn'])
        tenant = self.shell.auth_manager.tenants.find(name=tenant_name)
        parent_tenant_name = OSXrn(xrn=tenant_name).get_authority_hrn()
        parent_tenant = self.shell.auth_manager.tenants.find(
            name=parent_tenant_name)
        researchers = []
        pis = []

        # look for users and pis in slice tenant
        for user in tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(
                    user, tenant):
                if role.name.lower() == 'pi':
                    user_tenant = self.shell.auth_manager.tenants.find(
                        id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    pis.append(hrn)
                elif role.name.lower() in ['user', 'member']:
                    user_tenant = self.shell.auth_manager.tenants.find(
                        id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    researchers.append(hrn)

        # look for pis in the slice's parent (site/organization) tenant
        for user in parent_tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(
                    user, parent_tenant):
                if role.name.lower() == 'pi':
                    user_tenant = self.shell.auth_manager.tenants.find(
                        id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    pis.append(hrn)
        record['name'] = tenant_name
        record['description'] = tenant.description
        record['PI'] = pis
        if pis:
            record['geni_creator'] = pis[0]
        else:
            record['geni_creator'] = None
        record['researcher'] = researchers
        return record
Esempio n. 6
0
    def fill_slice_record_info(self, record):
        tenant_name = hrn_to_os_tenant_name(record['hrn'])
        tenant = self.shell.auth_manager.tenants.find(name=tenant_name)
        auth_tenant_name = OSXrn(xrn=tenant_name).get_authority_hrn()
        auth_tenant = self.shell.auth_manager.tenants.find(name=auth_tenant_name)
        researchers = []
        pis = []

        # look for users and pis in slice tenant
        for user in tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(user, tenant):
                if role.name.lower() == 'pi':
                    user_tenant = self.shell.auth_manager.tenants.find(id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    pis.append(hrn)
                elif role.name.lower() in ['user', 'member']:
                    user_tenant = self.shell.auth_manager.tenants.find(id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    researchers.append(hrn)

        # look for pis in the slice's parent (site/organization) tenant
        for user in auth_tenant.list_users():
            for role in self.shell.auth_manager.roles.roles_for_user(user, auth_tenant):
                if role.name.lower() == 'pi':
                    user_tenant = self.shell.auth_manager.tenants.find(id=user.tenantId)
                    hrn = ".".join([self.hrn, user_tenant.name, user.name])
                    pis.append(hrn)
        record['name'] = tenant_name
        record['description'] = tenant.description
        record['PI'] = pis
        if pis:
            record['geni_creator'] = pis[0]
        else:
            record['geni_creator'] = None
        record['researcher'] = researchers
        return record