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 }