diff --git a/net.go b/net.go index 5bc3e4d..d7aff92 100644 --- a/net.go +++ b/net.go @@ -578,6 +578,20 @@ func (b *BigIP) RouteDomains() (*RouteDomains, error) { return &rd, nil } +// GetRouteDomain retrieves a route domain by name. +func (b *BigIP) GetRouteDomain(name string) (*RouteDomain, error) { + var rd RouteDomain + err, ok := b.getForEntity(&rd, uriNet, uriRouteDomain, name) + if err != nil { + return nil, err + } + if !ok { + return nil, nil + } + + return &rd, nil +} + // CreateRouteDomain adds a new route domain to the BIG-IP system. must be separated // by a comma, i.e.: "vlan1010, vlan1020". func (b *BigIP) CreateRouteDomain(name string, id int, strict bool, vlans string) error { diff --git a/net_test.go b/net_test.go index dfdb432..154104b 100644 --- a/net_test.go +++ b/net_test.go @@ -355,6 +355,31 @@ func (s *NetTestSuite) TestRouteDomains() { assert.Equal(s.T(), "0", routes.RouteDomains[0].Name) } +func (s *NetTestSuite) TestGetRouteDomain() { + s.ResponseFunc = func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(`{ + "kind": "tm:net:route-domain:route-domainstate", + "name": "0", + "partition": "Common", + "fullPath": "/Common/0", + "generation": 1, + "id": 0, + "strict": "enabled", + "vlans": [ + "/Common/http-tunnel", + "/Common/socks-tunnel" + ] +}`)) + } + + rd, err := s.Client.GetRouteDomain("0") + + assert.Nil(s.T(), err) + assertRestCall(s, "GET", "/mgmt/tm/net/route-domain/0", "") + assert.Equal(s.T(), "0", rd.Name) + assert.Equal(s.T(), 2, len(rd.Vlans)) +} + func (s *NetTestSuite) TestCreateRouteDomain() { err := s.Client.CreateRouteDomain("name", 1, false, "vlan1,vlan2")