File tree Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Expand file tree Collapse file tree 3 files changed +37
-5
lines changed Original file line number Diff line number Diff line change
1
+ package xml
2
+
3
+ import "bytes"
4
+
5
+ func StripEntryElement (data []byte ) []byte {
6
+ if ! bytes .HasPrefix (data , []byte ("<entry" )) || ! bytes .HasSuffix (data , []byte ("</entry>" )) {
7
+ return data
8
+ }
9
+
10
+ var startIdx , endIdx int
11
+ startIdx = bytes .Index (data , []byte (">" ))
12
+ endIdx = len (data ) - len ("</entry>" )
13
+
14
+ return data [startIdx + 1 : endIdx ]
15
+ }
Original file line number Diff line number Diff line change @@ -30,10 +30,12 @@ func RenderImports(templateTypes ...string) (string, error) {
30
30
manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/version" , "" )
31
31
case "service" :
32
32
manager .AddStandardImport ("context" , "" )
33
+ manager .AddStandardImport ("encoding/xml" , "" )
33
34
manager .AddStandardImport ("fmt" , "" )
34
35
manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/errors" , "" )
35
36
manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/util" , "" )
36
37
manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/xmlapi" , "" )
38
+ manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/xml" , "pangoxml" )
37
39
case "filtering" :
38
40
manager .AddSdkImport ("github.com/PaloAltoNetworks/pango/filtering" , "" )
39
41
case "audit" :
Original file line number Diff line number Diff line change @@ -56,12 +56,16 @@ return nil, err
56
56
57
57
{{- if .Entry}}
58
58
path, err := loc.XpathWithEntryName(vn, entry.Name)
59
+ if err != nil {
60
+ return nil, err
61
+ }
59
62
{{- else}}
60
63
path, err := loc.Xpath(vn)
64
+ if err != nil {
65
+ return nil, err
66
+ }
67
+ path = path[:len(path)-1]
61
68
{{- end}}
62
- if err != nil {
63
- return nil, err
64
- }
65
69
66
70
{{- if .Entry}}
67
71
createSpec, err := specifier(entry)
@@ -72,10 +76,21 @@ if err != nil {
72
76
return nil, err
73
77
}
74
78
79
+ data, err := xml.Marshal(createSpec)
80
+ if err != nil {
81
+ return nil, err
82
+ }
83
+
84
+ // Optionally remove top entry element from marshalled data to fullfill
85
+ // PAN-OS API requirements.
86
+ // PAN-OS behaviour change: SET operations in the XML API no longer support
87
+ // partial XPath values.
88
+ data = pangoxml.StripEntryElement(data)
89
+
75
90
cmd := &xmlapi.Config{
76
91
Action: "set",
77
- Xpath: util.AsXpath(path[:len(path)-1] ),
78
- Element: createSpec ,
92
+ Xpath: util.AsXpath(path),
93
+ Element: string(data) ,
79
94
Target: s.client.GetTarget(),
80
95
}
81
96
You can’t perform that action at this time.
0 commit comments