Skip to content

Extending the App

Extending the application is welcome, however it is best to open an issue first, to ensure that a PR would be accepted and makes sense in terms of features and design.

Entity Relation Diagram

---
Title: DNS Models Entity Relation Diagram
---
erDiagram
    DNSModel {
    }

    DNSView {
        charfield name UK
        textfield description
    }

    ipam_PrefixModel {}

    DNSViewPrefixAssignment {
        DNSView dns_view FK
        ipam_PrefixModel prefix FK
    }

    DNSRegistrar {
        charfield name UK
        url url
        charfield account_number
    }

    extras_StatusModel {}

    DNSRegistration {
        DNSRegistrar dns_registrar FK
        DNSZone dns_zone FK
        extras_StatusModel status FK
        datefield expiration_date
        boolean auto_renewal
        boolean registry_locked
        boolean transfer_locked
        boolean privacy_enabled
        boolean website_forwarding_enabled
        integer renewal_term_months
        boolean dnssec_enabled
    }

    tenancy_TenantModel {}

    DNSZone {
        charfield name UK
        DNSView dns_view FK
        integer ttl
        charfield filename
        textfield description
        string soa_mname
        email soa_rname
        integer soa_refresh
        integer soa_retry
        integer soa_expire
        integer soa_serial
        integer soa_minimum
        tenancy_TenantModel tenant FK
        boolean auto_create_ptr
    }

    DNSRecord {
        charfield name UK
        DNSZone zone FK
        integer ttl
        textfield description
        charfield comment
    }

    ipam_IPaddressModel {}

    ARecord {
        ipam_IPaddressModel ip_address FK
    }

    AAAARecord {
        ipam_IPaddressModel ip_address FK
    }

    CNAMERecord {
        charfield alias
    }

    MXRecord {
        integer preference
        charfield mail_server
    }

    TXTRecord {
        charfield text
    }

    PTRRecord {
        charfield ptrdname
    }

    NSRecord {
        charfield server
    }

    SRVRecord {
        integer priority
        integer weight
        integer port
        charfield target
    }

    DNSModel ||--o{ DNSZone : implements
    DNSModel ||--o{ DNSRecord : implements
    DNSRecord ||--o{ ARecord: implements
    DNSRecord ||--o{ AAAARecord: implements
    DNSRecord ||--o{ CNAMERecord: implements
    DNSRecord ||--o{ MXRecord: implements
    DNSRecord ||--o{ TXTRecord: implements
    DNSRecord ||--o{ PTRRecord: implements
    DNSRecord ||--o{ NSRecord: implements
    DNSRecord ||--o{ SRVRecord: implements

    DNSZone ||--o{ DNSRecord: "contains"
    DNSZone }o--|| DNSView: "belongs to"
    DNSZone }o--o| tenancy_TenantModel: "belongs to"

    DNSView ||--o{ DNSViewPrefixAssignment: "assigns"
    ipam_PrefixModel ||--o{ DNSViewPrefixAssignment: "assigned via"

    DNSRegistration }o--|| DNSRegistrar: "registered with"
    DNSRegistration }o--|| DNSZone: "registers"
    DNSRegistration }o--|| extras_StatusModel: "has status"

    ARecord }o--|| ipam_IPaddressModel: "references"
    AAAARecord }o--|| ipam_IPaddressModel: "references"

    ARecord ||..o{ PTRRecord: "auto-creates (when zone.auto_create_ptr)"
    AAAARecord ||..o{ PTRRecord: "auto-creates (when zone.auto_create_ptr)"