Add /machine endpoint for 2.0
Only difference from v1 /machine is that both h/w and s/w state is included.
This commit is contained in:
parent
588b1498ac
commit
9df3ea740e
@ -37,6 +37,8 @@ const (
|
|||||||
specApi = "spec"
|
specApi = "spec"
|
||||||
eventsApi = "events"
|
eventsApi = "events"
|
||||||
storageApi = "storage"
|
storageApi = "storage"
|
||||||
|
attributesApi = "attributes"
|
||||||
|
versionApi = "version"
|
||||||
typeName = "name"
|
typeName = "name"
|
||||||
typeDocker = "docker"
|
typeDocker = "docker"
|
||||||
)
|
)
|
||||||
@ -309,6 +311,35 @@ func (self *version2_0) SupportedRequestTypes() []string {
|
|||||||
|
|
||||||
func (self *version2_0) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error {
|
func (self *version2_0) HandleRequest(requestType string, request []string, m manager.Manager, w http.ResponseWriter, r *http.Request) error {
|
||||||
switch requestType {
|
switch requestType {
|
||||||
|
case versionApi:
|
||||||
|
glog.V(2).Infof("Api - Version")
|
||||||
|
versionInfo, err := m.GetVersionInfo()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return writeResult(versionInfo.CadvisorVersion, w)
|
||||||
|
case attributesApi:
|
||||||
|
glog.V(2).Info("Api - Attributes")
|
||||||
|
|
||||||
|
machineInfo, err := m.GetMachineInfo()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
versionInfo, err := m.GetVersionInfo()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
info := v2.GetAttributes(machineInfo, versionInfo)
|
||||||
|
return writeResult(info, w)
|
||||||
|
case machineApi:
|
||||||
|
glog.V(2).Info("Api - Machine")
|
||||||
|
|
||||||
|
// TODO(rjnagal): Move machineInfo from v1.
|
||||||
|
machineInfo, err := m.GetMachineInfo()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return writeResult(machineInfo, w)
|
||||||
case summaryApi:
|
case summaryApi:
|
||||||
containerName := getContainerName(request)
|
containerName := getContainerName(request)
|
||||||
glog.V(2).Infof("Api - Summary(%v)", containerName)
|
glog.V(2).Infof("Api - Summary(%v)", containerName)
|
||||||
|
80
info/v2/machine.go
Normal file
80
info/v2/machine.go
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// Copyright 2015 Google Inc. All Rights Reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package v2
|
||||||
|
|
||||||
|
import (
|
||||||
|
// TODO(rjnagal): Move structs from v1.
|
||||||
|
"github.com/google/cadvisor/info/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Attributes struct {
|
||||||
|
// Kernel version.
|
||||||
|
KernelVersion string `json:"kernel_version"`
|
||||||
|
|
||||||
|
// OS image being used for cadvisor container, or host image if running on host directly.
|
||||||
|
ContainerOsVersion string `json:"container_os_version"`
|
||||||
|
|
||||||
|
// Docker version.
|
||||||
|
DockerVersion string `json:"docker_version"`
|
||||||
|
|
||||||
|
// cAdvisor version.
|
||||||
|
CadvisorVersion string `json:"cadvisor_version"`
|
||||||
|
|
||||||
|
// The number of cores in this machine.
|
||||||
|
NumCores int `json:"num_cores"`
|
||||||
|
|
||||||
|
// Maximum clock speed for the cores, in KHz.
|
||||||
|
CpuFrequency uint64 `json:"cpu_frequency_khz"`
|
||||||
|
|
||||||
|
// The amount of memory (in bytes) in this machine
|
||||||
|
MemoryCapacity int64 `json:"memory_capacity"`
|
||||||
|
|
||||||
|
// The machine id
|
||||||
|
MachineID string `json:"machine_id"`
|
||||||
|
|
||||||
|
// The system uuid
|
||||||
|
SystemUUID string `json:"system_uuid"`
|
||||||
|
|
||||||
|
// Filesystems on this machine.
|
||||||
|
Filesystems []v1.FsInfo `json:"filesystems"`
|
||||||
|
|
||||||
|
// Disk map
|
||||||
|
DiskMap map[string]v1.DiskInfo `json:"disk_map"`
|
||||||
|
|
||||||
|
// Network devices
|
||||||
|
NetworkDevices []v1.NetInfo `json:"network_devices"`
|
||||||
|
|
||||||
|
// Machine Topology
|
||||||
|
// Describes cpu/memory layout and hierarchy.
|
||||||
|
Topology []v1.Node `json:"topology"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetAttributes(mi *v1.MachineInfo, vi *v1.VersionInfo) Attributes {
|
||||||
|
return Attributes{
|
||||||
|
KernelVersion: vi.KernelVersion,
|
||||||
|
ContainerOsVersion: vi.ContainerOsVersion,
|
||||||
|
DockerVersion: vi.DockerVersion,
|
||||||
|
CadvisorVersion: vi.CadvisorVersion,
|
||||||
|
NumCores: mi.NumCores,
|
||||||
|
CpuFrequency: mi.CpuFrequency,
|
||||||
|
MemoryCapacity: mi.MemoryCapacity,
|
||||||
|
MachineID: mi.MachineID,
|
||||||
|
SystemUUID: mi.SystemUUID,
|
||||||
|
Filesystems: mi.Filesystems,
|
||||||
|
DiskMap: mi.DiskMap,
|
||||||
|
NetworkDevices: mi.NetworkDevices,
|
||||||
|
Topology: mi.Topology,
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user