pa_api.xmlapi.types.config.devicegroup

 1from typing import Optional
 2
 3from pydantic import AliasPath, ConfigDict, Field
 4
 5from pa_api.xmlapi.types.utils import List, String, XMLBaseModel
 6
 7from .address import Address
 8from .rules import RuleBase
 9
10
11class DeviceGroup(XMLBaseModel):
12    """
13    This is used to parse the output of the running configuration.
14    """
15
16    model_config = ConfigDict(extra="allow")
17
18    name: String = Field(validation_alias="@name")
19    description: String = ""
20
21    devices: List[String] = Field(
22        validation_alias=AliasPath("devices", "entry", "@name"), default_factory=list
23    )
24    # devices: List[Device] = Field(
25    #     validation_alias=AliasPath("devices", "entry"), default_factory=list
26    # )
27    addresses: List[Address] = Field(
28        validation_alias=AliasPath("address", "entry"), default_factory=list
29    )
30    post_rulebase: Optional[RuleBase] = Field(
31        validation_alias="post-rulebase", default=None
32    )
33    pre_rulebase: Optional[RuleBase] = Field(
34        validation_alias="pre-rulebase", default=None
35    )
36    # applications: List[Application] = Field(
37    #     validation_alias=AliasPath("application", "entry"), default_factory=list
38    # )
39    tags: List[String] = Field(
40        validation_alias=AliasPath("tag", "member"), default_factory=list
41    )
42
43    def iter_rulebases(self):
44        for rulebase in (self.pre_rulebase, self.post_rulebase):
45            if rulebase is not None:
46                yield rulebase
class DeviceGroup(pa_api.xmlapi.types.utils.XMLBaseModel):
12class DeviceGroup(XMLBaseModel):
13    """
14    This is used to parse the output of the running configuration.
15    """
16
17    model_config = ConfigDict(extra="allow")
18
19    name: String = Field(validation_alias="@name")
20    description: String = ""
21
22    devices: List[String] = Field(
23        validation_alias=AliasPath("devices", "entry", "@name"), default_factory=list
24    )
25    # devices: List[Device] = Field(
26    #     validation_alias=AliasPath("devices", "entry"), default_factory=list
27    # )
28    addresses: List[Address] = Field(
29        validation_alias=AliasPath("address", "entry"), default_factory=list
30    )
31    post_rulebase: Optional[RuleBase] = Field(
32        validation_alias="post-rulebase", default=None
33    )
34    pre_rulebase: Optional[RuleBase] = Field(
35        validation_alias="pre-rulebase", default=None
36    )
37    # applications: List[Application] = Field(
38    #     validation_alias=AliasPath("application", "entry"), default_factory=list
39    # )
40    tags: List[String] = Field(
41        validation_alias=AliasPath("tag", "member"), default_factory=list
42    )
43
44    def iter_rulebases(self):
45        for rulebase in (self.pre_rulebase, self.post_rulebase):
46            if rulebase is not None:
47                yield rulebase

This is used to parse the output of the running configuration.

model_config = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: typing.Annotated[str, BeforeValidator(func=<function ensure_str at 0x7f0db0c89bd0>, json_schema_input_type=PydanticUndefined)]
description: typing.Annotated[str, BeforeValidator(func=<function ensure_str at 0x7f0db0c89bd0>, json_schema_input_type=PydanticUndefined)]
devices: Annotated[List[Annotated[str, BeforeValidator(func=<function ensure_str at 0x7f0db0c89bd0>, json_schema_input_type=PydanticUndefined)]], BeforeValidator(func=<function ensure_list at 0x7f0db0c89ab0>, json_schema_input_type=PydanticUndefined)]
addresses: Annotated[List[pa_api.xmlapi.types.config.address.Address], BeforeValidator(func=<function ensure_list at 0x7f0db0c89ab0>, json_schema_input_type=PydanticUndefined)]
tags: Annotated[List[Annotated[str, BeforeValidator(func=<function ensure_str at 0x7f0db0c89bd0>, json_schema_input_type=PydanticUndefined)]], BeforeValidator(func=<function ensure_list at 0x7f0db0c89ab0>, json_schema_input_type=PydanticUndefined)]
def iter_rulebases(self):
44    def iter_rulebases(self):
45        for rulebase in (self.pre_rulebase, self.post_rulebase):
46            if rulebase is not None:
47                yield rulebase
model_fields: ClassVar[Dict[str, pydantic.fields.FieldInfo]] = {'name': FieldInfo(annotation=str, required=True, alias_priority=2, validation_alias='@name', metadata=[BeforeValidator(func=<function ensure_str>, json_schema_input_type=PydanticUndefined)]), 'description': FieldInfo(annotation=str, required=False, default='', metadata=[BeforeValidator(func=<function ensure_str>, json_schema_input_type=PydanticUndefined)]), 'devices': FieldInfo(annotation=List[Annotated[str, BeforeValidator]], required=False, default_factory=list, alias_priority=2, validation_alias=AliasPath(path=['devices', 'entry', '@name']), metadata=[BeforeValidator(func=<function ensure_list>, json_schema_input_type=PydanticUndefined)]), 'addresses': FieldInfo(annotation=List[Address], required=False, default_factory=list, alias_priority=2, validation_alias=AliasPath(path=['address', 'entry']), metadata=[BeforeValidator(func=<function ensure_list>, json_schema_input_type=PydanticUndefined)]), 'post_rulebase': FieldInfo(annotation=Union[RuleBase, NoneType], required=False, default=None, alias_priority=2, validation_alias='post-rulebase'), 'pre_rulebase': FieldInfo(annotation=Union[RuleBase, NoneType], required=False, default=None, alias_priority=2, validation_alias='pre-rulebase'), 'tags': FieldInfo(annotation=List[Annotated[str, BeforeValidator]], required=False, default_factory=list, alias_priority=2, validation_alias=AliasPath(path=['tag', 'member']), metadata=[BeforeValidator(func=<function ensure_list>, json_schema_input_type=PydanticUndefined)])}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

model_computed_fields: ClassVar[Dict[str, pydantic.fields.ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
pa_api.xmlapi.types.utils.XMLBaseModel
from_xml