docs: def get_hardware(self, hardware_id, **kwargs):
          """Get details about a hardware device.
  
          :param integer id: the hardware ID
          :returns: A dictionary containing a large amount of information about
                    the specified server.
  
          Example::
  
              object_mask = "mask[id,networkVlans[vlanNumber]]"
              # Object masks are optional
              result = mgr.get_hardware(hardware_id=1234,mask=object_mask)
          """
  
          if 'mask' not in kwargs:
              kwargs['mask'] = (
                  'id,'
                  'globalIdentifier,'
                  'fullyQualifiedDomainName,'
                  'hostname,'
                  'domain,'
                  'provisionDate,'
                  'hardwareStatus,'
                  'processorPhysicalCoreAmount,'
                  'memoryCapacity,'
                  'notes,'
                  'privateNetworkOnlyFlag,'
                  'primaryBackendIpAddress,'
                  'primaryIpAddress,'
                  'networkManagementIpAddress,'
                  'userData,'
                  'datacenter,'
                  '''networkComponents[id, status, speed, maxSpeed, name,
                     ipmiMacAddress, ipmiIpAddress, macAddress, primaryIpAddress,
                     port, primarySubnet[id, netmask, broadcastAddress,
                                         networkIdentifier, gateway]],'''
                  'hardwareChassis[id,name],'
                  'activeTransaction[id, transactionStatus[friendlyName,name]],'
                  '''operatingSystem[
                      softwareLicense[softwareDescription[manufacturer,
                                                          name,
                                                          version,
                                                          referenceCode]],
                      passwords[username,password]],'''
                  '''softwareComponents[
                      softwareLicense[softwareDescription[manufacturer,
                                                          name,
                                                          version,
                                                          referenceCode]],
                      passwords[username,password]],'''
                  'billingItem['
                  'id,nextInvoiceTotalRecurringAmount,'
                  'children[nextInvoiceTotalRecurringAmount],'
                  'orderItem.order.userRecord[username]'
                  '],'
                  'hourlyBillingFlag,'
                  'tagReferences[id,tag[name,id]],'
                  'networkVlans[id,vlanNumber,networkSpace],'
                  'remoteManagementAccounts[username,password]'
              )
  
          return self.hardware.getObject(id=hardware_id, **kwargs)