cmdbAbstractObject
bizmodel,searchable,structure
false
autoincrement
organization
id
images/building.png
name
false
code
true
active
inactive
status
active
true
list
parent_id
true
DEL_MANUAL
parent_id
name
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
10
-
20
-
30
cmdbAbstractObject
bizmodel,searchable,structure
false
autoincrement
location
id
images/location.png
name
false
active
inactive
status
active
true
list
org_id
Organization
false
DEL_MANUAL
org_id
name
address
true
postal_code
true
city
true
country
true
PhysicalDevice
location_id
add_only
0
0
Person
location_id
add_only
0
0
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
10
-
20
-
30
-
40
cmdbAbstractObject
bizmodel,searchable,structure
true
autoincrement
contact
id
finalclass
images/team.png
name
false
active
inactive
status
active
false
list
org_id
Organization
false
DEL_MANUAL
org_id
name
email
true
phone
true
yes
no
notify
yes
true
radio_horizontal
function
true
lnkContactToFunctionalCI
contact_id
0
0
functionalci_id
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
10
-
20
-
30
-
40
-
50
Contact
bizmodel,searchable,structure
false
autoincrement
person
id
images/person.png
first_name
false
employee_number
true
mobile_phone
true
org_id]]>
location_id
Location
true
DEL_MANUAL
false
location_id
name
manager_id
Person
true
DEL_MANUAL
manager_id
name
lnkPersonToTeam
person_id
0
0
team_id
Ticket
caller_id
add_only
0
0
-
10
-
20
-
30
-
40
-
10
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
50
-
10
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
10
-
20
-
30
-
40
-
50
-
60
Contact
bizmodel,searchable
false
autoincrement
team
id
images/team.png
lnkPersonToTeam
team_id
0
0
person_id
Ticket
team_id
none
0
0
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
10
-
20
-
30
-
40
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
document
id
finalclass
images/document.png
name
false
org_id
Organization
false
DEL_MANUAL
org_id
name
documenttype_id
DocumentType
true
DEL_MANUAL
documenttype_id
name
version
true
description
true
draft
published
obsolete
status
true
list
lnkDocumentToFunctionalCI
document_id
0
0
functionalci_id
lnkContractToDocument
document_id
0
0
contract_id
lnkDocumentToService
document_id
0
0
service_id
-
10
-
20
-
30
-
35
-
40
-
50
-
60
-
70
-
80
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
Document
bizmodel,searchable
false
autoincrement
documentfile
id
images/document.png
false
public
Overload-cmdbAbstractObject
add('');
}
return $aFieldsMap;
}]]>
-
10
-
20
-
30
-
35
-
40
-
50
-
60
-
70
-
80
-
90
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
Document
bizmodel,searchable
false
autoincrement
documentnote
id
images/document.png
text
false
-
10
-
20
-
30
-
35
-
40
-
50
-
60
-
70
-
80
-
90
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
Document
bizmodel,searchable
false
autoincrement
documentweb
id
images/document.png
url
true
_blank
-
10
-
20
-
30
-
35
-
40
-
50
-
60
-
70
-
80
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
functionalci
id
finalclass
images/server.png
name
false
description
true
org_id
Organization
false
DEL_MANUAL
org_id
name
high
medium
low
business_criticity
low
true
list
move2production
true
lnkContactToFunctionalCI
functionalci_id
0
0
contact_id
lnkDocumentToFunctionalCI
functionalci_id
0
0
document_id
lnkApplicationSolutionToFunctionalCI
functionalci_id
0
0
applicationsolution_id
lnkFunctionalCIToProviderContract
functionalci_id
0
0
providercontract_id
lnkFunctionalCIToService
functionalci_id
0
0
service_id
SoftwareInstance
system_id
in_place
0
0
lnkFunctionalCIToTicket
functionalci_id
0
0
ticket_id
true
public
Overload-DBObject
array("sQuery"=>"SELECT Contact AS c JOIN lnkContactToFunctionalCI AS l1 ON l1.contact_id = c.id WHERE l1.functionalci_id = :this->id", "bPropagate"=>true, "iDistance"=>3),
"solution" => array("sQuery"=>"SELECT ApplicationSolution AS s JOIN lnkApplicationSolutionToFunctionalCI AS l1 ON l1.applicationsolution_id = s.id WHERE l1.functionalci_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
"SoftwareInstances" => array("sQuery"=>"SELECT SoftwareInstance AS s WHERE s.system_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
FunctionalCI
bizmodel,searchable
true
autoincrement
physicaldevice
id
images/server.png
serialnumber
true
org_id]]>
location_id
Location
true
DEL_MANUAL
false
location_id
name
production
implementation
stock
obsolete
status
production
true
list
brand_id
Brand
true
DEL_MANUAL
brand_id
name
brand_id AND type=:this->finalclass]]>
model_id
Model
true
DEL_MANUAL
model_id
name
asset_number
true
purchase_date
true
end_of_warranty
true
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
PhysicalDevice
bizmodel,searchable
true
autoincrement
connectableci
id
images/server.png
lnkConnectableCIToNetworkDevice
connectableci_id
0
0
networkdevice_id
true
PhysicalInterface
connectableci_id
in_place
0
0
true
public
Overload-DBObject
array("sQuery"=>"SELECT NetworkDevice AS nw JOIN lnkConnectableCIToNetworkDevice AS l1 ON l1.networkdevice_id = nw.id WHERE l1.connectableci_id = :this->id AND l1.connection_type='downlink'", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
ConnectableCI
bizmodel,searchable
true
autoincrement
datacenterdevice
id
images/server.png
location_id]]>
rack_id
Rack
true
DEL_MANUAL
false
rack_id
name
rack_id]]>
enclosure_id
Enclosure
true
DEL_MANUAL
false
enclosure_id
name
nb_u
true
managementip
true
location_id]]>
powera_id
PowerConnection
true
DEL_MANUAL
false
powerA_id
name
location_id]]>
powerB_id
PowerConnection
true
DEL_MANUAL
false
powerB_id
name
FiberChannelInterface
datacenterdevice_id
in_place
0
0
lnkSanToDatacenterDevice
datacenterdevice_id
0
0
san_id
true
public
Overload-DBObject
"SELECT Enclosure WHERE id = :this->enclosure_id", "bPropagate"=>true, "iDistance"=>10);
}
if (class_exists('SANSwitch'))
{
$aRels['SANSwitch'] = array("sQuery"=>"SELECT SANSwitch AS san JOIN lnkSanToDatacenterDevice AS l1 ON l1.san_id = san.id WHERE l1.datacenterdevice_id = :this->id", "bPropagate"=>true, "iDistance"=>10);
}
if (class_exists('PowerConnection'))
{
$aRels['PowerA'] = array(
"sQuery"=>"SELECT PowerConnection WHERE id = :this->powerA_id",
"bPropagate"=>true,
"iDistance"=>10
);
$aRels['PowerB'] = array(
"sQuery"=>"SELECT PowerConnection WHERE id = :this->powerB_id",
"bPropagate"=>true,
"iDistance"=>10
);
}
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
170
-
180
-
190
-
200
-
210
-
220
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
DatacenterDevice
bizmodel,searchable
false
autoincrement
networkdevice
id
images/switch.png
networkdevicetype_id
NetworkDeviceType
false
DEL_MANUAL
networkdevicetype_id
name
lnkConnectableCIToNetworkDevice
networkdevice_id
0
0
connectableci_id
true
iosversion_id
IOSVersion
true
DEL_MANUAL
iosversion_id
name
ram
true
true
public
Overload-DBObject
array("sQuery"=>"SELECT ConnectableCI AS d JOIN lnkConnectableCIToNetworkDevice AS l1 ON l1.connectableci_id = d.id WHERE l1.networkdevice_id = :this->id AND l1.connection_type='downlink'", "bPropagate"=>true, "iDistance"=>1),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
case "depends on":
$aRels = array(
// "connected_network" => array("sQuery"=>"SELECT NetworkDevice AS nw JOIN lnkConnectableCIToNetworkDevice AS l1 ON l1.networkdevice_id = nw.id WHERE l1.connectableci_id = :this->id AND l1.connection_type='uplink'", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
35
-
40
-
50
-
60
-
70
-
80
-
10
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
20
-
10
-
20
-
30
-
40
-
45
-
50
-
60
-
70
-
80
-
90
-
10
-
10
-
20
-
30
-
20
-
10
-
20
-
30
-
10
-
20
-
30
-
40
-
50
-
55
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
10
-
20
-
30
-
40
-
50
-
60
-
70
DatacenterDevice
bizmodel,searchable
false
autoincrement
server
id
images/server.png
osfamily_id
OSFamily
true
DEL_MANUAL
osfamily_id
name
osfamily_id]]>
osversion_id
OSVersion
true
DEL_MANUAL
osversion_id
name
osversion_id]]>
oslicence_id
OSLicence
true
DEL_MANUAL
oslicence_id
name
cpu
true
ram
true
lnkServerToVolume
server_id
0
0
volume_id
true
public
Overload-DBObject
array("sQuery"=>"SELECT Hypervisor WHERE server_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 = array(
"volume" => array("sQuery"=>"SELECT LogicalVolume AS v JOIN lnkServerToVolume AS l1 ON l1.volume_id=v.id WHERE l1.server_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
}
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
45
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
10
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
20
-
10
-
20
-
30
-
40
-
45
-
50
-
60
-
70
-
80
-
90
-
100
-
130
-
10
-
10
-
20
-
30
-
20
-
10
-
20
-
30
-
10
-
20
-
30
-
40
-
50
-
55
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
10
-
20
-
30
-
40
-
50
-
60
-
70
FunctionalCI
bizmodel,searchable
false
autoincrement
applicationsolution
id
images/solution.png
lnkApplicationSolutionToFunctionalCI
applicationsolution_id
0
0
functionalci_id
lnkApplicationSolutionToBusinessProcess
applicationsolution_id
0
0
businessprocess_id
active
inactive
status
active
true
list
true
public
Overload-DBObject
array("sQuery"=>"SELECT BusinessProcess AS p JOIN lnkApplicationSolutionToBusinessProcess AS l1 ON l1.businessprocess_id = p.id WHERE l1.applicationsolution_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
case "depends on":
$aRels = array(
"solution" => array("sQuery"=>"SELECT FunctionalCI AS ci JOIN lnkApplicationSolutionToFunctionalCI AS l1 ON l1.functionalci_id = ci.id WHERE l1.applicationsolution_id = :this->id", "bPropagate"=>true, "iDistance"=>2),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
10
-
20
-
30
-
40
-
10
-
20
-
30
FunctionalCI
bizmodel,searchable
false
autoincrement
businessprocess
id
images/business-process.png
lnkApplicationSolutionToBusinessProcess
businessprocess_id
0
0
applicationsolution_id
active
inactive
status
active
true
list
true
public
Overload-DBObject
array("sQuery"=>"SELECT ApplicationSolution AS app JOIN lnkApplicationSolutionToBusinessProcess AS l1 ON l1.applicationsolution_id = app.id WHERE l1.businessprocess_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
10
-
20
-
30
-
40
-
10
-
20
-
30
FunctionalCI
bizmodel,searchable
true
autoincrement
softwareinstance
id
images/application.png
functionalci_id
FunctionalCI
false
DEL_AUTO
false
system_id
name
finalclass]]>
software_id
Software
true
DEL_MANUAL
software_id
name
software_id]]>
softwarelicence_id
SoftwareLicence
true
DEL_MANUAL
false
softwarelicence_id
name
path
true
active
inactive
status
true
list
true
public
Overload-DBObject
array("sQuery"=>"SELECT FunctionalCI AS s JOIN SoftwareInstance AS app ON app.system_id = s.id WHERE app.id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
50
SoftwareInstance
bizmodel,searchable
false
autoincrement
middleware
id
images/middleware.png
MiddlewareInstance
middleware_id
in_place
0
0
true
public
Overload-DBObject
array("sQuery"=>"SELECT MiddlewareInstance AS mi WHERE middleware_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
case 'depends on':
$aRels = array(
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
170
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
SoftwareInstance
bizmodel,searchable
false
autoincrement
dbserver
id
images/database.png
DatabaseSchema
dbserver_id
in_place
0
0
true
public
Overload-DBObject
array("sQuery"=>"SELECT DatabaseSchema AS db WHERE dbserver_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
case 'depends on':
$aRels = array(
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
170
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
SoftwareInstance
bizmodel,searchable
false
autoincrement
webserver
id
images/webserver.png
WebApplication
webserver_id
in_place
0
0
true
public
Overload-DBObject
array("sQuery"=>"SELECT WebApplication AS db WHERE webserver_id = :this->id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
case 'depends on':
$aRels = array(
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
170
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
SoftwareInstance
bizmodel,searchable
false
autoincrement
pcsoftware
id
images/application.png
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
SoftwareInstance
bizmodel,searchable
false
autoincrement
othersoftware
id
images/application.png
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
140
-
150
-
160
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
FunctionalCI
bizmodel,searchable
false
autoincrement
middlewareinstance
id
images/middleware.png
middleware_id
Middleware
false
DEL_MANUAL
middleware_id
name
true
public
Overload-DBObject
array("sQuery"=>"SELECT Middleware WHERE id = :this->middleware_id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
10
-
20
-
30
-
40
-
10
-
20
-
30
FunctionalCI
bizmodel,searchable
false
autoincrement
databaseschema
id
images/database-schema.png
dbserver_id
DBServer
false
DEL_MANUAL
dbserver_id
name
true
public
Overload-DBObject
array("sQuery"=>"SELECT DBServer WHERE id = :this->dbserver_id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
10
-
20
-
30
-
40
-
10
-
20
-
30
FunctionalCI
bizmodel,searchable
false
autoincrement
webapplication
id
images/webapp.png
webserver_id
WebServer
false
DEL_MANUAL
webserver_id
name
url
true
_blank
true
public
Overload-DBObject
array("sQuery"=>"SELECT WebServer WHERE id = :this->webserver_id", "bPropagate"=>true, "iDistance"=>10),
);
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
break;
default:
return parent::GetRelationQueries($sRelCode);
}
}]]>
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
90
-
100
-
110
-
120
-
130
-
10
-
20
-
30
-
40
-
10
-
20
-
30
cmdbAbstractObject
bizmodel,searchable
false
autoincrement
software
id
images/software.png
name
false
vendor
false
version
false
lnkDocumentToSoftware
software_id
0
0
document_id
Middleware
DBServer
PCSoftware
OtherSoftware
WebServer
type
true
list
SoftwareInstance
software_id
add_only
0
0
SoftwarePatch
software_id
add_only
0
0
SoftwareLicence
software_id
add_only
0
0
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
80
-
10
-
20
-
30
-
40
-
10
-
20
-
30
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
patch
id
finalclass
images/patch.png
name
false
lnkDocumentToPatch
patch_id
0
0
document_id
description
true
-
10
-
20
-
30
-
10
-
10
-
20
Patch
bizmodel,searchable
false
autoincrement
ospatch
id
images/patch.png
lnkFunctionalCIToOSPatch
ospatch_id
0
0
functionalci_id
osversion_id
OSVersion
false
DEL_MANUAL
osversion_id
name
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
10
-
20
Patch
bizmodel,searchable
false
autoincrement
softwarepatch
id
images/patch.png
software_id
Software
false
DEL_MANUAL
software_id
name
lnkSoftwareInstanceToSoftwarePatch
softwarepatch_id
0
0
softwareinstance_id
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
10
-
20
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
licence
id
finalclass
images/licence.png
name
false
lnkDocumentToLicence
licence_id
0
0
document_id
org_id
Organization
false
DEL_MANUAL
org_id
name
usage_limit
true
description
true
start_date
true
end_date
true
licence_key
true
yes
no
perpetual
no
false
list
-
10
-
20
-
30
-
40
-
50
-
55
-
60
-
70
-
80
-
10
-
15
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
50
-
60
-
70
Licence
bizmodel,searchable
false
autoincrement
oslicence
id
images/licence.png
osversion_id
OSVersion
false
DEL_MANUAL
osversion_id
name
VirtualMachine
oslicence_id
none
0
0
Server
oslicence_id
none
0
0
-
10
-
20
-
30
-
40
-
50
-
60
-
65
-
70
-
80
-
90
-
100
-
110
-
10
-
15
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
50
-
60
-
70
Licence
bizmodel,searchable
false
autoincrement
softwarelicence
id
images/licence.png
software_id
Software
false
DEL_MANUAL
software_id
name
SoftwareInstance
softwarelicence_id
none
0
0
-
10
-
20
-
30
-
40
-
50
-
60
-
65
-
70
-
80
-
90
-
100
-
10
-
15
-
20
-
30
-
40
-
10
-
20
-
30
-
40
-
50
-
60
-
70
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkdocumenttolicence
id
licence_id
Licence
false
DEL_AUTO
licence_id
name
document_id
Document
false
DEL_AUTO
document_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
typology
id
finalclass
name
false
-
10
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
osversion
id
osfamily_id
OSFamily
false
DEL_MANUAL
osfamily_id
name
-
10
-
20
-
10
-
10
-
20
Typology
bizmodel,searchable
false
autoincrement
osfamily
id
-
10
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
documenttype
id
-
10
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
contacttype
id
-
10
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
brand
id
PhysicalDevice
brand_id
add_only
0
0
-
10
-
20
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
model
id
brand_id
Brand
false
DEL_MANUAL
brand_id
name
NetworkDevice
Server
SANSwitch
StorageSystem
Rack
Enclosure
PC
Tablet
Phone
MobilePhone
Printer
DiskArray
NAS
TapeLibrary
IPPhone
Peripheral
PowerSource
PDU
type
false
list
PhysicalDevice
model_id
add_only
0
0
-
10
-
20
-
30
-
40
-
10
-
20
-
10
-
20
-
30
Typology
bizmodel,searchable
false
autoincrement
networkdevicetype
id
NetworkDevice
networkdevicetype_id
add_only
0
0
-
10
-
20
-
10
-
10
Typology
bizmodel,searchable
false
autoincrement
iosversion
id
brand_id
Brand
false
DEL_MANUAL
brand_id
name
-
10
-
20
-
10
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkdocumenttopatch
id
patch_id
Patch
false
DEL_AUTO
patch_id
name
document_id
Document
false
DEL_AUTO
document_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnksoftwareinstancetosoftwarepatch
id
softwarepatch_id
SoftwarePatch
false
DEL_AUTO
softwarepatch_id
name
softwareinstance_id
SoftwareInstance
false
DEL_AUTO
softwareinstance_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkfunctionalcitoospatch
id
ospatch_id
OSPatch
false
DEL_AUTO
ospatch_id
name
functionalci_id
FunctionalCI
false
DEL_AUTO
functionalci_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkdocumenttosoftware
id
software_id
Software
false
DEL_AUTO
software_id
name
document_id
Document
false
DEL_AUTO
document_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkcontacttofunctionalci
id
functionalci_id
FunctionalCI
false
DEL_AUTO
functionalci_id
name
contact_id
Contact
false
DEL_AUTO
contact_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkdocumenttofunctionalci
id
functionalci_id
FunctionalCI
false
DEL_AUTO
functionalci_id
name
document_id
Document
false
DEL_AUTO
document_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
bizmodel,searchable,configmgmt
false
autoincrement
subnet
id
images/subnet.png
description
true
subnet_name
true
org_id
Organization
false
DEL_MANUAL
org_id
name
ip
false
ip_mask
false
lnkSubnetToVLAN
subnet_id
0
0
vlan_id
false
public
Overload-cmdbAbstractObject
SetCurrentTab(Dict::S('Class:Subnet/Tab:IPUsage'));
$bit_ip = ip2long($this->Get('ip'));
$bit_mask = ip2long($this->Get('ip_mask'));
$iIPMin = sprintf('%u', ($bit_ip & $bit_mask) | 1); // exclude the first one: identifies the subnet itself
$iIPMax = sprintf('%u', (($bit_ip | (~$bit_mask))) & 0xfffffffe); // exclude the last one : broadcast address
$sIPMin = long2ip($iIPMin);
$sIPMax = long2ip($iIPMax);
$oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax));
$oIfFilter = DBObjectSearch::FromOQL("SELECT IPInterface AS if WHERE INET_ATON(if.ipaddress) >= INET_ATON('$sIPMin') AND INET_ATON(if.ipaddress) <= INET_ATON('$sIPMax')");
$oIfSet = new CMDBObjectSet($oIfFilter);
$oBlock = new DisplayBlock($oIfFilter, 'list', false);
$oBlock->Display($oPage, 'nwif', array('menu' => false));
$iCountUsed = $oIfSet->Count();
$iCountRange = $iIPMax - $iIPMin; // On 32-bit systems the substraction will be computed using floats for values greater than PHP_MAX_INT;
$iFreeCount = $iCountRange - $iCountUsed;
$oPage->SetCurrentTab(Dict::S('Class:Subnet/Tab:FreeIPs'));
$oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount));
$oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain'));
$aUsedIPs = $oIfSet->GetColumnAsArray('ipaddress', false);
$iAnIP = $iIPMin;
$iFound = 0;
while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax))
{
$sAnIP = long2ip($iAnIP);
if (!in_array($sAnIP, $aUsedIPs))
{
$iFound++;
$oPage->p($sAnIP);
}
else
{
}
$iAnIP++;
}
}
}]]>
-
10
-
20
-
25
-
30
-
40
-
50
-
10
-
20
-
25
-
30
-
40
-
10
-
20
-
25
-
30
-
40
cmdbAbstractObject
bizmodel,searchable,configmgmt
false
autoincrement
vlan
id
images/vlan.png
vlan_tag
false
description
true
org_id
Organization
false
DEL_MANUAL
org_id
name
lnkSubnetToVLAN
vlan_id
0
0
subnet_id
lnkPhysicalInterfaceToVLAN
vlan_id
0
0
physicalinterface_id
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
10
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnksubnettovlan
id
subnet_id
Subnet
false
DEL_AUTO
subnet_id
ip
subnet_id
subnet_name
vlan_id
VLAN
false
DEL_AUTO
vlan_id
vlan_tag
-
10
-
20
-
10
-
20
-
10
-
20
-
30
cmdbAbstractObject
bizmodel,searchable
true
autoincrement
networkinterface
id
finalclass
images/interface.png
name
false
-
10
-
10
-
10
NetworkInterface
bizmodel,searchable
true
autoincrement
ipinterface
id
images/interface.png
ipaddress
true
macaddress
true
ipgateway
true
ipmask
true
speed
true
12
2
-
10
-
20
-
30
-
50
-
60
-
70
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
50
-
60
-
70
IPInterface
bizmodel,searchable
false
autoincrement
physicalinterface
id
images/interface.png
connectableci_id
ConnectableCI
false
DEL_AUTO
connectableci_id
name
lnkPhysicalInterfaceToVLAN
physicalinterface_id
0
0
vlan_id
-
10
-
20
-
30
-
40
-
60
-
70
-
80
-
90
-
10
-
20
-
30
-
40
-
10
-
20
-
40
-
50
-
60
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkphysicalinterfacetovlan
id
physicalinterface_id
PhysicalInterface
false
DEL_AUTO
physicalinterface_id
name
physicalinterface_id
connectableci_id
physicalinterface_id
connectableci_name
vlan_id
VLAN
false
DEL_AUTO
vlan_id
vlan_tag
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkconnectablecitonetworkdevice
id
networkdevice_id
NetworkDevice
false
DEL_AUTO
networkdevice_id
name
connectableci_id
ConnectableCI
false
DEL_AUTO
connectableci_id
name
network_port
true
device_port
true
uplink
downlink
type
downlink
false
list
false
protected
Overload-cmdbAbstractObject
Get('connectableci_id'));
if (is_object($oDevice) && (get_class($oDevice) == 'NetworkDevice'))
{
$sOQL = "SELECT lnkConnectableCIToNetworkDevice WHERE connectableci_id = :device AND networkdevice_id = :network AND network_port = :nwport AND device_port = :devport";
$oConnectionSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
array(),
array(
'network' => $this->Get('connectableci_id'),
'device' => $this->Get('networkdevice_id'),
'devport' => $this->Get('network_port'),
'nwport' => $this->Get('device_port'),
)
);
if ($oConnectionSet->Count() == 0)
{
$sLink = $this->Get('connection_type');
$sConnLink = ($sLink == 'uplink') ? 'downlink' : 'uplink';
$oNewLink = new lnkConnectableCIToNetworkDevice();
$oNewLink->Set('networkdevice_id', $this->Get('connectableci_id'));
$oNewLink->Set('connectableci_id', $this->Get('networkdevice_id'));
$oNewLink->Set('network_port', $this->Get('device_port'));
$oNewLink->Set('device_port', $this->Get('network_port'));
$oNewLink->Set('connection_type', $sConnLink);
$oNewLink->DBInsert();
}
}
}]]>
false
protected
Overload-cmdbAbstractObject
Get('connectableci_id'));
if (is_object($oDevice) && (get_class($oDevice) == 'NetworkDevice'))
{
// Note: in case a port has been changed, search with the original values
$sOQL = "SELECT lnkConnectableCIToNetworkDevice WHERE connectableci_id = :device AND networkdevice_id = :network AND network_port = :nwport AND device_port = :devport";
$oConnectionSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
array(),
array(
'network' => $this->Get('connectableci_id'),
'device' => $this->Get('networkdevice_id'),
'devport' => $this->GetOriginal('network_port'),
'nwport' => $this->GetOriginal('device_port'),
)
);
$sLink = $this->Get('connection_type');
$sConnLink = ($sLink == 'uplink') ? 'downlink' : 'uplink';
// There should be one link - do it in a safe manner anyway
while ($oConnection = $oConnectionSet->Fetch())
{
$oConnection->Set('connection_type', $sConnLink);
$oConnection->Set('network_port', $this->Get('device_port'));
$oConnection->Set('device_port', $this->Get('network_port'));
$oConnection->DBUpdate();
}
}
}]]>
false
protected
Overload-cmdbAbstractObject
Get('connectableci_id'), false);
if (is_object($oDevice) && (get_class($oDevice) == 'NetworkDevice'))
{
// Track and delete the counterpart link
$sOQL = "SELECT lnkConnectableCIToNetworkDevice WHERE connectableci_id = :device AND networkdevice_id = :network AND network_port = :nwport AND device_port = :devport";
$oConnectionSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
array(),
array(
'network' => $this->Get('connectableci_id'),
'device' => $this->Get('networkdevice_id'),
'devport' => $this->Get('network_port'),
'nwport' => $this->Get('device_port'),
)
);
// There should be one link - do it in a safe manner anyway
while ($oConnection = $oConnectionSet->Fetch())
{
$oConnection->DBDelete();
}
}
}]]>
false
protected
Overload-DBObject
AddConnectedNetworkDevice();
parent::AfterInsert();
}]]>
false
protected
Overload-DBObject
UpdateConnectedNetworkDevice();
parent::AfterUpdate();
}]]>
false
protected
Overload-DBObject
DeleteConnectedNetworkDevice();
parent::AfterDelete();
}]]>
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
-
50
-
10
-
20
-
30
-
40
-
50
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkapplicationsolutiontofunctionalci
id
applicationsolution_id
ApplicationSolution
false
DEL_AUTO
applicationsolution_id
name
functionalci_id
FunctionalCI
false
DEL_AUTO
functionalci_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkapplicationsolutiontobusinessprocess
id
businessprocess_id
BusinessProcess
false
DEL_AUTO
businessprocess_id
name
applicationsolution_id
ApplicationSolution
false
DEL_AUTO
applicationsolution_id
name
-
10
-
20
-
10
-
20
-
10
-
20
cmdbAbstractObject
1
bizmodel
false
autoincrement
lnkpersontoteam
id
team_id
Team
false
DEL_AUTO
team_id
name
person_id
Person
false
DEL_AUTO
person_id
name
role_id
ContactType
true
DEL_MANUAL
role_id
name
-
10
-
20
-
30
-
10
-
20
-
30
-
10
-
20
-
30
cmdbAbstractObject
bizmodel,searchable,configmgmt
false
autoincrement
group
id
images/group.png
name
false
production
implementation
obsolete
status
implementation
false
list
org_id
Organization
false
DEL_MANUAL
org_id
name
description
true
type
true
parent_id
true
DEL_MANUAL
parent_id
name
lnkGroupToCI
group_id
0
0
ci_id
-
10
-
20
-
30
-
40
-
50
-
60
-
70
-
10
-
20
-
30
-
40
-
10
-
20
-
30
-
40
cmdbAbstractObject
1
bizmodel,configmgmt
false
autoincrement
lnkgrouptoci
id
group_id
Group
false
DEL_AUTO
group_id
name
ci_id
FunctionalCI
false
DEL_AUTO
ci_id
name
reason
true
-
10
-
20
-
30
-
10
-
20
-
30
-
10
-
20
-
30