New module to link storage and virtualization

SVN:trunk[2542]
This commit is contained in:
Romain Quetiez
2012-12-06 16:54:16 +00:00
parent d5467ca383
commit ae1be5a53b
4 changed files with 175 additions and 3 deletions

View File

@@ -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>

View File

@@ -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(
),
)
);
?>

View File

@@ -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>

View File

@@ -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">