github.com/rancher/types@v0.0.0-20220328215343-4370ff10ecd5/mapper/os_info.go (about)

     1  package mapper
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/rancher/norman/types"
     7  	"github.com/rancher/norman/types/convert"
     8  	"github.com/rancher/norman/types/values"
     9  )
    10  
    11  type OSInfo struct {
    12  }
    13  
    14  func (o OSInfo) FromInternal(data map[string]interface{}) {
    15  	if data == nil {
    16  		return
    17  	}
    18  	cpuInfo := map[string]interface{}{
    19  		"count": values.GetValueN(data, "capacity", "cpu"),
    20  	}
    21  
    22  	kib := strings.TrimSuffix(convert.ToString(values.GetValueN(data, "capacity", "memory")), "Ki")
    23  	memoryInfo := map[string]interface{}{}
    24  
    25  	kibNum, err := convert.ToNumber(kib)
    26  	if err == nil {
    27  		memoryInfo["memTotalKiB"] = kibNum
    28  	}
    29  
    30  	osInfo := map[string]interface{}{
    31  		"dockerVersion":   strings.TrimPrefix(convert.ToString(values.GetValueN(data, "nodeInfo", "containerRuntimeVersion")), "docker://"),
    32  		"kernelVersion":   values.GetValueN(data, "nodeInfo", "kernelVersion"),
    33  		"operatingSystem": values.GetValueN(data, "nodeInfo", "osImage"),
    34  	}
    35  
    36  	data["info"] = map[string]interface{}{
    37  		"cpu":    cpuInfo,
    38  		"memory": memoryInfo,
    39  		"os":     osInfo,
    40  		"kubernetes": map[string]interface{}{
    41  			"kubeletVersion":   values.GetValueN(data, "nodeInfo", "kubeletVersion"),
    42  			"kubeProxyVersion": values.GetValueN(data, "nodeInfo", "kubeletVersion"),
    43  		},
    44  	}
    45  }
    46  
    47  func (o OSInfo) ToInternal(data map[string]interface{}) error {
    48  	return nil
    49  }
    50  
    51  func (o OSInfo) ModifySchema(schema *types.Schema, schemas *types.Schemas) error {
    52  	return nil
    53  }