github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/firewallrules/client.go (about)

     1  // Copyright 2017 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package firewallrules
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  
     9  	"github.com/juju/juju/api/base"
    10  	"github.com/juju/juju/apiserver/params"
    11  )
    12  
    13  // Client allows access to the firewall rules API end point.
    14  type Client struct {
    15  	base.ClientFacade
    16  	st     base.APICallCloser
    17  	facade base.FacadeCaller
    18  }
    19  
    20  // NewClient creates a new client for accessing the firewall rules api.
    21  func NewClient(st base.APICallCloser) *Client {
    22  	frontend, backend := base.NewClientFacade(st, "FirewallRules")
    23  	return &Client{ClientFacade: frontend, st: st, facade: backend}
    24  }
    25  
    26  // SetFirewallRule creates or updates a firewall rule.
    27  func (c *Client) SetFirewallRule(service string, whiteListCidrs []string) error {
    28  	serviceValue := params.KnownServiceValue(service)
    29  	if err := serviceValue.Validate(); err != nil {
    30  		return errors.Trace(err)
    31  	}
    32  
    33  	args := params.FirewallRuleArgs{
    34  		Args: []params.FirewallRule{
    35  			{
    36  				KnownService:   serviceValue,
    37  				WhitelistCIDRS: whiteListCidrs,
    38  			}},
    39  	}
    40  	var results params.ErrorResults
    41  	if err := c.facade.FacadeCall("SetFirewallRules", args, &results); err != nil {
    42  		return errors.Trace(err)
    43  	}
    44  	return results.OneError()
    45  }
    46  
    47  // ListFirewallRules returns all the firewall rules.
    48  func (c *Client) ListFirewallRules() ([]params.FirewallRule, error) {
    49  	var results params.ListFirewallRulesResults
    50  	if err := c.facade.FacadeCall("ListFirewallRules", nil, &results); err != nil {
    51  		return nil, errors.Trace(err)
    52  	}
    53  	return results.Rules, nil
    54  }