class LogicalSwitch(mf.ModelBase, mixins.Name, mixins.Version, mixins.Topic, mixins.UniqueKey, mixins.BasicEvents): table_name = "lswitch" is_external = fields.BoolField() mtu = fields.IntField() subnets = fields.ListField(Subnet) segmentation_id = fields.IntField() # TODO(oanson) Validate network_type network_type = fields.StringField() # TODO(oanson) Validate physical_network physical_network = fields.StringField() qos_policy = df_fields.ReferenceField(qos.QosPolicy) def find_subnet(self, subnet_id): for subnet in self.subnets: if subnet.id == subnet_id: return subnet def add_subnet(self, subnet): self.subnets.append(subnet) def remove_subnet(self, subnet_id): for idx, subnet in enumerate(self.subnets): if subnet.id == subnet_id: return self.subnets.pop(idx)
class Occurrence(models.Base): affected = fields.IntField(required=False, nullable=True, help_text="Affected number") donors = fields.IntField(required=False, nullable=True, help_text="Donors number") project = fields.StringField(required=False, nullable=True, help_text="Project")
class ProviderOpenMetrics(models.Base): count = fields.IntField(required=True) limit = fields.IntField(required=True) @staticmethod def build(json): return ProviderOpenMetrics( count = json["count"], limit = json["limit"] )
class BGPSpeaker(mf.ModelBase, mixins.Topic, mixins.Name): table_name = "bgp_speaker" local_as = fields.IntField(required=True) peers = df_fields.ReferenceListField(BGPPeer) host_routes = fields.ListField(host_route.HostRoute) prefix_routes = fields.ListField(host_route.HostRoute) ip_version = fields.IntField(required=True) def remove_peer(self, peer_id): self.peers[:] = [peer for peer in self.peers if peer.id != peer_id]
class SecurityGroupRule(mf.ModelBase, mixins.BasicEvents, mixins.Topic, mixins.Version): direction = df_fields.EnumField(RULE_DIRECTION, required=True) ethertype = df_fields.EnumField(RULE_ETHERTYPE, required=True) port_range_max = fields.IntField() port_range_min = fields.IntField() protocol = df_fields.IpProto() remote_group_id = fields.StringField() remote_ip_prefix = df_fields.IpNetworkField() security_group_id = fields.StringField()
class TP53SomaticDetails(models.Base): age = fields.IntField(help_text="Age", required=False, nullable=True) country = fields.StringField(help_text="Country", required=False, nullable=True) effect = fields.StringField(help_text="Effect", required=False, nullable=True) morphology = fields.StringField(help_text="Morphology", required=False, nullable=True) mut_rate = fields.IntField(help_text="Mutation rate", required=False, nullable=True) pub_med_references = fields.ListField(items_types=(int,), help_text="PubMed References", required=False, nullable=True) sample_source = fields.StringField(help_text="Sample source", required=False, nullable=True) stage = fields.StringField(help_text="Stage", required=False, nullable=True) structural_motif = fields.StringField(help_text="Structural Motif", required=False, nullable=True) topography = fields.StringField(help_text="Topography", required=False, nullable=True)
class TP53GermlineDetails(models.Base): age_at_diagnosis = fields.IntField(help_text="Age at diagnosis", required=False, nullable=True) country = fields.StringField(help_text="Country", required=False, nullable=True) effect = fields.StringField(help_text="Effect", required=False, nullable=True) familycase = fields.StringField(help_text="Family case", required=False, nullable=True) familycase_group = fields.StringField(help_text="Family case group", required=False, nullable=True) family_code = fields.StringField(help_text="Family code", required=False, nullable=True) generation = fields.StringField(help_text="Generation", required=False, nullable=True) morphology = fields.StringField(help_text="Morphology", required=False, nullable=True) sex = fields.StringField(help_text="Sex", required=False, nullable=True) topography = fields.StringField(help_text="Topography", required=False, nullable=True) unaffected = fields.IntField(help_text="Unaffected", required=False, nullable=True)
class ModelMetrics(models.Base): daily = fields.IntField(required=True) weekly = fields.IntField(required=True) monthly = fields.IntField(required=True) @staticmethod def build(json): return ModelMetrics( daily = json["daily"], weekly = json["weekly"], monthly = json["monthly"] )
class LogicalSwitch(mf.ModelBase, mixins.Name, mixins.Version, mixins.Topic, mixins.UniqueKey, mixins.BasicEvents): table_name = "lswitch" is_external = fields.BoolField() mtu = fields.IntField() segmentation_id = fields.IntField() # TODO(oanson) Validate network_type network_type = fields.StringField() # TODO(oanson) Validate physical_network physical_network = fields.StringField() qos_policy = df_fields.ReferenceField(qos.QosPolicy)
class Author(Gettable, models.Base): aliases = fields.ListField([str]) authorId = fields.StringField() citationVelocity = fields.IntField() influentialCitationCount = fields.IntField() name = fields.StringField() papers = LazyListField(['Paper']) url = fields.StringField() def can_get(self): return self.authorId is not None def endpoint(self): return '/author/{authorId}'.format(authorId=self.authorId)
class SwitchPort(mf.ModelBase, mixins.BasicEvents, mixins.Name): #定义表结构 table_name = 'switch_port' #port编号 port_num = fields.IntField() #admin状态 admin_state = df_fields.EnumField(('up', 'down')) lport = df_fields.ReferenceField(l2.LogicalPort) #接口类型 type = df_fields.EnumField(( constants.SWITCH_BRIDGE_INTERFACE, constants.SWITCH_PATCH_INTERFACE, constants.SWITCH_COMPUTE_INTERFACE, constants.SWITCH_TUNNEL_INTERFACE, constants.SWITCH_UNKNOWN_INTERFACE, ), ) #对端信息 peer = fields.StringField() #接口mac地址 mac_in_use = df_fields.MacAddressField() # attached_mac = df_fields.MacAddressField() #隧道类型 tunnel_type = fields.StringField()
class Person(models.Base): name = fields.StringField(default="John Doe") age = fields.IntField(default=18) pet = fields.EmbeddedField(Pet, default=Pet(kind="Cat")) nicknames = fields.ListField( items_types=(str,), default=["yo", "dawg"]) profession = fields.StringField(default=None)
class BGPPeer(mf.ModelBase, mixins.Topic, mixins.Name): table_name = "bgp_peer" peer_ip = df_fields.IpAddressField(required=True) remote_as = fields.IntField(required=True) auth_type = fields.StringField() password = fields.StringField()
class Somatic(models.Base): version = fields.StringField(help_text="Version") id = fields.StringField(help_text="ID", required=False, nullable=True) occurrence = fields.ListField(required=False, nullable=True, items_types=(Occurrence, ), help_text="Occurrence") affected_donors = fields.IntField(help_text="Affected Donors", required=False, nullable=True) project_count = fields.IntField(help_text="Project Count", required=False, nullable=True) main_data = fields.StringField(help_text="Main data point", required=False, nullable=True)
class Provider(models.Base): id = fields.IntField() endpoint = fields.StringField(required=True) type = fields.StringField(required=True) available = fields.BoolField(required=True) available_at = fields.DateTimeField(required=True) available_expires_at = fields.DateTimeField(required=True) created_at = fields.DateTimeField(required=True) tasks = fields.EmbeddedField(ProviderMetrics, required=True) open_tasks = fields.EmbeddedField(ProviderOpenMetrics, required=True) sent_tasks = fields.EmbeddedField(ProviderMetrics, required=True) stats = fields.EmbeddedField(ProviderStats, required=True) @staticmethod def build(json): return Provider( id = json["id"], endpoint = json["endpoint"], type = json["type"], available = json["available"], available_at = json["available_at"], available_expires_at = json["available_expires_at"], created_at = json["created_at"], tasks = ProviderMetrics.build(json["tasks"]), open_tasks = ProviderOpenMetrics.build(json["open_tasks"]), sent_tasks = ProviderMetrics.build(json["sent_tasks"]), stats = ProviderStats.build(json["stats"]) )
class Person(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() car = fields.EmbeddedField([Viper, Lamborghini]) computer = fields.ListField([PC, Laptop, Tablet])
class Person(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() cash = fields.FloatField() meta = fields.GenericField()
class Person(models.Base): name = fields.StringField( validators=validators.Length(maximum_value=20) ) surname = fields.StringField() age = fields.IntField()
class Person(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() kids = fields.ListField(Kid) car = fields.EmbeddedField(Car)
class Person(models.Base): name = fields.StringField(required=True, validators=[validator1, validator2]) surname = fields.StringField(required=True) age = fields.IntField(validators=validator3) cash = fields.FloatField()
class Person(models.Base): name = fields.StringField() surname = fields.StringField() age = fields.IntField() cash = fields.FloatField() extra_data = fields.DictField()
class RemoteLabeledRoute(mf.ModelBase, mixins.BasicEvents): table_name = 'rlroutes' destination = df_fields.IpNetworkField(required=True) nexthop = df_fields.IpAddressField(required=True) label = fields.IntField(required=True) helper_port = fields.StringField(required=True)
class Person(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() cash = fields.FloatField() extra = fields.DictField()
class Person(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() kids = fields.ListField(Kid, default=[Kid(name="Name", surname="Surname")]) car = fields.EmbeddedField(Car)
class Link(models.Base): ideaIdFrom = fields.IntField(required=True) ideaIdTo = fields.IntField(required=True) attr = fields.EmbeddedField(Attributes) defaults = {'attr': {'style': {"color": "#FF0000", "lineStyle": "dashed"}}} def __init__(self, **kwargs): updatedKwargs = dict(self.defaults) updatedKwargs.update(kwargs) super(Link, self).__init__(**updatedKwargs) def setColor(self, color): self.populate(**{'attr': {'style': {'color': color}}}) def setLineStyle(self, style): #style in dashed , self.populate(**{'attr': {'style': {'lineStyle': style}}})
class LocalLabeledRoute(mf.ModelBase, mixins.BasicEvents): table_name = 'llroutes' dest_ip = df_fields.IpNetworkField(required=True) # dest_mac = df_fields.MacAddressField(required=True) port = fields.StringField(required=True) # host = df_fields.IpAddressField(required=True) label = fields.IntField(required=True)
class ChildPortSegmentation(mf.ModelBase, mixins.Topic, mixins.BasicEvents): table_name = 'child_port_segmentation' parent = df_fields.ReferenceField(l2.LogicalPort, required=True) port = df_fields.ReferenceField(l2.LogicalPort, required=True) segmentation_type = df_fields.EnumField(SUPPORTED_SEGMENTATION_TYPES, required=True) segmentation_id = fields.IntField(required=True)
class Kid(models.Base): name = fields.StringField(required=True) surname = fields.StringField(required=True) age = fields.IntField() toys = fields.ListField(Toy) def __init__(self, some_value): pass
class Person2(models.Base): name = fields.StringField() surname = fields.StringField() age = fields.IntField() def __str__(self): return self.name
class CircularMapModel(models.Base): """ Test model used in the following test, must be defined outside function for lazy loading """ mapping = fields.MapField(fields.IntField(), fields.EmbeddedField("CircularMapModel"), default=None)