github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/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 &notImplementedFirewaller{}
    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  }