本文整理汇总了Golang中github.com/juju/utils/arch.NormaliseArch函数的典型用法代码示例。如果您正苦于以下问题:Golang NormaliseArch函数的具体用法?Golang NormaliseArch怎么用?Golang NormaliseArch使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NormaliseArch函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestNormaliseArch
func (s *archSuite) TestNormaliseArch(c *gc.C) {
for _, test := range []struct {
raw string
arch string
}{
{"windows", "windows"},
{"amd64", "amd64"},
{"x86_64", "amd64"},
{"386", "i386"},
{"i386", "i386"},
{"i486", "i386"},
{"arm", "armhf"},
{"armv", "armhf"},
{"armv7", "armhf"},
{"aarch64", "arm64"},
{"arm64", "arm64"},
{"ppc64el", "ppc64el"},
{"ppc64le", "ppc64el"},
{"ppc64", "ppc64el"},
{"s390x", "s390x"},
} {
arch := arch.NormaliseArch(test.raw)
c.Check(arch, gc.Equals, test.arch)
}
}
示例2: detectSeriesAndHardwareCharacteristics
func detectSeriesAndHardwareCharacteristics(host string) (hc instance.HardwareCharacteristics, series string, err error) {
logger.Infof("Detecting series and characteristics on %s", host)
cmd := ssh.Command("[email protected]"+host, []string{"/bin/bash"}, nil)
var stdout, stderr bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
cmd.Stdin = bytes.NewBufferString(detectionScript)
if err := cmd.Run(); err != nil {
if stderr.Len() != 0 {
err = fmt.Errorf("%v (%v)", err, strings.TrimSpace(stderr.String()))
}
return hc, "", err
}
lines := strings.Split(stdout.String(), "\n")
series = strings.TrimSpace(lines[0])
arch := arch.NormaliseArch(lines[1])
hc.Arch = &arch
// HardwareCharacteristics wants memory in megabytes,
// meminfo reports it in kilobytes.
memkB := strings.Fields(lines[2])[1] // "MemTotal: NNN kB"
hc.Mem = new(uint64)
*hc.Mem, err = strconv.ParseUint(memkB, 10, 0)
*hc.Mem /= 1024
// For each "physical id", count the number of cores.
// This way we only count physical cores, not additional
// logical cores due to hyperthreading.
recorded := make(map[string]bool)
var physicalId string
hc.CpuCores = new(uint64)
for _, line := range lines[3:] {
if strings.HasPrefix(line, "physical id") {
physicalId = strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
} else if strings.HasPrefix(line, "cpu cores") {
var cores uint64
value := strings.TrimSpace(strings.SplitN(line, ":", 2)[1])
if cores, err = strconv.ParseUint(value, 10, 0); err != nil {
return hc, "", err
}
if !recorded[physicalId] {
*hc.CpuCores += cores
recorded[physicalId] = true
}
}
}
if *hc.CpuCores == 0 {
// In the case of a single-core, non-HT CPU, we'll see no
// "physical id" or "cpu cores" lines.
*hc.CpuCores = 1
}
// TODO(axw) calculate CpuPower. What algorithm do we use?
logger.Infof("series: %s, characteristics: %s", series, hc)
return hc, series, nil
}
示例3: newInstanceSummary
func newInstanceSummary(info *shared.ContainerState) InstanceSummary {
archStr, _ := shared.ArchitectureName(info.Architecture)
archStr = arch.NormaliseArch(archStr)
var numCores uint = 0 // default to all
if raw := info.Config["limits.cpus"]; raw != "" {
fmt.Sscanf(raw, "%d", &numCores)
}
var mem uint = 0 // default to all
if raw := info.Config["limits.memory"]; raw != "" {
fmt.Sscanf(raw, "%d", &mem)
}
var addrs []network.Address
for _, info := range info.Status.Ips {
addr := network.NewAddress(info.Address)
// Ignore loopback devices.
// TODO(ericsnow) Move the loopback test to a network.Address method?
ip := net.ParseIP(addr.Value)
if ip != nil && ip.IsLoopback() {
continue
}
addrs = append(addrs, addr)
}
// TODO(ericsnow) Factor this out into a function.
statusStr := info.Status.Status
for status, code := range allStatuses {
if info.Status.StatusCode == code {
statusStr = status
break
}
}
metadata := extractMetadata(info.Config)
return InstanceSummary{
Name: info.Name,
Status: statusStr,
Metadata: metadata,
Addresses: addrs,
Hardware: InstanceHardware{
Architecture: archStr,
NumCores: numCores,
MemoryMB: mem,
},
}
}
示例4: newInstanceSummary
func newInstanceSummary(info *shared.ContainerInfo) InstanceSummary {
archStr := arch.NormaliseArch(info.Architecture)
var numCores uint = 0 // default to all
if raw := info.Config["limits.cpu"]; raw != "" {
fmt.Sscanf(raw, "%d", &numCores)
}
var mem uint = 0 // default to all
if raw := info.Config["limits.memory"]; raw != "" {
result, err := shared.ParseByteSizeString(raw)
if err != nil {
logger.Errorf("failed to parse %s into bytes, ignoring err: %s", raw, err)
mem = 0
} else {
// We're going to put it into MemoryMB, so adjust by a megabyte
result = result / megabyte
if result > math.MaxUint32 {
logger.Errorf("byte string %s overflowed uint32", raw)
mem = math.MaxUint32
} else {
mem = uint(result)
}
}
}
// TODO(ericsnow) Factor this out into a function.
statusStr := info.Status
for status, code := range allStatuses {
if info.StatusCode == code {
statusStr = status
break
}
}
metadata := extractMetadata(info.Config)
return InstanceSummary{
Name: info.Name,
Status: statusStr,
Metadata: metadata,
Hardware: InstanceHardware{
Architecture: archStr,
NumCores: numCores,
MemoryMB: mem,
},
}
}
示例5: TestContainerStartedAndStopped
func (s *kvmProvisionerSuite) TestContainerStartedAndStopped(c *gc.C) {
if arch.NormaliseArch(runtime.GOARCH) != arch.AMD64 {
c.Skip("Test only enabled on amd64, see bug lp:1572145")
}
p := s.newKvmProvisioner(c)
defer stop(c, p)
container := s.addContainer(c)
instId := s.expectStarted(c, container)
// ...and removed, along with the machine, when the machine is Dead.
c.Assert(container.EnsureDead(), gc.IsNil)
s.expectStopped(c, instId)
s.waitForRemovalMark(c, container)
}
示例6: SkipIfI386
// SkipIfI386 skips the test if the arch is I386.
func SkipIfI386(c *gc.C, bugID string) {
if arch.NormaliseArch(runtime.GOARCH) == arch.I386 {
c.Skip(fmt.Sprintf("Test disabled on I386 until fixed - see bug %s", bugID))
}
}
示例7: SkipIfPPC64EL
// SkipIfPPC64EL skips the test if the arch is PPC64EL and the
// compiler is gccgo.
func SkipIfPPC64EL(c *gc.C, bugID string) {
if runtime.Compiler == "gccgo" &&
arch.NormaliseArch(runtime.GOARCH) == arch.PPC64EL {
c.Skip(fmt.Sprintf("Test disabled on PPC64EL until fixed - see bug %s", bugID))
}
}