示例#1
0
 def policy_list_atoms(self, operator, filter):
     """Return a list of atoms that match the given filters."""
     # This method is available for everyone
     atom = Atom(self.db)
     filters = self._parse_filters(filter, {
         'name': None,
         'date': self._parse_create_date_range,
         'create': self._parse_create_date_range,
         'desc': None,
         'foundation': None,
     },
                                   default_filter='name',
                                   default_value=None)
     date_start = date_end = None
     if filters['date']:
         date_start, date_end = filters['date']
         if date_end is NotSet:  # only the specific date should be used
             date_end = date_start
     create_start = create_end = None
     if filters['create']:
         create_start, create_end = filters['create']
         if create_end is NotSet:  # only the specific date should be used
             create_end = create_start
     ret = []
     for row in atom.search(name=filters['name'],
                            description=filters['desc'],
                            create_start=create_start,
                            create_end=create_end,
                            foundation_start=date_start,
                            foundation_end=date_end,
                            foundation=filters['foundation']):
         ret.append({'name': row['name'], 'desc': row['description']})
     return sorted(ret, key=lambda r: r['name'])
示例#2
0
 def policy_list_atoms(self, operator, filter):
     """Return a list of atoms that match the given filters."""
     # This method is available for everyone
     atom = Atom(self.db)
     filters = self._parse_filters(filter,
                                   {'name': None,
                                    'date': self._parse_create_date_range,
                                    'create': self._parse_create_date_range,
                                    'desc': None,
                                    'foundation': None},
                                   default_filter='name',
                                   default_value=None)
     date_start = date_end = None
     if filters['date']:
         date_start, date_end = filters['date']
         if date_end is NotSet:  # only the specific date should be used
             date_end = date_start
     create_start = create_end = None
     if filters['create']:
         create_start, create_end = filters['create']
         if create_end is NotSet:  # only the specific date should be used
             create_end = create_start
     ret = []
     for row in atom.search(name=filters['name'],
                            description=filters['desc'],
                            create_start=create_start,
                            create_end=create_end,
                            foundation_start=date_start,
                            foundation_end=date_end,
                            foundation=filters['foundation']):
         ret.append({
             'name': row['name'],
             'desc': row['description'],
         })
     return sorted(ret, key=lambda r: r['name'])
示例#3
0
def process_atoms(stream):
    """Go through all atoms in the database and send them to the stream."""
    logger.info('process_atoms started')
    db = Factory.get('Database')()
    atom = Atom(db)
    for row in atom.search():
        stream.write(';'.join(
            (row['name'], row['description'], row['foundation']
             or '', row['created_at'].strftime('%Y-%m-%d'))))
        stream.write('\n')
    logger.info('process_atoms done')
def process_atoms(stream):
    """Go through all atoms in the database and send them to the stream."""
    logger.info('process_atoms started')
    db = Factory.get('Database')()
    atom = Atom(db)
    for row in atom.search():
        stream.write(';'.join((row['name'],
                               row['description'],
                               row['foundation'] or '',
                               row['created_at'].strftime('%Y-%m-%d'))))
        stream.write('\n')
    logger.info('process_atoms done')
示例#5
0
    def policy_atom_create(self,
                           operator,
                           name,
                           description,
                           foundation,
                           foundation_date=None):
        """Adds a new atom and its data. Its can only consist of lowercased,
        alpha numrice characters and -."""
        self.ba.assert_dns_superuser(operator.get_entity_id())
        atom = Atom(self.db)
        # validate data
        tmp = atom.illegal_attr(description)
        if tmp:
            raise CerebrumError('Illegal description: %s' % tmp)
        tmp = atom.illegal_attr(foundation)
        if tmp:
            raise CerebrumError('Illegal foundation: %s' % tmp)
        foundation_date = self._parse_date(foundation_date)

        # check that name isn't already in use
        try:
            comp = self._get_component(name)
        except CerebrumError:
            pass
        else:
            raise CerebrumError('A policy already exists with name: %s' % name)
        atom.populate(name, description, foundation, foundation_date)
        atom.write_db()
        return "New atom %s created" % atom.component_name
示例#6
0
    def policy_atom_create(self, operator, name, description, foundation,
                           foundation_date=None):
        """Adds a new atom and its data.

        It can only consist of lowercased, alpha numrice characters and -.
        """
        self.ba.assert_dns_superuser(operator.get_entity_id())
        atom = Atom(self.db)
        # validate data
        tmp = atom.illegal_attr(description)
        if tmp:
            raise CerebrumError('Illegal description: %r' % tmp)
        tmp = atom.illegal_attr(foundation)
        if tmp:
            raise CerebrumError('Illegal foundation: %r' % tmp)
        foundation_date = self._parse_date(foundation_date)

        # check that name isn't already in use
        try:
            self._get_component(name)
        except CerebrumError:
            pass
        else:
            raise CerebrumError('A policy already exists with name: %r' % name)
        atom.populate(name, description, foundation, foundation_date)
        atom.write_db()
        return "New atom %s created" % atom.component_name
示例#7
0
 def __init__(self, db, logger):
     """Initialize the sync with hostpolicy objects.."""
     super(HostpolicySync, self).__init__(db, logger)
     self.component = PolicyComponent(self.db)
     self.role = Role(self.db)
     self.atom = Atom(self.db)