github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/common/firewaller.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/network" 10 ) 11 12 // Firewaller provides the functionality to firewalls in a cloud. 13 type Firewaller interface { 14 // Ports returns the list of open ports on the named firewall. 15 Ports(fwname string) ([]network.PortRange, error) 16 17 // OpenPorts opens the specified ports on the named firewall. 18 OpenPorts(fwname string, ports ...network.PortRange) error 19 20 // ClosePorts closes the specified ports on the named firewall. 21 ClosePorts(fwname string, ports ...network.PortRange) error 22 } 23 24 // TODO(ericsnow) A generic implementation will likely look a lot like 25 // provider/gce/google/conn_network.go. 26 27 // NewFirewaller returns a basic default implementation 28 // of Firewaller. 29 func NewFirewaller() Firewaller { 30 return ¬ImplementedFirewaller{} 31 } 32 33 type notImplementedFirewaller struct{} 34 35 // Ports implements Firewaller. 36 func (notImplementedFirewaller) Ports(fwname string) ([]network.PortRange, error) { 37 return nil, errors.NotImplementedf("Ports method") 38 } 39 40 // OpenPorts implements Firewaller. 41 func (notImplementedFirewaller) OpenPorts(fwname string, ports ...network.PortRange) error { 42 return errors.NotImplementedf("OpenPorts method") 43 } 44 45 // ClosePorts implements Firewaller. 46 func (notImplementedFirewaller) ClosePorts(fwname string, ports ...network.PortRange) error { 47 return errors.NotImplementedf("ClosePorts method") 48 }