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 }