Skip to content

Commit 81dc1a1

Browse files
authored
Merge pull request #1664 from masco-enovance/pyton-capture
python-api: improve python capture api
2 parents f74e3cd + 95cb9c3 commit 81dc1a1

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

Diff for: contrib/python/api/skydive/captures.py

+24-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ class Capture(object):
2323
def __init__(self, uuid, query,
2424
name="", description="", count=0,
2525
extra_tcp_metric=False, ip_defrag=False,
26-
reassemble_tcp=False, layer_key_mode="L2"):
26+
reassemble_tcp=False, layer_key_mode="L2",
27+
bpf_filter="", capture_type="", raw_pkt_limit=0,
28+
port=0, header_size=0):
2729
self.uuid = uuid
2830
self.name = name
2931
self.description = description
@@ -33,6 +35,11 @@ def __init__(self, uuid, query,
3335
self.ip_defrag = ip_defrag
3436
self.reassemble_tcp = reassemble_tcp
3537
self.layer_key_mode = layer_key_mode
38+
self.bpf_filter = bpf_filter
39+
self.capture_type = capture_type
40+
self.raw_pkt_limit = raw_pkt_limit
41+
self.port = port
42+
self.header_size = header_size
3643

3744
def repr_json(self):
3845
obj = {
@@ -51,6 +58,16 @@ def repr_json(self):
5158
obj["IPDefrag"] = True
5259
if self.reassemble_tcp:
5360
obj["ReassembleTCP"] = True
61+
if self.bpf_filter:
62+
obj["BPFFilter"] = self.bpf_filter
63+
if self.capture_type:
64+
obj["Type"] = self.capture_type
65+
if self.raw_pkt_limit:
66+
obj["RawPacketLimit"] = self.raw_pkt_limit
67+
if self.header_size:
68+
obj["HeaderSize"] = self.header_size
69+
if self.port:
70+
obj["Port"] = self.port
5471
return obj
5572

5673
@classmethod
@@ -62,5 +79,10 @@ def from_object(self, obj):
6279
extra_tcp_metric=obj.get("ExtraTCPMetric"),
6380
ip_defrag=obj.get("IPDefrag"),
6481
reassemble_tcp=obj.get("ReassembleTCP"),
65-
layer_key_mode=obj.get("LayerKeyMode")
82+
layer_key_mode=obj.get("LayerKeyMode"),
83+
bpf_filter=obj.get("BPFFilter"),
84+
capture_type=obj.get("Type"),
85+
raw_pkt_limit=obj.get("RawPacketLimit"),
86+
header_size=obj.get("HeaderSize"),
87+
port=obj.get("Port")
6688
)

Diff for: contrib/python/api/skydive/rest/client.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ def lookup_edges(self, gremlin):
119119

120120
def capture_create(self, query, name="", description="",
121121
extra_tcp_metric=False, ip_defrag=False,
122-
reassemble_tcp=False, layer_key_mode="L2"):
122+
reassemble_tcp=False, layer_key_mode="L2",
123+
bpf_filter="", capture_type="", port=0,
124+
raw_pkt_limit=0, header_size=0):
123125
data = {
124126
"GremlinQuery": query,
125127
"LayerKeyMode": layer_key_mode,
@@ -135,6 +137,16 @@ def capture_create(self, query, name="", description="",
135137
data["IPDefrag"] = True
136138
if reassemble_tcp:
137139
data["ReassembleTCP"] = True
140+
if bpf_filter:
141+
data["BPFFilter"] = bpf_filter
142+
if capture_type:
143+
data["Type"] = capture_type
144+
if raw_pkt_limit:
145+
data["RawPacketLimit"] = raw_pkt_limit
146+
if header_size:
147+
data["HeaderSize"] = header_size
148+
if port:
149+
data["Port"] = port
138150

139151
c = self.request("/api/capture", method="POST", data=json.dumps(data))
140152
return Capture.from_object(c)

0 commit comments

Comments
 (0)