diff --git a/packaging/dbscripts/inst_sp.sql b/packaging/dbscripts/inst_sp.sql index 376672ae795..4d308354e8e 100644 --- a/packaging/dbscripts/inst_sp.sql +++ b/packaging/dbscripts/inst_sp.sql @@ -65,88 +65,4 @@ BEGIN END;$FUNCTION$ LANGUAGE plpgsql; --- Adds a new glance provider, according to the specified arguments -CREATE OR REPLACE FUNCTION inst_add_glance_provider ( - v_provider_id UUID, - v_provider_name VARCHAR(128), - v_provider_description VARCHAR(4000), - v_provider_url VARCHAR(512), - v_storage_domain_id UUID, - v_auth_required boolean DEFAULT false, - v_auth_username VARCHAR(64) DEFAULT NULL, - v_auth_password TEXT DEFAULT NULL, - v_auth_url TEXT DEFAULT NULL, - v_tenant_name VARCHAR(128) DEFAULT NULL - ) -RETURNS VOID AS $FUNCTION$ -BEGIN - -- Adding the Glance provider - INSERT INTO providers ( - id, - name, - description, - url, - provider_type, - auth_required, - auth_username, - auth_password, - auth_url, - tenant_name - ) - SELECT v_provider_id, - v_provider_name, - v_provider_description, - v_provider_url, - 'OPENSTACK_IMAGE', - v_auth_required, - v_auth_username, - v_auth_password, - v_auth_url, - v_tenant_name - WHERE NOT EXISTS ( - SELECT id - FROM providers - WHERE id = v_provider_id - ); - - -- Adding a proper storage domain static entry - INSERT INTO storage_domain_static ( - id, - storage, - storage_name, - storage_domain_type, - storage_type, - storage_domain_format_type, - recoverable - ) - SELECT v_storage_domain_id, - v_provider_id, - v_provider_name, - 4, - 8, - 0, - true - WHERE NOT EXISTS ( - SELECT id - FROM storage_domain_static - WHERE id = v_storage_domain_id - ); - - -- Adding a proper storage domain dynamic entry - INSERT INTO storage_domain_dynamic ( - id, - available_disk_size, - used_disk_size - ) - SELECT v_storage_domain_id, - NULL, - NULL - WHERE NOT EXISTS ( - SELECT id - FROM storage_domain_dynamic - WHERE id = v_storage_domain_id - ); -END;$FUNCTION$ -LANGUAGE plpgsql; - diff --git a/packaging/dbscripts/upgrade/04_05_0330_remove_defunct_glance_provider.sql b/packaging/dbscripts/upgrade/04_05_0330_remove_defunct_glance_provider.sql new file mode 100644 index 00000000000..dcd1381c6ff --- /dev/null +++ b/packaging/dbscripts/upgrade/04_05_0330_remove_defunct_glance_provider.sql @@ -0,0 +1,63 @@ +DROP FUNCTION IF EXISTS inst_add_glance_provider( + v_provider_id uuid, + v_provider_name varchar(128), + v_provider_description varchar(4000), + v_provider_url varchar(512), + v_storage_domain_id uuid, + v_auth_required boolean, + v_auth_username varchar(64), + v_auth_password text, + v_auth_url text, + v_tenant_name varchar(128) +); + +DO $$ + DECLARE + v_provider_id uuid := 'ceab03af-7220-4d42-8f5c-9b557f5d29af'; + v_sd_id uuid := '072fbaa1-08f3-4a40-9f34-a5ca22dd1d74'; + BEGIN + IF EXISTS ( + SELECT 1 + FROM providers + WHERE id = v_provider_id + AND name = 'ovirt-image-repository' + AND url = 'http://glance.ovirt.org:9292' + ) + AND NOT EXISTS (SELECT 1 FROM disk_profiles WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM external_leases WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM image_storage_domain_map WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM mb_storage WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM quota_limitation WHERE storage_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM repo_file_meta_data WHERE repo_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM storage_domain_dr WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM storage_domains_ovf_info WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM storage_pool_iso_map WHERE storage_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM unregistered_disks WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM unregistered_ovf_of_entities WHERE storage_domain_id = v_sd_id) + AND NOT EXISTS (SELECT 1 FROM vm_static WHERE lease_sd_id = v_sd_id) + + AND NOT EXISTS (SELECT 1 FROM cluster WHERE default_network_provider_id = v_provider_id) + AND NOT EXISTS (SELECT 1 FROM libvirt_secrets WHERE provider_id = v_provider_id) + AND NOT EXISTS (SELECT 1 FROM network WHERE provider_network_provider_id = v_provider_id) + AND NOT EXISTS (SELECT 1 FROM vds_static WHERE host_provider_id = v_provider_id) + AND NOT EXISTS (SELECT 1 FROM vm_static WHERE provider_id = v_provider_id) + + AND NOT EXISTS ( + SELECT 1 + FROM storage_domain_static + WHERE id != v_sd_id + AND storage = v_provider_id::text + ) + THEN + DELETE FROM storage_domain_dynamic + WHERE id = v_sd_id; + + DELETE FROM storage_domain_static + WHERE id = v_sd_id + AND storage = v_provider_id::text; + + DELETE FROM providers + WHERE id = v_provider_id; + END IF; + END; +$$;