github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/container/kvm/instance.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package kvm
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/juju/juju/instance"
    10  	"github.com/juju/juju/network"
    11  	"github.com/juju/juju/status"
    12  )
    13  
    14  type kvmInstance struct {
    15  	container Container
    16  	id        string
    17  }
    18  
    19  var _ instance.Instance = (*kvmInstance)(nil)
    20  
    21  // Id implements instance.Instance.Id.
    22  func (kvm *kvmInstance) Id() instance.Id {
    23  	return instance.Id(kvm.id)
    24  }
    25  
    26  // Status implements instance.Instance.Status.
    27  func (kvm *kvmInstance) Status() instance.InstanceStatus {
    28  	if kvm.container.IsRunning() {
    29  		return instance.InstanceStatus{
    30  			Status:  status.Running,
    31  			Message: "running",
    32  		}
    33  	}
    34  	return instance.InstanceStatus{
    35  		Status:  status.Stopped,
    36  		Message: "stopped",
    37  	}
    38  }
    39  
    40  func (*kvmInstance) Refresh() error {
    41  	return nil
    42  }
    43  
    44  func (kvm *kvmInstance) Addresses() ([]network.Address, error) {
    45  	logger.Errorf("kvmInstance.Addresses not implemented")
    46  	return nil, nil
    47  }
    48  
    49  // OpenPorts implements instance.Instance.OpenPorts.
    50  func (kvm *kvmInstance) OpenPorts(machineId string, ports []network.PortRange) error {
    51  	return fmt.Errorf("not implemented")
    52  }
    53  
    54  // ClosePorts implements instance.Instance.ClosePorts.
    55  func (kvm *kvmInstance) ClosePorts(machineId string, ports []network.PortRange) error {
    56  	return fmt.Errorf("not implemented")
    57  }
    58  
    59  // Ports implements instance.Instance.Ports.
    60  func (kvm *kvmInstance) Ports(machineId string) ([]network.PortRange, error) {
    61  	return nil, fmt.Errorf("not implemented")
    62  }
    63  
    64  // Add a string representation of the id.
    65  func (kvm *kvmInstance) String() string {
    66  	return fmt.Sprintf("kvm:%s", kvm.id)
    67  }