github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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/core/instance"
    10  	"github.com/juju/juju/core/status"
    11  	"github.com/juju/juju/environs/context"
    12  	"github.com/juju/juju/environs/instances"
    13  	"github.com/juju/juju/network"
    14  )
    15  
    16  type kvmInstance struct {
    17  	container Container
    18  	id        string
    19  }
    20  
    21  var _ instances.Instance = (*kvmInstance)(nil)
    22  
    23  // Id implements instances.instance.Id.
    24  func (kvm *kvmInstance) Id() instance.Id {
    25  	return instance.Id(kvm.id)
    26  }
    27  
    28  // Status implements instances.Instance.Status.
    29  func (kvm *kvmInstance) Status(ctx context.ProviderCallContext) instance.Status {
    30  	if kvm.container.IsRunning() {
    31  		return instance.Status{
    32  			Status:  status.Running,
    33  			Message: "running",
    34  		}
    35  	}
    36  	return instance.Status{
    37  		Status:  status.Stopped,
    38  		Message: "stopped",
    39  	}
    40  }
    41  
    42  func (*kvmInstance) Refresh() error {
    43  	return nil
    44  }
    45  
    46  func (kvm *kvmInstance) Addresses(ctx context.ProviderCallContext) ([]network.Address, error) {
    47  	logger.Errorf("kvmInstance.Addresses not implemented")
    48  	return nil, nil
    49  }
    50  
    51  // OpenPorts implements instances.Instance.OpenPorts.
    52  func (kvm *kvmInstance) OpenPorts(ctx context.ProviderCallContext, machineId string, rules []network.IngressRule) error {
    53  	return fmt.Errorf("not implemented")
    54  }
    55  
    56  // ClosePorts implements instances.Instance.ClosePorts.
    57  func (kvm *kvmInstance) ClosePorts(ctx context.ProviderCallContext, machineId string, rules []network.IngressRule) error {
    58  	return fmt.Errorf("not implemented")
    59  }
    60  
    61  // IngressRules implements instances.Instance.IngressRules.
    62  func (kvm *kvmInstance) IngressRules(ctx context.ProviderCallContext, machineId string) ([]network.IngressRule, error) {
    63  	return nil, fmt.Errorf("not implemented")
    64  }
    65  
    66  // Add a string representation of the id.
    67  func (kvm *kvmInstance) String() string {
    68  	return fmt.Sprintf("kvm:%s", kvm.id)
    69  }