Beispiel #1
0
    def buildTableEntry(self,
                        table_name,
                        match_fields=None,
                        default_action=False,
                        action_name=None,
                        action_params=None,
                        priority=None):
        table_entry = p4runtime_pb2.TableEntry()
        table_entry.table_id = self.get_tables_id(table_name)

        if priority is not None:
            table_entry.priority = priority

        if match_fields:
            table_entry.match.extend([
                self.get_match_field_pb(table_name, match_field_name, value)
                for match_field_name, value in match_fields.items()
            ])

        if default_action:
            table_entry.is_default_action = True

        if action_name:
            action = table_entry.action.action
            action.action_id = self.get_actions_id(action_name)
            if action_params:
                action.params.extend([
                    self.get_action_param_pb(action_name, field_name, value)
                    for field_name, value in action_params.items()
                ])
        return table_entry
Beispiel #2
0
    def build_table_entry(self,
                          table_name,
                          match_fields=None,
                          default_action=False,
                          action_name=None,
                          action_params=None,
                          group_id=None,
                          priority=None):
        table_entry = p4runtime_pb2.TableEntry()
        table_entry.table_id = self.get_tables_id(table_name)

        if priority is not None:
            table_entry.priority = priority

        if match_fields:
            table_entry.match.extend([
                self.get_match_field_pb(table_name, match_field_name, value)
                for match_field_name, value in match_fields.iteritems()
            ])

        if default_action:
            table_entry.is_default_action = True

        if action_name:
            action = table_entry.action.action
            action.CopyFrom(self.build_action(action_name, action_params))

        if group_id:
            table_entry.action.action_profile_group_id = group_id

        return table_entry
Beispiel #3
0
    def make_table_entry(self,
                         table_name_and_key,
                         action_name_and_params,
                         priority=None,
                         options=None):
        self.check_table_name_and_key(table_name_and_key)
        table_name = table_name_and_key[0]
        key = table_name_and_key[1]
        self.check_action_name_and_params(action_name_and_params)
        action_name = action_name_and_params[0]
        action_params = action_name_and_params[1]

        table_entry = p4runtime_pb2.TableEntry()
        table_entry.table_id = self.get_table_id(table_name)
        if key is not None:
            self.set_match_key(table_entry, table_name, key)
        else:
            table_entry.is_default_action = True
        if priority:
            table_entry.priority = priority
        if options is not None:
            if 'idle_timeout_ns' in options:
                table_entry.idle_timeout_ns = options['idle_timeout_ns']
            if 'elapsed_ns' in options:
                table_entry.time_since_last_hit.elapsed_ns = options[
                    'elapsed_ns']
            if 'metadata' in options:
                table_entry.metadata = options['metadata']
        self.set_action_entry(table_entry, action_name, action_params)
        return table_entry
Beispiel #4
0
 def buildTableEntry(self,
                     table_name,
                     match_fields={},
                     action_name=None,
                     action_params={}):
     table_entry = p4runtime_pb2.TableEntry()
     table_entry.table_id = self.get_tables_id(table_name)
     if match_fields:
         table_entry.match.extend([
             self.get_match_field_pb(table_name, match_field_name, value)
             for match_field_name, value in match_fields.iteritems()
         ])
     if action_name:
         action = table_entry.action.action
         action.action_id = self.get_actions_id(action_name)
         if action_params:
             action.params.extend([
                 self.get_action_param_pb(action_name, field_name, value)
                 for field_name, value in action_params.iteritems()
             ])
     return table_entry
Beispiel #5
0
    def build_table_entry(self,
                          table_name,
                          match_fields=None,
                          default_action=False,
                          action_name=None,
                          action_params=None,
                          priority=None):
        logger.info(
            'Building table entry to table [%s] with match_fields - [%s] '
            'action - [%s] and params - [%s]', table_name, match_fields,
            action_name, action_params)
        table_entry = p4runtime_pb2.TableEntry()
        table_entry.table_id = self.get_tables_id(table_name)
        logger.debug('Table ID - [%s]', table_entry.table_id)

        if priority is not None:
            table_entry.priority = priority

        if match_fields:
            table_entry.match.extend([
                self.get_match_field_pb(table_name, match_field_name, value)
                for match_field_name, value in match_fields.items()
            ])

        if default_action:
            table_entry.is_default_action = True

        if action_name:
            action = table_entry.action.action
            action.action_id = self.get_actions_id(action_name)
            if action_params:
                logger.info('Action params - [%s]', action_params)
                action.params.extend([
                    self.get_action_param_pb(action_name, field_name, value)
                    for field_name, value in action_params.items()
                ])
        return table_entry