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  }