r4019 IPv6:
authorAlexey Andriyanov <alan@al-an.info>
Mon, 22 Nov 2010 16:50:30 +0000 (16:50 +0000)
committerAlexey Andriyanov <alan@al-an.info>
Mon, 22 Nov 2010 16:50:30 +0000 (16:50 +0000)
- foreign keys added for v4/v6 allocations
- v6 allocations now removed on object clearing

inc/database.php
install/init-structure.sql
upgrade.php

index ec546ab..76d42c5 100644 (file)
@@ -673,6 +673,7 @@ function commitResetObject ($object_id = 0)
        destroyTagsForEntity ('object', $object_id);
        usePreparedDeleteBlade ('IPv4LB', array ('object_id' => $object_id));
        usePreparedDeleteBlade ('IPv4Allocation', array ('object_id' => $object_id));
+       usePreparedDeleteBlade ('IPv6Allocation', array ('object_id' => $object_id));
        usePreparedDeleteBlade ('IPv4NAT', array ('object_id' => $object_id));
        // Rack space
        usePreparedExecuteBlade ('DELETE FROM Atom WHERE molecule_id IN (SELECT new_molecule_id FROM MountOperation WHERE object_id = ?)', array ($object_id));
index 6214f77..4b5e680 100644 (file)
@@ -126,7 +126,8 @@ CREATE TABLE `IPv4Allocation` (
   `ip` int(10) unsigned NOT NULL default '0',
   `name` char(255) NOT NULL default '',
   `type` enum('regular','shared','virtual','router') default NULL,
-  PRIMARY KEY  (`object_id`,`ip`)
+  PRIMARY KEY  (`object_id`,`ip`),
+  CONSTRAINT `IPv4Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE `IPv4LB` (
@@ -212,7 +213,8 @@ CREATE TABLE `IPv6Allocation` (
   `ip` binary(16) NOT NULL,
   `name` char(255) NOT NULL default '',
   `type` enum('regular','shared','virtual','router') default NULL,
-  PRIMARY KEY  (`object_id`,`ip`)
+  PRIMARY KEY  (`object_id`,`ip`),
+  CONSTRAINT `IPv6Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE `IPv6Network` (
index e63a5d0..8b31e89 100644 (file)
@@ -771,7 +771,8 @@ CREATE TABLE `IPv6Allocation` (
   `ip` binary(16) NOT NULL,
   `name` char(255) NOT NULL default '',
   `type` enum('regular','shared','virtual','router') default NULL,
-  PRIMARY KEY  (`object_id`,`ip`)
+  PRIMARY KEY  (`object_id`,`ip`),
+  CONSTRAINT `IPv6Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB
 ";
                        $query[] = "
@@ -801,6 +802,7 @@ CREATE TABLE `VLANIPv6` (
                        $query[] = "ALTER TABLE `FileLink` CHANGE COLUMN `entity_type` `entity_type` ENUM('ipv4net','ipv4rspool','ipv4vs','object','rack','user','ipv6net') NOT NULL DEFAULT 'object' AFTER `file_id`";
                        $query[] = 'ALTER TABLE Link ADD COLUMN cable char(64) NULL AFTER portb';
                        $query[] = 'ALTER TABLE RackSpace ADD CONSTRAINT `RackSpace-FK-rack_id` FOREIGN KEY (rack_id) REFERENCES Rack (id)';
+                       $query[] = "ALTER TABLE `IPv4Allocation` ADD CONSTRAINT `IPv4Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE";
                        $query[] = "UPDATE Config SET varvalue = '0.19.0' WHERE varname = 'DB_VERSION'";
                        break;
                default: