github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/container/kvm/containerfactory.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package kvm 5 6 import "github.com/juju/juju/environs/imagemetadata" 7 8 type containerFactory struct { 9 fetcher imagemetadata.SimplestreamsFetcher 10 } 11 12 var _ ContainerFactory = (*containerFactory)(nil) 13 14 func (factory *containerFactory) New(name string) Container { 15 return factory.new(name, nil) 16 } 17 18 func (factory *containerFactory) List() (result []Container, err error) { 19 machines, err := ListMachines(run) 20 if err != nil { 21 return nil, err 22 } 23 for hostname, status := range machines { 24 result = append(result, factory.new(hostname, isRunning(status))) 25 } 26 return result, nil 27 } 28 29 func (factory *containerFactory) new(name string, started *bool) *kvmContainer { 30 return &kvmContainer{ 31 fetcher: factory.fetcher, 32 factory: factory, 33 name: name, 34 started: started, 35 } 36 } 37 38 func isRunning(value string) *bool { 39 result := value == "running" 40 return &result 41 }