Exemplo n.º 1
0
Arquivo: state.py Projeto: nbashev/noc
class State(Dictionary):
    class Meta(object):
        name = "state"
        layout = "flat"

    name = StringField()
    workflow = StringField()
    is_default = BooleanField()
    is_productive = BooleanField()
Exemplo n.º 2
0
class ObjectProfile(Dictionary):
    class Meta(object):
        name = "objectprofile"
        layout = "flat"

    name = StringField()
    # ObjectProfile Level
    level = UInt8Field()
    enable_ping = BooleanField()
    enable_box_discovery = BooleanField()
    enable_periodic_discovery = BooleanField()
Exemplo n.º 3
0
class Workflow(Dictionary):
    class Meta:
        name = "workflow"
        layout = "flat"

    name = StringField()
    is_active = BooleanField()
Exemplo n.º 4
0
class ManagedObject(Model):
    class Meta(object):
        db_table = "managedobjects"
        engine = MergeTree("date", ("managed_object", "ts"))

    date = DateField(description=_("Date"))
    ts = DateTimeField(description=_("Created"))
    managed_object = ReferenceField(ManagedObjectDict,
                                    description=_("Object Name"))
    # Location
    administrative_domain = ReferenceField(AdministrativeDomain,
                                           description=_("Admin. Domain"))
    segment = ReferenceField(NetworkSegment, description=_("Network Segment"))
    container = ReferenceField(Container, description=_("Container"))
    location = StringField(description="Geo location")
    level = UInt16Field(description=_("Level"))
    # Coordinates
    x = Float64Field(description=_("Longitude"))
    y = Float64Field(description=_("Latitude"))
    # Management
    pool = ReferenceField(Pool, description=_("Pool Name"))
    name = StringField(description=_("Name"))
    hostname = StringField(description=_("Hostaname"))
    ip = IPv4Field(description=_("IP Address"))
    is_managed = BooleanField(description=_("Is Managed"))
    # Platform
    profile = ReferenceField(Profile, description=_("Profile"))
    vendor = ReferenceField(Vendor, description=_("Vendor"))
    platform = ReferenceField(Platform, description=_("Platform"))
    hw_version = StringField(description=_("HW. Version"))
    version = ReferenceField(Version, description=_("Version"))
    bootprom_version = StringField(description=_("BootPROM. Version"))
    n_interfaces = Int32Field(description=_("Interface count"))
    n_subscribers = Int32Field(description=_("Subscribers count"))
    n_services = Int32Field(description=_("Services count"))
    # Topology
    n_neighbors = Int32Field(description=_("Neighbors"))
    n_links = Int32Field(description=_("Links count"))
    nri_links = Int32Field(description=_("Links (NRI)"))
    mac_links = Int32Field(description=_("Links (MAC)"))
    stp_links = Int32Field(description=_("Links (STP)"))
    lldp_links = Int32Field(description=_("Links (LLDP)"))
    cdp_links = Int32Field(description=_("Links (CDP)"))
    # Capabilities
    has_stp = BooleanField(description=_("Has STP"))
    has_lldp = BooleanField(description=_("Has LLDP"))
    has_cdp = BooleanField(description=_("Has CDP"))
    has_snmp = BooleanField(description=_("Has SNMP"))
    has_snmp_v1 = BooleanField(description=_("Has SNMP v1"))
    has_snmp_v2c = BooleanField(description=_("Has SNMP v2c"))
    # Counter
    uptime = Float64Field(description=_("Uptime"))
    # SerialNumber
    serials = ArrayField(StringField(), description=_("Serial Numbers"))
    # Tags
    tags = ArrayField(StringField(), description=_("Tags"))

    @classmethod
    def transform_query(cls, query, user):
        if not user or user.is_superuser:
            return query  # No restrictions
        # Get user domains
        domains = UserAccess.get_domains(user)
        # Resolve domains against dict
        domain_ids = [
            x.bi_id
            for x in AdministrativeDomainM.objects.filter(id__in=domains)
        ]
        filter = query.get("filter", {})
        dl = len(domain_ids)
        if not dl:
            return None
        elif dl == 1:
            q = {"$eq": [{"$field": "administrative_domain"}, domain_ids[0]]}
        else:
            q = {"$in": [{"$field": "administrative_domain"}, domain_ids]}
        if filter:
            query["filter"] = {"$and": [query["filter"], q]}
        else:
            query["filter"] = q
        return query