need the following changes: models: create a template class for parts. All parts have a partId, nullable serialnumber, last-updated (unix ts in seconds) Specialized classes: Memory stick - speed, size, manufacturer, single/dual/quadruple channel, others Memory slot - allowed speed, allowed size, installed memory stick cpu - name, manufacturer, speed, cores, threads cpu slot - form factor, installed cpu disk - manufacturer, age (since production if possible), generation, model, connection type, connection speed, disk speed, disk size, type (ssd, hdd, virtual, etc), current partitions sizes, partition ids (like sda1 for /dev/sda), and which vms or servers have access to it, by hostname and id. network card - manufacturer, model, age, connection type, connection speed, mac address, ip address(es), whether it's manual or dhcp The cli should: 1. be able to extract all this information and submit to server. Must also be able to edit any of the fields. Must be able to add/remove parts from servers. 2. be able to add/edit/remove servers and part types (like "memory stick", "cpu", etc) 3. be able to list all servers, part types, and parts of a server. 4. be able to just discover and update one part at a time, or all at once. Like `./inventory-cli discover --part-type memory` -> reports back to server all data about memory sticks, memory slots, etc. deployment: this will be deployed on all servers, and it will need to report back every day.