-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
69 lines (58 loc) · 1.41 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import (
"fmt"
"github.com/brightpuddle/goaci"
)
const (
host = "1.1.1.1"
user = "admin"
password = "cisco"
)
func main() {
client, _ := goaci.NewClient(host, user, password)
err := client.Login()
if err != nil {
panic(err)
}
// Get request
res, _ := client.Get("/api/mo/uni/tn-infra")
name := res.Get("imdata.0.*.attributes.name")
fmt.Println(name)
// infra
// Request built prior to making request
req := client.NewReq("GET", "/api/mo/uni/tn-infra", nil)
res, _ = client.Do(req)
name = res.Get("imdata.0.*.attributes.name")
fmt.Println(name)
// infra
// Get an MO by DN
res, _ = client.GetDn("uni/tn-infra")
tenantRecord := res.Get("*.attributes|@pretty")
fmt.Println(tenantRecord)
// {
// "dn": "uni/tn-infra",
// "name" "infra",
// ...
// }
// Get by class
res, _ = client.GetClass("fvTenant")
for _, tnName := range res.Get("#.*.attributes.name").Array() {
fmt.Println(tnName)
}
// infra
// common
// mgmt
// ...
// Query parameters
queryInfra := goaci.Query("query-target-filter", `eq(fvTenant.name,"infra")`)
res, _ = client.GetClass("fvTenant", queryInfra)
name = res.Get("imdata.0.fvTenant.attributes.name")
fmt.Println(name)
// Create a new tenant
body := goaci.Body{}.Set("fvTenant.attributes.name", "goaci-example").Str
res, err = client.Post("/api/mo/uni/tn-goaci-example", body)
if err != nil {
panic(err)
}
fmt.Println(res.Get("@pretty"))
}