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.")
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")
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")