Pārlūkot izejas kodu

New module to link storage and virtualization

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2542 a333f486-631f-4898-b8df-5754b55c2be0
romainq 12 gadi atpakaļ
vecāks
revīzija
8a93b9e9a0

+ 94 - 0
datamodels/2.x/itop-bridge-virtualization-storage/datamodel.itop-bridge-virtualization-storage.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
+  <classes>
+    <class id="lnkVirtualDeviceToVolume" _delta="define">
+      <parent>cmdbAbstractObject</parent>
+      <properties>
+        <category>bizmodel,configmgmt</category>
+        <abstract>false</abstract>
+        <key_type>autoincrement</key_type>
+        <db_table>lnkvirtualdevicetovolume</db_table>
+        <db_key_field>id</db_key_field>
+        <db_final_class_field/>
+        <naming>
+          <format>%1$s</format>
+          <attributes>
+            <attribute id="volume_id"/>
+          </attributes>
+        </naming>
+        <display_template/>
+        <icon/>
+        <reconciliation>
+          <attributes>
+          </attributes>
+        </reconciliation>
+      </properties>
+      <fields>
+        <field id="volume_id" xsi:type="AttributeExternalKey">
+          <sql>volume_id</sql>
+          <target_class>LogicalVolume</target_class>
+          <is_null_allowed>false</is_null_allowed>
+          <on_target_delete>DEL_AUTO</on_target_delete>
+        </field>
+        <field id="volume_name" xsi:type="AttributeExternalField">
+          <extkey_attcode>volume_id</extkey_attcode>
+          <target_attcode>name</target_attcode>
+        </field>
+        <field id="virtualdevice_id" xsi:type="AttributeExternalKey">
+          <sql>virtualdevice_id</sql>
+          <target_class>VirtualDevice</target_class>
+          <is_null_allowed>false</is_null_allowed>
+          <on_target_delete>DEL_AUTO</on_target_delete>
+        </field>
+        <field id="virtualdevice_name" xsi:type="AttributeExternalField">
+          <extkey_attcode>virtualdevice_id</extkey_attcode>
+          <target_attcode>name</target_attcode>
+        </field>
+        <field id="size_used" xsi:type="AttributeString">
+          <sql>size_used</sql>
+          <default_value/>
+          <is_null_allowed>true</is_null_allowed>
+        </field>
+      </fields>
+      <methods/>
+      <presentation>
+        <details>
+          <items>
+            <item id="volume_id">
+              <rank>10</rank>
+            </item>
+            <item id="virtualdevice_id">
+              <rank>20</rank>
+            </item>
+            <item id="size_used">
+              <rank>30</rank>
+            </item>
+          </items>
+        </details>
+        <search>
+          <items>
+            <item id="volume_id">
+              <rank>10</rank>
+            </item>
+            <item id="virtualdevice_id">
+              <rank>20</rank>
+            </item>
+          </items>
+        </search>
+        <list>
+          <items>
+            <item id="volume_id">
+              <rank>10</rank>
+            </item>
+            <item id="virtualdevice_id">
+              <rank>20</rank>
+            </item>
+            <item id="size_used">
+              <rank>30</rank>
+            </item>
+          </items>
+        </list>
+      </presentation>
+    </class>
+  </classes>
+</itop_design>

+ 46 - 0
datamodels/2.x/itop-bridge-virtualization-storage/module.itop-bridge-virtualization-storage.php

@@ -0,0 +1,46 @@
+<?php
+
+
+SetupWebPage::AddModule(
+	__FILE__, // Path to the current file, all other file names are relative to the directory containing this file
+	'itop-bridge-virtualization-storage/2.0.0',
+	array(
+		// Identification
+		//
+		'label' => 'Links between virtualization and storage',
+		'category' => 'business',
+
+		// Setup
+		//
+		'dependencies' => array(
+		),
+		'mandatory' => false,
+		'visible' => false,
+		'auto_select' => 'SetupInfo::ModuleIsSelected("itop-storage-mgmt") && SetupInfo::ModuleIsSelected("itop-virtualization-mgmt")',
+
+		// Components
+		//
+		'datamodel' => array(
+			'model.itop-bridge-virtualization-storage.php',
+		),
+		'data.struct' => array(
+			//'data.struct.itop-change-mgmt.xml',
+		),
+		'data.sample' => array(
+			//'data.sample.itop-change-mgmt.xml',
+		),
+		
+		// Documentation
+		//
+		'doc.manual_setup' => '',
+		'doc.more_information' => '',
+
+		// Default settings
+		//
+		'settings' => array(
+		),
+	)
+);
+
+
+?>

+ 15 - 0
datamodels/2.x/itop-storage-mgmt/datamodel.itop-storage-mgmt.xml

@@ -1414,6 +1414,14 @@
           <ext_key_to_remote>server_id</ext_key_to_remote>
           <duplicates/>
         </field>
+        <field id="virtualdevices_list" xsi:type="AttributeLinkedSetIndirect">
+          <linked_class>lnkVirtualDeviceToVolume</linked_class>
+          <ext_key_to_me>volume_id</ext_key_to_me>
+          <count_min>0</count_min>
+          <count_max>0</count_max>
+          <ext_key_to_remote>virtualdevice_id</ext_key_to_remote>
+          <duplicates/>
+        </field>
       </fields>
       <methods>
         <method id="GetRelationQueries">
@@ -1429,6 +1437,10 @@
         // Actually this should be limited to the Software instances based on a DBServer Application type...
         "server" => array("sQuery"=>"SELECT Server AS s JOIN lnkServerToVolume AS l1 ON l1.server_id=s.id  WHERE l1.volume_id = :this->id", "bPropagate"=>true, "iDistance"=>5),  
       );
+      if (class_exists('VirtualDevice'))
+      {
+        $aRels["virtualdevice"] = array("sQuery"=>"SELECT VirtualDevice AS vd JOIN lnkVirtualDeviceToVolume AS l1 ON l1.virtualdevice_id=vd.id  WHERE l1.volume_id = :this->id", "bPropagate"=>true, "iDistance"=>5);
+      }
       return array_merge($aRels, parent::GetRelationQueries($sRelCode));
       break;
       
@@ -1469,6 +1481,9 @@
             <item id="servers_list">
               <rank>70</rank>
             </item>
+            <item id="virtualdevices_list">
+              <rank>80</rank>
+            </item>
           </items>
         </details>
         <search>

+ 20 - 3
datamodels/2.x/itop-virtualization-mgmt/datamodel.itop-virtualization-mgmt.xml

@@ -79,6 +79,9 @@
             <item id="applicationsolution_list">
               <rank>90</rank>
             </item>
+            <item id="logicalvolumes_list">
+              <rank>100</rank>
+            </item>
           </items>
         </details>
         <search>
@@ -167,15 +170,17 @@
       case "impacts":
       $aRels = array(
         "virtualmachine" => array("sQuery"=>"SELECT VirtualMachine WHERE virtualhost_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
-
       );
       return array_merge($aRels, parent::GetRelationQueries($sRelCode));
       break;
       
       case 'depends on':
       $aRels = array(
-      
       );
+      if (class_exists('LogicalVolume'))
+      {
+        $aRels["logicalvolume"] = array("sQuery"=>"SELECT LogicalVolume AS lv JOIN lnkVirtualDeviceToVolume AS l1 ON l1.volume_id=lv.id  WHERE l1.virtualdevice_id = :this->id", "bPropagate"=>true, "iDistance"=>5);
+      }
       return array_merge($aRels, parent::GetRelationQueries($sRelCode));
       break;
       
@@ -212,6 +217,12 @@
             <item id="applicationsolution_list">
               <rank>80</rank>
             </item>
+            <item id="logicalvolumes_list">
+              <rank>90</rank>
+            </item>
+            <item id="virtualmachine_list">
+              <rank>100</rank>
+            </item>
           </items>
         </details>
         <search>
@@ -365,6 +376,9 @@
             <item id="applicationsolution_list">
               <rank>110</rank>
             </item>
+            <item id="logicalvolumes_list">
+              <rank>115</rank>
+            </item>
             <item id="virtualmachine_list">
               <rank>120</rank>
             </item>
@@ -507,6 +521,9 @@
             <item id="applicationsolution_list">
               <rank>90</rank>
             </item>
+            <item id="logicalvolumes_list">
+              <rank>95</rank>
+            </item>
             <item id="hypervisor_list">
               <rank>100</rank>
             </item>
@@ -908,7 +925,7 @@
           </items>
         </list>
       </presentation>
-    </class>   
+    </class>
 </classes>
 <menus>
   <menu id="ConfigManagementOverview" xsi:type="DashboardMenuNode" _delta="must_exist">