github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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  type containerFactory struct {
     7  }
     8  
     9  var _ ContainerFactory = (*containerFactory)(nil)
    10  
    11  func (factory *containerFactory) New(name string) Container {
    12  	return &kvmContainer{
    13  		factory: factory,
    14  		name:    name,
    15  	}
    16  }
    17  
    18  func isRunning(value string) *bool {
    19  	var result *bool = new(bool)
    20  	if value == "running" {
    21  		*result = true
    22  	}
    23  	return result
    24  }
    25  
    26  func (factory *containerFactory) List() (result []Container, err error) {
    27  	machines, err := ListMachines()
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  	for hostname, status := range machines {
    32  		result = append(result, &kvmContainer{
    33  			factory: factory,
    34  			name:    hostname,
    35  			started: isRunning(status),
    36  		})
    37  
    38  	}
    39  	return result, nil
    40  }