github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/gce/environ_firewall.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package gce 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/environs/context" 10 "github.com/juju/juju/network" 11 "github.com/juju/juju/provider/common" 12 "github.com/juju/juju/provider/gce/google" 13 ) 14 15 // globalFirewallName returns the name to use for the global firewall. 16 func (env *environ) globalFirewallName() string { 17 return common.EnvFullName(env.uuid) 18 } 19 20 // OpenPorts opens the given port ranges for the whole environment. 21 // Must only be used if the environment was setup with the 22 // FwGlobal firewall mode. 23 func (env *environ) OpenPorts(ctx context.ProviderCallContext, rules []network.IngressRule) error { 24 err := env.gce.OpenPorts(env.globalFirewallName(), rules...) 25 return google.HandleCredentialError(errors.Trace(err), ctx) 26 } 27 28 // ClosePorts closes the given port ranges for the whole environment. 29 // Must only be used if the environment was setup with the 30 // FwGlobal firewall mode. 31 func (env *environ) ClosePorts(ctx context.ProviderCallContext, rules []network.IngressRule) error { 32 err := env.gce.ClosePorts(env.globalFirewallName(), rules...) 33 return google.HandleCredentialError(errors.Trace(err), ctx) 34 } 35 36 // IngressRules returns the ingress rules applicable for the whole environment. 37 // Must only be used if the environment was setup with the 38 // FwGlobal firewall mode. 39 func (env *environ) IngressRules(ctx context.ProviderCallContext) ([]network.IngressRule, error) { 40 rules, err := env.gce.IngressRules(env.globalFirewallName()) 41 return rules, google.HandleCredentialError(errors.Trace(err), ctx) 42 }