tumblr / collins

groovy kind of love
tumblr.github.com/collins
Apache License 2.0
571 stars 99 forks source link

Base Serial How does your computer identify itself? #477

Closed Steiniche closed 7 years ago

Steiniche commented 7 years ago

Hello,

When LSHW data is send to collins a line with the following message gets created: Base Serial How does your computer identify itself?

If LSHW data is uploaded more than once a line is created for each time. E.g. three uploads of LSHW data generates this:

Base Serial (0)        How does your computer identify itself?
Base Serial (0)        How does your computer identify itself?
Base Serial (0)        How does your computer identify itself?

It seems to stem from the serial number not being parsed into collins as the Server Base serial is empty. However, the serial is defined in the system node in the output.xml (See "How to reproduce" for test xml)

I have tried with different LSHW data from different machines but with no change in the behavior.

How to reproduce Run the official docker image from: https://hub.docker.com/r/tumblr/collins/

Create an asset, put it into maintenance and upload lshw data:

curl -X PUT --basic -u blake:admin:first http://localhost:9000/api/asset/ABC-123
curl --basic -u blake:admin:first -d status=Maintenance -d state=HARDWARE_UPGRADE -d reason='Ready for upgrade' http://localhost:9000/api/asset/ABC-123/status
curl -X POST -u blake:admin:first "lshw@output.xml"  http://localhost:9000/api/asset/ABC-123

There is no indication from the API or the log within the docker container that there is missing any information.

Where output.xml contains the following LSHW xml output:

<?xml version="1.0" standalone="yes" ?>
<!-- generated by lshw-B.02.17 -->
<!-- GCC 4.8.5 20150623 (Red Hat 4.8.5-4) -->
<!-- Linux 3.10.0-327.22.2.el7.x86_64 #1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 -->
<!-- GNU libc 2 (glibc 2.17) -->
<list>
<node id="ABC-123" claimed="true" class="system" handle="DMI:0001">
 <description>Desktop Computer</description>
 <product>Virtual Machine (None)</product>
 <vendor>Microsoft Corporation</vendor>
 <version>Hyper-V UEFI Release v1.0</version>
 <serial>0574-2207-1613-4261-5019-1454-34</serial>
 <width units="bits">64</width>
 <configuration>
  <setting id="boot" value="normal" />
  <setting id="chassis" value="desktop" />
  <setting id="family" value="Virtual Machine" />
  <setting id="sku" value="None" />
  <setting id="uuid" value="893FC6A0-963E-584C-8B4D-4C6834C8E642" />
 </configuration>
 <capabilities>
  <capability id="smbios-2.4" >SMBIOS version 2.4</capability>
  <capability id="dmi-2.4" >DMI version 2.4</capability>
  <capability id="vsyscall32" >32-bit processes</capability>
 </capabilities>
  <node id="core" claimed="true" class="bus" handle="DMI:0003">
   <description>Motherboard</description>
   <product>Virtual Machine</product>
   <vendor>Microsoft Corporation</vendor>
   <physid>0</physid>
   <version>Hyper-V UEFI Release v1.0</version>
   <serial>0574-2207-1613-4261-5019-1454-34</serial>
   <slot>Virtual Machine</slot>
    <node id="firmware" claimed="true" class="memory" handle="">
     <description>BIOS</description>
     <vendor>Microsoft Corporation</vendor>
     <physid>0</physid>
     <version>Hyper-V UEFI Release v1.0</version>
     <date>11/26/2012</date>
     <size units="bytes">1048576</size>
     <capabilities>
      <capability id="acpi" >ACPI</capability>
     </capabilities>
    </node>
    <node id="cpu" claimed="true" class="processor" handle="DMI:0004">
     <description>CPU</description>
     <product>Xeon (None)</product>
     <vendor>Intel Corp.</vendor>
     <physid>4</physid>
     <businfo>cpu@0</businfo>
     <version>Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz</version>
     <serial>None</serial>
     <slot>None</slot>
     <size units="Hz">2400000000</size>
     <capacity units="Hz">4000000000</capacity>
     <width units="bits">64</width>
     <clock units="Hz">3705032704</clock>
     <capabilities>
      <capability id="fpu" >mathematical co-processor</capability>
      <capability id="fpu_exception" >FPU exceptions reporting</capability>
      <capability id="wp" />
      <capability id="vme" >virtual mode extensions</capability>
      <capability id="de" >debugging extensions</capability>
      <capability id="pse" >page size extensions</capability>
      <capability id="tsc" >time stamp counter</capability>
      <capability id="msr" >model-specific registers</capability>
      <capability id="pae" >4GB+ memory addressing (Physical Address Extension)</capability>
      <capability id="mce" >machine check exceptions</capability>
      <capability id="cx8" >compare and exchange 8-byte</capability>
      <capability id="apic" >on-chip advanced programmable interrupt controller (APIC)</capability>
      <capability id="sep" >fast system calls</capability>
      <capability id="mtrr" >memory type range registers</capability>
      <capability id="pge" >page global enable</capability>
      <capability id="mca" >machine check architecture</capability>
      <capability id="cmov" >conditional move instruction</capability>
      <capability id="pat" >page attribute table</capability>
      <capability id="pse36" >36-bit page size extensions</capability>
      <capability id="clflush" />
      <capability id="mmx" >multimedia extensions (MMX)</capability>
      <capability id="fxsr" >fast floating point save/restore</capability>
      <capability id="sse" >streaming SIMD extensions (SSE)</capability>
      <capability id="sse2" >streaming SIMD extensions (SSE2)</capability>
      <capability id="ss" >self-snoop</capability>
      <capability id="syscall" >fast system calls</capability>
      <capability id="nx" >no-execute bit (NX)</capability>
      <capability id="x86-64" >64bits extensions (x86-64)</capability>
      <capability id="constant_tsc" />
      <capability id="rep_good" />
      <capability id="nopl" />
      <capability id="eagerfpu" />
      <capability id="pni" />
      <capability id="pclmulqdq" />
      <capability id="ssse3" />
      <capability id="fma" />
      <capability id="cx16" />
      <capability id="sse4_1" />
      <capability id="sse4_2" />
      <capability id="movbe" />
      <capability id="popcnt" />
      <capability id="aes" />
      <capability id="xsave" />
      <capability id="avx" />
      <capability id="f16c" />
      <capability id="rdrand" />
      <capability id="hypervisor" />
      <capability id="lahf_lm" />
      <capability id="abm" />
      <capability id="fsgsbase" />
      <capability id="bmi1" />
      <capability id="avx2" />
      <capability id="smep" />
      <capability id="bmi2" />
      <capability id="erms" />
      <capability id="xsaveopt" />
     </capabilities>
    </node>
    <node id="memory" claimed="true" class="memory" handle="DMI:0006">
     <description>System Memory</description>
     <physid>6</physid>
     <slot>System board or motherboard</slot>
     <size units="bytes">4294967296</size>
      <node id="bank:0" claimed="true" class="memory" handle="DMI:0007">
       <product>None</product>
       <vendor>Microsoft Corporation</vendor>
       <physid>0</physid>
       <serial>None</serial>
       <slot>M00</slot>
       <size units="bytes">4160749568</size>
      </node>
      <node id="bank:1" claimed="true" class="memory" handle="DMI:000A">
       <product>None</product>
       <vendor>Microsoft Corporation</vendor>
       <physid>1</physid>
       <serial>None</serial>
       <slot>M01</slot>
       <size units="bytes">134217728</size>
      </node>
    </node>
    <node id="scsi" claimed="true" class="storage" handle="">
     <physid>1</physid>
     <logicalname>scsi0</logicalname>
      <node id="disk" claimed="true" class="disk" handle="GUID:f6dc42f4-c255-47a8-94cf-eb351588536d">
       <description>SCSI Disk</description>
       <physid>0.0.0</physid>
       <businfo>scsi@0:0.0.0</businfo>
       <logicalname>/dev/sda</logicalname>
       <dev>8:0</dev>
       <size units="bytes">53687091200</size>
       <configuration>
        <setting id="guid" value="f6dc42f4-c255-47a8-94cf-eb351588536d" />
        <setting id="logicalsectorsize" value="512" />
        <setting id="sectorsize" value="4096" />
       </configuration>
       <capabilities>
        <capability id="gpt-1.00" >GUID Partition Table version 1.00</capability>
        <capability id="partitioned" >Partitioned disk</capability>
        <capability id="partitioned:gpt" >GUID partition table</capability>
       </capabilities>
        <node id="volume:0" class="volume" handle="GUID:b63580c3-869b-4acb-9089-9b5e6183d10e">
         <description>Windows FAT volume</description>
         <vendor>mkfs.fat</vendor>
         <physid>1</physid>
         <businfo>scsi@0:0.0.0,1</businfo>
         <version>FAT16</version>
         <serial>32c4-96a4</serial>
         <size units="bytes">209714688</size>
         <capacity>209714688</capacity>
         <configuration>
          <setting id="FATs" value="2" />
          <setting id="filesystem" value="fat" />
          <setting id="name" value="EFI System Partition" />
         </configuration>
         <capabilities>
          <capability id="boot" >Contains boot code</capability>
          <capability id="fat" >Windows FAT</capability>
          <capability id="initialized" >initialized volume</capability>
         </capabilities>
        </node>
        <node id="volume:1" class="volume" handle="GUID:c1747320-6774-47dc-8e61-104051115270">
         <description>data partition</description>
         <vendor>Windows</vendor>
         <physid>2</physid>
         <businfo>scsi@0:0.0.0,2</businfo>
         <serial>c1747320-6774-47dc-8e61-104051115270</serial>
         <capacity>524287488</capacity>
        </node>
        <node id="volume:2" claimed="true" class="volume" handle="GUID:4255502b-0cf7-4aaf-b651-b49b0af21155">
         <description>LVM Physical Volume</description>
         <vendor>Linux</vendor>
         <physid>3</physid>
         <businfo>scsi@0:0.0.0,3</businfo>
         <logicalname>/dev/sda3</logicalname>
         <dev>8:3</dev>
         <serial>tpeGWj-gIj7-Xpa7-22j6-LqZf-qP6k-ayZLO1</serial>
         <size units="bytes">52950990848</size>
         <capabilities>
          <capability id="multi" >Multi-volumes</capability>
          <capability id="lvm2" />
         </capabilities>
        </node>
      </node>
      <node id="cdrom" claimed="true" class="disk" handle="SCSI:00:00:00:01">
       <description>SCSI CD-ROM</description>
       <physid>0.0.1</physid>
       <businfo>scsi@0:0.0.1</businfo>
       <logicalname>/dev/cdrom</logicalname>
       <logicalname>/dev/sr0</logicalname>
       <dev>11:0</dev>
       <configuration>
        <setting id="status" value="ready" />
       </configuration>
       <capabilities>
        <capability id="audio" >Audio CD playback</capability>
       </capabilities>
      </node>
    </node>
  </node>
  <node id="network:0" claimed="true" class="network" handle="">
   <description>Ethernet interface</description>
   <physid>1</physid>
   <logicalname>veth7720825</logicalname>
   <serial>e2:89:fc:fa:6c:2c</serial>
   <size units="bit/s">10000000000</size>
   <configuration>
    <setting id="autonegotiation" value="off" />
    <setting id="broadcast" value="yes" />
    <setting id="driver" value="veth" />
    <setting id="driverversion" value="1.0" />
    <setting id="duplex" value="full" />
    <setting id="link" value="yes" />
    <setting id="multicast" value="yes" />
    <setting id="port" value="twisted pair" />
    <setting id="speed" value="10Gbit/s" />
   </configuration>
   <capabilities>
    <capability id="ethernet" />
    <capability id="physical" >Physical interface</capability>
   </capabilities>
  </node>
  <node id="network:1" claimed="true" class="network" handle="">
   <description>Ethernet interface</description>
   <physid>2</physid>
   <logicalname>eth0</logicalname>
   <serial>00:1d:d8:b7:1e:e7</serial>
   <configuration>
    <setting id="broadcast" value="yes" />
    <setting id="driver" value="hv_netvsc" />
    <setting id="firmware" value="N/A" />
    <setting id="ip" value="172.19.2.91" />
    <setting id="link" value="yes" />
    <setting id="multicast" value="yes" />
   </configuration>
   <capabilities>
    <capability id="ethernet" />
    <capability id="physical" >Physical interface</capability>
   </capabilities>
  </node>
</node>
</list>
byxorna commented 7 years ago

+1, i see this as well.

davidblum commented 7 years ago

I am experiencing this issue as well. I have attempted to pass in a base_serial value, this does not help either.

davidblum commented 7 years ago

@Steiniche This is hacky, but it is a functional workaround. You can add this delete attribute call after y our updates:

curl --basic -u blake:admin:first -X DELETE http://localhost:9000/api/asset/tumblrtag30/attribute/BASE_SERIAL
Steiniche commented 7 years ago

@davidblum very hacky indeed. I was hoping for a fix before we upgrade. However, this issue is not getting much attention so a hacky fix is better than no fix. Thank you!

byxorna commented 7 years ago

517 fixes this! :)

Steiniche commented 7 years ago

Brilliant @byxorna thank you for taking the time to create a fix!