Asset Management System
We require a system to track various aspects related to the day to day running of a small hosting company. Items that need to be tracked include :-
Devices & servers
> Components
IP Addresses/Vlans
Ports - Network/Power and their assignments
Cables (network/power/KVM) and their assignments
A more detailed explanation of the data we want tracking is given below.
## Deliverables
Most of the data we want to store can be consolidated as follows :-
**Devices** (Could be a server or a switch/APC power unit etc)
Type (Server, Switch, Power Unit, KVM etc)
Name (Text) ??" Friendly name of the Device
NameShort (Text) - Our name for device abbreviated
Description (Text) - Description
DescriptionShort (Text) - Short Description of the Device e.g. Server 1
Notes (Text) ??" Place for notes about the device (This could be added as an attribute instead)
DateInstalled (DateTime) ??" e.g 01/01/2000
DateRemoved (DateTime) - e.g 01/01/2000
RackPosition (Text) ??" e.g Rack 2 Top
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
(Need ability to add custom attributes like manufacturer, rackheight, purchasedate, nagioshttplink etc)
**Components** (Components belong to devices - way of keeping track of what ram/cpu/mobo each server has etc)
Type (CPU,RAM,HDD,MOBO etc)
Name (Text) ??" Friendly name of the component
NameShort (Text) - Our name for component abbreviated
Description (Text) - Description
DescriptionShort (Text) - Short Description
DeviceID - Device component is installed in
Notes (Text) ??" Place for notes about the device (This could be added as an attribute instead)
DateInstalled (DateTime) ??" e.g 01/01/2000 Date item is assigned to a device
DateRemoved (DateTime) - e.g 01/01/2000 Date item is removed from a device
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
(Need ability to add custom attributes like serial number, date purchased, invoice number, company purchased from)
**Ports** (These belong to devices - so an APC might have 8 power ports and 1 network port whereas a server would have 1 network port and 1 power port)
Type (Power,Network,Kvm,Serial etc)
Name (Text) ??" Friendly name of the port
NameShort (Text) - Our name for port abbreviated
Description (Text) - Description
DescriptionShort (Text) - Short Description
DeviceID - Device port is on
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
(Need ability to add custom attributes like connector type, serial speed etc)
**Cables****
**Type (Power,Network,Kvm,Serial etc)
Name (Text) ??" Friendly name of the cable
NameShort (Text) - Our name for cable abbreviated
Description (Text) - Description
DescriptionShort (Text) - Short Description
DeviceID ' Device port is on
DateInstalled (DateTime) ??" e.g date cable was connected to port 01/01/2000
DateRemoved (DateTime) - e.g date cable was disconnected from port 01/01/2000
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
(Need ability to add custom attributes like cabletype etc)
**CableConnectors** (Used to connect cables to ports, e.g Server Power Port < Power Cable 1 > APC Port 1)
CableID ??" The Cable this connector belongs to
SourcePortID ??" The source port the cable connects to
DestinationPortID ??" The Destination the cable connects to
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
**IPs**
Name (Text) ??" Friendly name of the IP e.g [login to view URL]
NameShort (Text) - Our name for IP abbreviated
Description (Text) - Description
DescriptionShort (Text) - Short Description
DeviceID - Device IP is on
DateInstalled (DateTime) ??" e.g Date IP Was assigned to the server 01/01/2000
DateRemoved (DateTime) ??"e.g Date IP Was removed from the server 01/01/2000
Created (DateTime) ??" Date this entry was created
CreatedByUser (Int32) ??" UserID
Modified (DateTime) ??" Date this entry was last modified
ModifiedByUser (Int32) ??" UserID
(Need ability to add custom attributes like vlan membership etc)
The custom attributes mentioned need to be dynamic ??" i.e not hardcoded into the DB table then we can add new values as we go along. Maybe have an attributes table for each of the main tables with attributename, attribute value?
Some Items - IP's, Components, Cables and Ports won’t have a device assigned to them initially so we can use the database to store spare parts or IP’s that aren’t in use yet.
Each item should have archive functionality ??" so if we take a device out of the network the current data associated with that record should be flagged as archived.
If you archive a device it should have its IP’s returned to the list of available IP’s, its ports and corresponding cables disconnected.
We will need add/edit/view web pages for all of the different items.
The web pages for the device should show the connected components, assigned IP’s, ports and cables connected etc and have links to edit/remove functionality for each of those items which then take you to corresponding edit web page.
If you view an IP, Cable, Port or component it should show the current Device it is assigned to (if any) and have a link going to that device’s view screen.
For each item a basic search should be implemented so we can query by NameShort and whether the device is active or not.