Skip to content
Snippets Groups Projects
Select Git revision
  • 009460e35a5ed0159e1e2ab5a2767be03caca799
  • master default protected
  • revert-cs032-ccd-ip
  • deploy-components-parallel
  • fix-chrony-exporter
  • L2SS-2407-swap-iers-caltable-monitoring-port
  • L2SS-2357-fix-ruff
  • sync-up-with-meta-pypcc
  • stabilise-landing-page
  • all-stations-lofar2
  • v0.39.7-backports
  • Move-sdptr-to-v1.5.0
  • fix-build-ubuntu
  • tokens-in-env-files
  • fix-build
  • L2SS-2214-deploy-cdb
  • fix-missing-init
  • add-power-hardware-apply
  • L2SS-2129-Add-Subrack-Routine
  • Also-listen-internal-to-rpc
  • fix-build-dind
  • v0.55.5-r2 protected
  • v0.52.8-rc1 protected
  • v0.55.5 protected
  • v0.55.4 protected
  • 0.55.2.dev0
  • 0.55.1.dev0
  • 0.55.0.dev0
  • v0.54.0 protected
  • 0.53.2.dev0
  • 0.53.1.dev0
  • v0.52.3-r2 protected
  • remove-snmp-client
  • v0.52.3 protected
  • v0.52.3dev0 protected
  • 0.53.1dev0
  • v0.52.2-rc3 protected
  • v0.52.2-rc2 protected
  • v0.52.2-rc1 protected
  • v0.52.1.1 protected
  • v0.52.1 protected
41 results

device_digitalbeam_tests.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    add_functions_and_triggers.sql 39.33 KiB
    --add triggers and trigger functions to radb (note, there are also the notification triggers in the add_notifications.sql file)
    
    BEGIN;
    
    -- only issue >warnings log messages. (only during this transaction)
    SET LOCAL client_min_messages=warning;
    
    CREATE OR REPLACE FUNCTION resource_allocation.on_task_updated()
      RETURNS trigger AS
    $BODY$
    DECLARE
        claim_tentative_status_id int := 0; --beware: hard coded instead of lookup for performance
        claim_claimed_status_id int := 1; --beware: hard coded instead of lookup for performance
        task_approved_status_id int := 300; --beware: hard coded instead of lookup for performance
    BEGIN
      IF NEW.status_id <> OLD.status_id THEN
        IF NEW.status_id = task_approved_status_id THEN
            UPDATE resource_allocation.resource_claim rc SET status_id=claim_tentative_status_id WHERE rc.task_id=NEW.id AND rc.status_id <> claim_tentative_status_id;
        ELSIF NEW.status_id = ANY(ARRAY[400, 500, 600, 900, 1000, 1100]) THEN
            --prevent task status to be upgraded to scheduled (or beyond) when not all its claims are claimed
            IF EXISTS (SELECT id FROM resource_allocation.resource_claim WHERE task_id = NEW.id AND status_id <> claim_claimed_status_id) THEN
                RAISE EXCEPTION 'Cannot update task status from % to % when not all its claims are claimed', OLD.status_id, NEW.status_id;
            END IF;
        END IF;
    END IF;
    RETURN NEW;
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION resource_allocation.on_task_updated()
      OWNER TO resourceassignment;
    COMMENT ON FUNCTION resource_allocation.on_task_updated()
      IS 'function which is called by task table update trigger, which updates all the tasks resource claims to tentative state.';
    
    DROP TRIGGER IF EXISTS T_on_task_updated ON resource_allocation.task CASCADE;
    CREATE TRIGGER T_on_task_updated
      AFTER UPDATE
      ON resource_allocation.task
      FOR EACH ROW
      EXECUTE PROCEDURE resource_allocation.on_task_updated();
    COMMENT ON TRIGGER T_on_task_updated ON resource_allocation.task
      IS 'task table update trigger, calls the resource_allocation.on_task_updated() function.';
    
    ---------------------------------------------------------------------------------------------------------------------
    
    CREATE OR REPLACE FUNCTION resource_allocation.delete_conflict_reasons_after_resource_claim_update()
      RETURNS trigger AS
    $BODY$
    BEGIN
      IF OLD.status_id = 2 AND NEW.status_id <> 2 THEN   --new status is not conflict
        DELETE FROM resource_allocation.resource_claim_conflict_reason rccr WHERE rccr.resource_claim_id = NEW.id;
      END IF;
    RETURN NEW;
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION resource_allocation.delete_conflict_reasons_after_resource_claim_update()
      OWNER TO resourceassignment;
    COMMENT ON FUNCTION resource_allocation.delete_conflict_reasons_after_resource_claim_update()
      IS 'function which is called by resource_claim table update trigger, which deletes resource_claim_conflict_reasons when the claim status is updated to !conflict.';
    
    DROP TRIGGER IF EXISTS T_delete_conflict_reasons_after_resource_claim_update ON resource_allocation.resource_claim CASCADE;
    CREATE TRIGGER T_delete_conflict_reasons_after_resource_claim_update
      AFTER UPDATE
      ON resource_allocation.resource_claim
      FOR EACH ROW
      EXECUTE PROCEDURE resource_allocation.delete_conflict_reasons_after_resource_claim_update();