Ejemplo n.º 1
0
    def test_register_trigger_creates_missing_trigger(self):
        NODE_CREATE_PROCEDURE = render_notification_procedure(
            'node_create_notify', 'node_create', 'NEW.system_id')
        register_procedure(NODE_CREATE_PROCEDURE)
        register_trigger("maasserver_node", "node_create_notify", "insert")

        with closing(connection.cursor()) as cursor:
            cursor.execute("SELECT * FROM pg_trigger WHERE "
                           "tgname = 'node_node_create_notify'")
            triggers = cursor.fetchall()

        self.assertEqual(1, len(triggers), "Trigger was not created.")
Ejemplo n.º 2
0
    def test_register_trigger_doesnt_create_trigger_if_already_exists(self):
        NODE_CREATE_PROCEDURE = render_notification_procedure(
            'node_create_notify', 'node_create', 'NEW.system_id')
        register_procedure(NODE_CREATE_PROCEDURE)
        with closing(connection.cursor()) as cursor:
            cursor.execute(
                "DROP TRIGGER IF EXISTS node_node_create_notify ON "
                "maasserver_node;"
                "CREATE TRIGGER node_node_create_notify "
                "AFTER INSERT ON maasserver_node "
                "FOR EACH ROW EXECUTE PROCEDURE node_create_notify();")

        # Will raise an OperationError if trigger already exists.
        register_trigger("maasserver_node", "node_create_notify", "insert")
Ejemplo n.º 3
0
def register_system_triggers():
    """Register all system triggers into the database."""
    # Core
    register_procedure(CORE_GET_MANAGING_COUNT)
    register_procedure(CORE_GET_NUMBER_OF_CONN)
    register_procedure(CORE_GET_NUMBER_OF_PROCESSES)
    register_procedure(CORE_PICK_NEW_REGION)
    register_procedure(CORE_SET_NEW_REGION)

    # RegionRackRPCConnection
    register_procedure(CORE_REGIONRACKRPCONNECTION_INSERT)
    register_trigger(
        "maasserver_regionrackrpcconnection",
        "sys_core_rpc_insert",
        "insert")
    register_procedure(CORE_REGIONRACKRPCONNECTION_DELETE)
    register_trigger(
        "maasserver_regionrackrpcconnection",
        "sys_core_rpc_delete",
        "delete")

    # DHCP
    register_procedure(DHCP_ALERT)

    # - VLAN
    register_procedure(DHCP_VLAN_UPDATE)
    register_trigger("maasserver_vlan", "sys_dhcp_vlan_update", "update")

    # - Subnet
    register_procedure(DHCP_SUBNET_UPDATE)
    register_trigger("maasserver_subnet", "sys_dhcp_subnet_update", "update")
    register_procedure(DHCP_SUBNET_DELETE)
    register_trigger("maasserver_subnet", "sys_dhcp_subnet_delete", "delete")

    # - IPRange
    register_procedure(DHCP_IPRANGE_INSERT)
    register_trigger("maasserver_iprange", "sys_dhcp_iprange_insert", "insert")
    register_procedure(DHCP_IPRANGE_UPDATE)
    register_trigger("maasserver_iprange", "sys_dhcp_iprange_update", "update")
    register_procedure(DHCP_IPRANGE_DELETE)
    register_trigger("maasserver_iprange", "sys_dhcp_iprange_delete", "delete")

    # - StaticIPAddress
    register_procedure(DHCP_STATICIPADDRESS_INSERT)
    register_trigger(
        "maasserver_staticipaddress",
        "sys_dhcp_staticipaddress_insert",
        "insert")
    register_procedure(DHCP_STATICIPADDRESS_UPDATE)
    register_trigger(
        "maasserver_staticipaddress",
        "sys_dhcp_staticipaddress_update",
        "update")
    register_procedure(DHCP_STATICIPADDRESS_DELETE)
    register_trigger(
        "maasserver_staticipaddress",
        "sys_dhcp_staticipaddress_delete",
        "delete")

    # - Interface
    register_procedure(DHCP_INTERFACE_UPDATE)
    register_trigger(
        "maasserver_interface",
        "sys_dhcp_interface_update",
        "update")

    # - Node
    register_procedure(DHCP_NODE_UPDATE)
    register_trigger(
        "maasserver_node",
        "sys_dhcp_node_update",
        "update")

    # - DHCPSnippet
    register_procedure(DHCP_UPDATE_ALL_VLANS)
    register_procedure(DHCP_SNIPPET_UPDATE_SUBNET)
    register_procedure(DHCP_SNIPPET_UPDATE_NODE)
    register_procedure(DHCP_SNIPPET_UPDATE_VALUE)

    register_procedure(DHCP_SNIPPET_INSERT)
    register_trigger(
        "maasserver_dhcpsnippet", "sys_dhcp_snippet_insert", "insert")
    register_procedure(DHCP_SNIPPET_UPDATE)
    register_trigger(
        "maasserver_dhcpsnippet", "sys_dhcp_snippet_update", "update")
    register_procedure(DHCP_SNIPPET_DELETE)
    register_trigger(
        "maasserver_dhcpsnippet", "sys_dhcp_snippet_delete", "delete")

    # - Config/ntp_servers (and ntp_external_only)
    register_procedure(DHCP_CONFIG_NTP_SERVERS_INSERT)
    register_trigger(
        "maasserver_config", "sys_dhcp_config_ntp_servers_insert", "insert")
    register_procedure(DHCP_CONFIG_NTP_SERVERS_UPDATE)
    register_trigger(
        "maasserver_config", "sys_dhcp_config_ntp_servers_update", "update")
    register_procedure(DHCP_CONFIG_NTP_SERVERS_DELETE)
    register_trigger(
        "maasserver_config", "sys_dhcp_config_ntp_servers_delete", "delete")

    # DNS
    # The zone serial is used in the 'sys_dns' triggers. Ensure that it exists
    # before creating the triggers.
    zone_serial.create_if_not_exists()

    # - Domain
    register_procedure(
        render_sys_dns_procedure("sys_dns_domain_insert"))
    register_trigger(
        "maasserver_domain", "sys_dns_domain_insert", "insert")
    register_procedure(
        render_sys_dns_procedure("sys_dns_domain_update"))
    register_trigger(
        "maasserver_domain", "sys_dns_domain_update", "update")
    register_procedure(
        render_sys_dns_procedure("sys_dns_domain_delete", on_delete=True))
    register_trigger(
        "maasserver_domain", "sys_dns_domain_delete", "delete")

    # - StaticIPAddress
    register_procedure(
        render_sys_dns_procedure("sys_dns_staticipaddress_update"))
    register_trigger(
        "maasserver_staticipaddress",
        "sys_dns_staticipaddress_update", "update")

    # - Interface -> StaticIPAddress
    register_procedure(
        render_sys_dns_procedure("sys_dns_nic_ip_link"))
    register_trigger(
        "maasserver_interface_ip_addresses",
        "sys_dns_nic_ip_link", "insert")
    register_procedure(
        render_sys_dns_procedure(
            "sys_dns_nic_ip_unlink", on_delete=True))
    register_trigger(
        "maasserver_interface_ip_addresses",
        "sys_dns_nic_ip_unlink", "delete")

    # - DNSResource
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsresource_insert"))
    register_trigger(
        "maasserver_dnsresource",
        "sys_dns_dnsresource_insert", "insert")
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsresource_update"))
    register_trigger(
        "maasserver_dnsresource",
        "sys_dns_dnsresource_update", "update")
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsresource_delete", on_delete=True))
    register_trigger(
        "maasserver_dnsresource",
        "sys_dns_dnsresource_delete", "delete")

    # - DNSResource -> StaticIPAddress
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsresource_ip_link"))
    register_trigger(
        "maasserver_dnsresource_ip_addresses",
        "sys_dns_dnsresource_ip_link", "insert")
    register_procedure(
        render_sys_dns_procedure(
            "sys_dns_dnsresource_ip_unlink", on_delete=True))
    register_trigger(
        "maasserver_dnsresource_ip_addresses",
        "sys_dns_dnsresource_ip_unlink", "delete")

    # - DNSData
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsdata_insert"))
    register_trigger(
        "maasserver_dnsdata",
        "sys_dns_dnsdata_insert", "insert")
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsdata_update"))
    register_trigger(
        "maasserver_dnsdata",
        "sys_dns_dnsdata_update", "update")
    register_procedure(
        render_sys_dns_procedure("sys_dns_dnsdata_delete", on_delete=True))
    register_trigger(
        "maasserver_dnsdata",
        "sys_dns_dnsdata_delete", "delete")

    # - DNSPublication
    register_procedure(DNS_PUBLISH)
    register_trigger(
        "maasserver_dnspublication",
        "sys_dns_publish", "insert")

    # - Subnet
    register_procedure(
        render_sys_dns_procedure("sys_dns_subnet_insert"))
    register_trigger(
        "maasserver_subnet",
        "sys_dns_subnet_insert", "insert")
    register_procedure(DNS_SUBNET_UPDATE)
    register_trigger(
        "maasserver_subnet",
        "sys_dns_subnet_update", "update")
    register_procedure(
        render_sys_dns_procedure("sys_dns_subnet_delete", on_delete=True))
    register_trigger(
        "maasserver_subnet",
        "sys_dns_subnet_delete", "delete")

    # - Node
    register_procedure(DNS_NODE_UPDATE)
    register_trigger(
        "maasserver_node",
        "sys_dns_node_update", "update")
    register_procedure(
        render_sys_dns_procedure("sys_dns_node_delete", on_delete=True))
    register_trigger(
        "maasserver_node",
        "sys_dns_node_delete", "delete")

    # - Interface
    register_procedure(DNS_INTERFACE_UPDATE)
    register_trigger(
        "maasserver_interface",
        "sys_dns_interface_update", "update")

    # - Config
    register_procedure(DNS_CONFIG_INSERT)
    register_procedure(DNS_CONFIG_UPDATE)
    register_trigger(
        "maasserver_config", "sys_dns_config_insert", "insert")
    register_trigger(
        "maasserver_config", "sys_dns_config_update", "update")

    # Proxy

    # - Subnet
    register_procedure(
        render_sys_proxy_procedure("sys_proxy_subnet_insert"))
    register_trigger(
        "maasserver_subnet",
        "sys_proxy_subnet_insert", "insert")
    register_procedure(PROXY_SUBNET_UPDATE)
    register_trigger(
        "maasserver_subnet",
        "sys_proxy_subnet_update", "update")
    register_procedure(
        render_sys_proxy_procedure("sys_proxy_subnet_delete", on_delete=True))
    register_trigger(
        "maasserver_subnet",
        "sys_proxy_subnet_delete", "delete")

    # - Config/http_proxy (when use_peer_proxy)
    register_procedure(PEER_PROXY_CONFIG_INSERT)
    register_trigger(
        "maasserver_config", "sys_proxy_config_use_peer_proxy_insert",
        "insert")
    register_procedure(PEER_PROXY_CONFIG_UPDATE)
    register_trigger(
        "maasserver_config", "sys_proxy_config_use_peer_proxy_update",
        "update")