mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 18:17:55 +00:00 
			
		
		
		
	 3bf73132ec
			
		
	
	3bf73132ec
	
	
	
		
			
			* Update gopsutil to v3 * Adds v2 field names in host-info response to allow eventual deprecation in favor of v3 field names * Map v3 to v2 field names to keep host-info api compat * copy gopsutil license into source
		
			
				
	
	
		
			125 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright (c) 2014, WAKAYAMA Shirou
 | |
| // All rights reserved.
 | |
| //
 | |
| // Redistribution and use in source and binary forms, with or without modification,
 | |
| // are permitted provided that the following conditions are met:
 | |
| //
 | |
| //  * Redistributions of source code must retain the above copyright notice, this
 | |
| //    list of conditions and the following disclaimer.
 | |
| //  * Redistributions in binary form must reproduce the above copyright notice,
 | |
| //    this list of conditions and the following disclaimer in the documentation
 | |
| //    and/or other materials provided with the distribution.
 | |
| //  * Neither the name of the gopsutil authors nor the names of its contributors
 | |
| //    may be used to endorse or promote products derived from this software without
 | |
| //    specific prior written permission.
 | |
| //
 | |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 | |
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | |
| // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | |
| // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 | |
| // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | |
| // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | |
| // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 | |
| // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
| // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| 
 | |
| // Copied from https://github.com/shirou/gopsutil/blob/b49f37e9f30f49530cf2ad6038a4dac1b746c8f7/mem/mem.go#L15
 | |
| // Copied from https://github.com/shirou/gopsutil/blob/b49f37e9f30f49530cf2ad6038a4dac1b746c8f7/host/host.go#L17
 | |
| 
 | |
| package hostutil
 | |
| 
 | |
| // VirtualMemoryStat holds commonly used memory measurements. We must have a
 | |
| // local type here in order to avoid building the gopsutil library on certain
 | |
| // arch types.
 | |
| //
 | |
| // This struct is copied to maintain backwards compatibility in the Vault host-info API.
 | |
| // This is done because gopsutil changed JSON struct tags between its v2 and v3 releases.
 | |
| // For details see https://github.com/shirou/gopsutil/tree/master/_tools/v3migration.
 | |
| type VirtualMemoryStat struct {
 | |
| 	// Total amount of RAM on this system
 | |
| 	Total uint64 `json:"total"`
 | |
| 
 | |
| 	// RAM available for programs to allocate
 | |
| 	//
 | |
| 	// This value is computed from the kernel specific values.
 | |
| 	Available uint64 `json:"available"`
 | |
| 
 | |
| 	// RAM used by programs
 | |
| 	//
 | |
| 	// This value is computed from the kernel specific values.
 | |
| 	Used uint64 `json:"used"`
 | |
| 
 | |
| 	// Percentage of RAM used by programs
 | |
| 	//
 | |
| 	// This value is computed from the kernel specific values.
 | |
| 	UsedPercent float64 `json:"usedPercent"`
 | |
| 
 | |
| 	// This is the kernel's notion of free memory; RAM chips whose bits nobody
 | |
| 	// cares about the value of right now. For a human consumable number,
 | |
| 	// Available is what you really want.
 | |
| 	Free uint64 `json:"free"`
 | |
| 
 | |
| 	// OS X / BSD specific numbers:
 | |
| 	// http://www.macyourself.com/2010/02/17/what-is-free-wired-active-and-inactive-system-memory-ram/
 | |
| 	Active   uint64 `json:"active"`
 | |
| 	Inactive uint64 `json:"inactive"`
 | |
| 	Wired    uint64 `json:"wired"`
 | |
| 
 | |
| 	// FreeBSD specific numbers:
 | |
| 	// https://reviews.freebsd.org/D8467
 | |
| 	Laundry uint64 `json:"laundry"`
 | |
| 
 | |
| 	// Linux specific numbers
 | |
| 	// https://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-meminfo.html
 | |
| 	// https://www.kernel.org/doc/Documentation/filesystems/proc.txt
 | |
| 	// https://www.kernel.org/doc/Documentation/vm/overcommit-accounting
 | |
| 	Buffers        uint64 `json:"buffers"`
 | |
| 	Cached         uint64 `json:"cached"`
 | |
| 	Writeback      uint64 `json:"writeback"`
 | |
| 	Dirty          uint64 `json:"dirty"`
 | |
| 	WritebackTmp   uint64 `json:"writebacktmp"`
 | |
| 	Shared         uint64 `json:"shared"`
 | |
| 	Slab           uint64 `json:"slab"`
 | |
| 	SReclaimable   uint64 `json:"sreclaimable"`
 | |
| 	SUnreclaim     uint64 `json:"sunreclaim"`
 | |
| 	PageTables     uint64 `json:"pagetables"`
 | |
| 	SwapCached     uint64 `json:"swapcached"`
 | |
| 	CommitLimit    uint64 `json:"commitlimit"`
 | |
| 	CommittedAS    uint64 `json:"committedas"`
 | |
| 	HighTotal      uint64 `json:"hightotal"`
 | |
| 	HighFree       uint64 `json:"highfree"`
 | |
| 	LowTotal       uint64 `json:"lowtotal"`
 | |
| 	LowFree        uint64 `json:"lowfree"`
 | |
| 	SwapTotal      uint64 `json:"swaptotal"`
 | |
| 	SwapFree       uint64 `json:"swapfree"`
 | |
| 	Mapped         uint64 `json:"mapped"`
 | |
| 	VMallocTotal   uint64 `json:"vmalloctotal"`
 | |
| 	VMallocUsed    uint64 `json:"vmallocused"`
 | |
| 	VMallocChunk   uint64 `json:"vmallocchunk"`
 | |
| 	HugePagesTotal uint64 `json:"hugepagestotal"`
 | |
| 	HugePagesFree  uint64 `json:"hugepagesfree"`
 | |
| 	HugePageSize   uint64 `json:"hugepagesize"`
 | |
| }
 | |
| 
 | |
| // HostInfoStat describes the host status.
 | |
| //
 | |
| // This struct is copied to maintain backwards compatibility in the Vault host-info API.
 | |
| // This is done because gopsutil changed JSON struct tags between its v2 and v3 releases.
 | |
| // For details see https://github.com/shirou/gopsutil/tree/master/_tools/v3migration.
 | |
| type HostInfoStat struct {
 | |
| 	Hostname             string `json:"hostname"`
 | |
| 	Uptime               uint64 `json:"uptime"`
 | |
| 	BootTime             uint64 `json:"bootTime"`
 | |
| 	Procs                uint64 `json:"procs"`
 | |
| 	OS                   string `json:"os"`
 | |
| 	Platform             string `json:"platform"`
 | |
| 	PlatformFamily       string `json:"platformFamily"`
 | |
| 	PlatformVersion      string `json:"platformVersion"`
 | |
| 	KernelVersion        string `json:"kernelVersion"`
 | |
| 	KernelArch           string `json:"kernelArch"`
 | |
| 	VirtualizationSystem string `json:"virtualizationSystem"`
 | |
| 	VirtualizationRole   string `json:"virtualizationRole"`
 | |
| 	HostID               string `json:"hostid"`
 | |
| }
 |