Skip to content

Commit 8460615

Browse files
author
sandeep parmar
committed
go samples for netbackup image and jobs list
1 parent e57fba2 commit 8460615

4 files changed

Lines changed: 173 additions & 8 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
import (
3+
"bufio"
4+
"fmt"
5+
"netbackup"
6+
"os"
7+
)
8+
func main() {
9+
fmt.Printf("Welcome to sample Go program to call NetBackup APIs\n")
10+
scanner := bufio.NewScanner(os.Stdin)
11+
fmt.Printf("Enter the server to connect: ")
12+
scanner.Scan()
13+
server := scanner.Text()
14+
fmt.Printf("Enter username for server:")
15+
scanner.Scan()
16+
username := scanner.Text()
17+
fmt.Printf("Enter password for server:")
18+
scanner.Scan()
19+
password := scanner.Text()
20+
fmt.Printf("Enter domain name for server:")
21+
scanner.Scan()
22+
domain := scanner.Text()
23+
fmt.Printf("Enter domain type <unixpwd/nt>:")
24+
scanner.Scan()
25+
domainType := scanner.Text()
26+
fmt.Printf("Calling NetBackup Login\n")
27+
fmt.Printf("-----------------------\n")
28+
jwt := netbackup.Login(username, password, domain, domainType, server)
29+
fmt.Printf("-----------------------\n")
30+
fmt.Printf("Netbackup Images List using jwt\n")
31+
fmt.Printf("-----------------------\n")
32+
netbackup.ImagesList(jwt, server)
33+
fmt.Printf("-----------------------\n")
34+
}

snippets/go/example/get_nb_jobs.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package main
2+
import (
3+
"bufio"
4+
"fmt"
5+
"netbackup"
6+
"os"
7+
)
8+
func main() {
9+
fmt.Printf("Welcome to sample Go program to call NetBackup APIs\n")
10+
scanner := bufio.NewScanner(os.Stdin)
11+
fmt.Printf("Enter the server to connect: ")
12+
scanner.Scan()
13+
server := scanner.Text()
14+
fmt.Printf("Enter username for server:")
15+
scanner.Scan()
16+
username := scanner.Text()
17+
fmt.Printf("Enter password for server:")
18+
scanner.Scan()
19+
password := scanner.Text()
20+
fmt.Printf("Enter domain name for server:")
21+
scanner.Scan()
22+
domain := scanner.Text()
23+
fmt.Printf("Enter domain type <unixpwd/nt>:")
24+
scanner.Scan()
25+
domainType := scanner.Text()
26+
fmt.Printf("Calling NetBackup Login\n")
27+
fmt.Printf("-----------------------\n")
28+
jwt := netbackup.Login(username, password, domain, domainType, server)
29+
fmt.Printf("-----------------------\n")
30+
fmt.Printf("Netbackup Jobs List using jwt\n")
31+
fmt.Printf("-----------------------\n")
32+
netbackup.JobList(jwt, server)
33+
fmt.Printf("-----------------------\n")
34+
}
Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package main
2-
3-
import (
2+
import (
43
"bufio"
54
"fmt"
65
"netbackup"
76
"os"
87
)
9-
10-
func main() {
8+
func main() {
119
fmt.Printf("Welcome to sample Go program to call NetBackup APIs\n")
1210
scanner := bufio.NewScanner(os.Stdin)
1311
fmt.Printf("Enter the server to connect: ")
@@ -23,11 +21,16 @@ func main() {
2321
fmt.Printf("Enter password for server:")
2422
scanner.Scan()
2523
password := scanner.Text()
24+
fmt.Printf("Enter domain name for server:")
25+
scanner.Scan()
26+
domain := scanner.Text()
27+
fmt.Printf("Enter domain type <unixpwd/nt>:")
28+
scanner.Scan()
29+
domainType := scanner.Text()
2630
fmt.Printf("Calling NetBackup Login\n")
2731
fmt.Printf("-----------------------\n")
28-
jwt := netbackup.Login(username, password, server)
32+
jwt := netbackup.Login(username, password, domain, domainType, server)
2933
fmt.Printf("-----------------------\n")
30-
// fmt.Printf(netbackup.MappingList(jwt , "V-067223A"))
3134
fmt.Printf("Mapping List using jwt\n")
3235
fmt.Printf("-----------------------\n")
3336
netbackup.MappingList(jwt, server)

snippets/go/netbackup.go

Lines changed: 96 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fmt"
1010
"io/ioutil"
1111
"net/http"
12+
"os"
1213
)
1314

1415
// NetBackup structure to directly call raw APIs
@@ -97,9 +98,9 @@ func Ping(server string) string {
9798
}
9899

99100
//Login function
100-
func Login(username string, password string, server string) string {
101+
func Login(username string, password string, domain string, domainType string, server string) string {
101102
url := GetBaseURLString(server) + "/login"
102-
reqData := map[string]string{"userName": username, "password": password}
103+
reqData := map[string]string{"userName": username, "password": password, "domainName": domain, "domainType": domainType}
103104
reqValue, _ := json.Marshal(reqData)
104105

105106
jsonData, code, err := Post("", url, reqValue)
@@ -133,6 +134,99 @@ func MappingList(jwt string, server string) {
133134
fmt.Println(jsonData)
134135
}
135136

137+
// ImagesList API Returns list of catalog images
138+
func ImagesList(jwt string, server string) {
139+
140+
url := GetBaseURLString(server) + "/catalog/images"
141+
142+
client := getHTTPClient()
143+
req, err := http.NewRequest("GET", url, nil)
144+
if jwt != "" {
145+
req.Header.Add("Authorization", jwt)
146+
}
147+
req.Header.Add("ContentType", "application/vnd.netbackup+json; version=1.0")
148+
149+
//Adding filters in query string
150+
q := req.URL.Query()
151+
q.Add("filter", "policyType eq 'Standard'")
152+
q.Add("page[limit]", "10")
153+
req.URL.RawQuery = q.Encode()
154+
155+
var jsonData map[string]interface{}
156+
157+
response, err := client.Do(req)
158+
if err == nil {
159+
if response.StatusCode >= 200 && response.StatusCode <= 299 {
160+
data, _ := ioutil.ReadAll(response.Body)
161+
if err := json.Unmarshal(data, &jsonData); err != nil {
162+
panic(err)
163+
}
164+
}
165+
}
166+
defer response.Body.Close()
167+
168+
if err != nil {
169+
fmt.Printf("Request Failed %s \n", err)
170+
} else {
171+
if response.StatusCode != 200 {
172+
fmt.Printf("Request returned wrong code %d \n", response.StatusCode)
173+
return
174+
}
175+
}
176+
177+
b, err := json.MarshalIndent(jsonData, "", " ")
178+
if err != nil {
179+
fmt.Println("error:", err)
180+
}
181+
os.Stdout.Write(b)
182+
}
183+
184+
// JobList API Returns list of backup jobs
185+
func JobList(jwt string, server string) {
186+
url := GetBaseURLString(server) + "/admin/jobs"
187+
188+
client := getHTTPClient()
189+
req, err := http.NewRequest("GET", url, nil)
190+
if jwt != "" {
191+
req.Header.Add("Authorization", jwt)
192+
}
193+
req.Header.Add("ContentType", "application/vnd.netbackup+json; version=1.0")
194+
195+
//Adding filters in query string
196+
q := req.URL.Query()
197+
q.Add("filter", "jobType eq 'BACKUP'")
198+
q.Add("page[limit]", "10")
199+
req.URL.RawQuery = q.Encode()
200+
201+
var jsonData map[string]interface{}
202+
203+
response, err := client.Do(req)
204+
if err == nil {
205+
if response.StatusCode >= 200 && response.StatusCode <= 299 {
206+
data, _ := ioutil.ReadAll(response.Body)
207+
if err := json.Unmarshal(data, &jsonData); err != nil {
208+
panic(err)
209+
}
210+
}
211+
}
212+
defer response.Body.Close()
213+
214+
if err != nil {
215+
fmt.Printf("Request Failed %s \n", err)
216+
} else {
217+
if response.StatusCode != 200 {
218+
fmt.Printf("Request returned wrong code %d \n", response.StatusCode)
219+
return
220+
}
221+
}
222+
223+
b, err := json.MarshalIndent(jsonData, "", " ")
224+
if err != nil {
225+
fmt.Println("error:", err)
226+
}
227+
os.Stdout.Write(b)
228+
}
229+
136230
// GetBaseURLString This returns the base URL for netbackup
137231
func GetBaseURLString(server string) string {
138232
return "https://" + server + ":1556/netbackup"

0 commit comments

Comments
 (0)