|
16 | 16 | package marshal |
17 | 17 |
|
18 | 18 | import ( |
19 | | - "log" |
| 19 | + "bufio" |
20 | 20 | "strings" |
21 | 21 |
|
22 | | - "github.com/PuerkitoBio/goquery" |
23 | 22 | "github.com/ercole-io/ercole-agent/model" |
24 | 23 | ) |
25 | 24 |
|
26 | 25 | // Database returns information about database extracted |
27 | 26 | // from the db fetcher command output. |
28 | 27 | func Database(cmdOutput []byte) model.Database { |
29 | | - |
30 | | - doc, err := goquery.NewDocumentFromReader(strings.NewReader(string(cmdOutput))) |
31 | | - |
32 | | - if err != nil { |
33 | | - log.Fatal(err) |
34 | | - } |
35 | | - |
36 | 28 | var db model.Database |
37 | | - |
38 | | - doc.Find("tr").Each(func(r int, row *goquery.Selection) { // there should be only one |
39 | | - |
40 | | - sel := row.Find("td") |
41 | | - |
42 | | - for i := range sel.Nodes { |
43 | | - single := sel.Eq(i) |
44 | | - value := cleanTr(single.Text()) |
45 | | - if i == 0 { |
46 | | - db.Name = value |
47 | | - } |
48 | | - if i == 1 { |
49 | | - db.UniqueName = value |
50 | | - } |
51 | | - if i == 2 { |
52 | | - db.InstanceNumber = value |
53 | | - } |
54 | | - if i == 3 { |
55 | | - db.Status = value |
56 | | - } |
57 | | - if i == 4 { |
58 | | - db.Version = value |
59 | | - } |
60 | | - if i == 5 { |
61 | | - db.Platform = value |
62 | | - } |
63 | | - if i == 6 { |
64 | | - db.Archivelog = value |
65 | | - } |
66 | | - if i == 7 { |
67 | | - db.Charset = value |
68 | | - } |
69 | | - if i == 8 { |
70 | | - db.NCharset = value |
71 | | - } |
72 | | - if i == 9 { |
73 | | - db.BlockSize = value |
74 | | - } |
75 | | - if i == 10 { |
76 | | - db.CPUCount = value |
77 | | - } |
78 | | - if i == 11 { |
79 | | - db.SGATarget = value |
80 | | - } |
81 | | - if i == 12 { |
82 | | - db.PGATarget = value |
83 | | - } |
84 | | - if i == 13 { |
85 | | - db.MemoryTarget = value |
86 | | - } |
87 | | - if i == 14 { |
88 | | - db.SGAMaxSize = value |
89 | | - } |
90 | | - if i == 15 { |
91 | | - db.SegmentsSize = value |
92 | | - } |
93 | | - if i == 16 { |
94 | | - db.Used = value |
95 | | - } |
96 | | - if i == 17 { |
97 | | - db.Allocated = value |
98 | | - } |
99 | | - if i == 18 { |
100 | | - db.Elapsed = value |
101 | | - } |
102 | | - if i == 19 { |
103 | | - db.DBTime = value |
104 | | - } |
105 | | - if i == 20 { |
106 | | - db.Work = value |
107 | | - } |
108 | | - if i == 21 { |
109 | | - db.ASM = parseBool(value) |
110 | | - } |
111 | | - if i == 22 { |
112 | | - db.Dataguard = parseBool(value) |
113 | | - } |
| 29 | + scanner := bufio.NewScanner(strings.NewReader(string(cmdOutput))) |
| 30 | + |
| 31 | + for scanner.Scan() { |
| 32 | + line := scanner.Text() |
| 33 | + splitted := strings.Split(line, "|||") |
| 34 | + if len(splitted) == 23 { |
| 35 | + db.Name = strings.TrimSpace(splitted[0]) |
| 36 | + db.UniqueName = strings.TrimSpace(splitted[1]) |
| 37 | + db.InstanceNumber = strings.TrimSpace(splitted[2]) |
| 38 | + db.Status = strings.TrimSpace(splitted[3]) |
| 39 | + db.Version = strings.TrimSpace(splitted[4]) |
| 40 | + db.Platform = strings.TrimSpace(splitted[5]) |
| 41 | + db.Archivelog = strings.TrimSpace(splitted[6]) |
| 42 | + db.Charset = strings.TrimSpace(splitted[7]) |
| 43 | + db.NCharset = strings.TrimSpace(splitted[8]) |
| 44 | + db.BlockSize = strings.TrimSpace(splitted[9]) |
| 45 | + db.CPUCount = strings.TrimSpace(splitted[10]) |
| 46 | + db.SGATarget = strings.TrimSpace(splitted[11]) |
| 47 | + db.PGATarget = strings.TrimSpace(splitted[12]) |
| 48 | + db.MemoryTarget = strings.TrimSpace(splitted[13]) |
| 49 | + db.SGAMaxSize = strings.TrimSpace(splitted[14]) |
| 50 | + db.SegmentsSize = strings.TrimSpace(splitted[15]) |
| 51 | + db.Used = strings.TrimSpace(splitted[16]) |
| 52 | + db.Allocated = strings.TrimSpace(splitted[17]) |
| 53 | + db.Elapsed = strings.TrimSpace(splitted[18]) |
| 54 | + db.DBTime = strings.TrimSpace(splitted[19]) |
| 55 | + db.Work = strings.TrimSpace(splitted[20]) |
| 56 | + db.ASM = parseBool(strings.TrimSpace(splitted[21])) |
| 57 | + db.Dataguard = parseBool(strings.TrimSpace(splitted[22])) |
114 | 58 | } |
115 | | - |
116 | | - }) |
117 | | - |
| 59 | + } |
118 | 60 | return db |
119 | 61 | } |
0 commit comments