github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/controller/firewaller/state.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package firewaller
     5  
     6  import (
     7  	"gopkg.in/juju/names.v2"
     8  	"gopkg.in/macaroon.v2-unstable"
     9  
    10  	"github.com/juju/juju/apiserver/common/firewall"
    11  	"github.com/juju/juju/state"
    12  )
    13  
    14  // State provides the subset of global state required by the
    15  // remote firewaller facade.
    16  type State interface {
    17  	firewall.State
    18  
    19  	ModelUUID() string
    20  
    21  	GetMacaroon(entity names.Tag) (*macaroon.Macaroon, error)
    22  
    23  	WatchOpenedPorts() state.StringsWatcher
    24  
    25  	FindEntity(tag names.Tag) (state.Entity, error)
    26  
    27  	FirewallRule(service state.WellKnownServiceType) (*state.FirewallRule, error)
    28  }
    29  
    30  // TODO(wallyworld) - for tests, remove when remaining firewaller tests become unit tests.
    31  func StateShim(st *state.State, m *state.Model) stateShim {
    32  	return stateShim{st: st, State: firewall.StateShim(st, m)}
    33  }
    34  
    35  type stateShim struct {
    36  	firewall.State
    37  	st *state.State
    38  }
    39  
    40  func (st stateShim) ModelUUID() string {
    41  	return st.st.ModelUUID()
    42  }
    43  
    44  func (st stateShim) GetMacaroon(entity names.Tag) (*macaroon.Macaroon, error) {
    45  	r := st.st.RemoteEntities()
    46  	return r.GetMacaroon(entity)
    47  }
    48  
    49  func (st stateShim) FindEntity(tag names.Tag) (state.Entity, error) {
    50  	return st.st.FindEntity(tag)
    51  }
    52  
    53  func (st stateShim) WatchOpenedPorts() state.StringsWatcher {
    54  	return st.st.WatchOpenedPorts()
    55  }
    56  
    57  func (s stateShim) FirewallRule(service state.WellKnownServiceType) (*state.FirewallRule, error) {
    58  	api := state.NewFirewallRules(s.st)
    59  	return api.Rule(service)
    60  }