Skip to content

Commit 68f5330

Browse files
fix: update field validation condition (#900)
This PR updates the condition for the object_category field of the Change DataModel. Added e2e tests to cover this check.
1 parent 5af628c commit 68f5330

File tree

10 files changed

+266
-14
lines changed

10 files changed

+266
-14
lines changed

.github/workflows/build-test-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ jobs:
148148
"splunk_setup_fixture",
149149
"splunk_app_req",
150150
"splunk_app_req_broken",
151-
"splunk_cim_model_ipv6_regex",
151+
"splunk_cim_model",
152152
]
153153
steps:
154154
- uses: actions/checkout@v4

pytest_splunk_addon/CIM_Models/datamodel_definition.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2396,5 +2396,7 @@
23962396
},
23972397
},
23982398
}
2399-
2400-
datamodels["latest"] = datamodels["6.0.0"]
2399+
# No fields changes between v6.0.0 and v6.0.2
2400+
datamodels["6.0.1"] = datamodels["6.0.0"]
2401+
datamodels["6.0.2"] = datamodels["6.0.0"]
2402+
datamodels["latest"] = datamodels["6.0.2"]

pytest_splunk_addon/data_models/Change.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
},
4949
{
5050
"name": "object_category",
51-
"validity": "if((tag==\"account\" AND object_category==\"user\") OR tag!=\"account\",object_category, null())",
51+
"validity": "if((tag==\"account\" AND object_category==\"user\") OR (tag!=\"account\" AND object_category!=\"user\"),object_category, null())",
5252
"type": "required",
5353
"comment": "Generic name for the class of the updated resource object. Expected values may be specific to an app."
5454
},
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
[test_ipv6]
2-
search = sourcetype=test:ipv6
2+
search = sourcetype=test:ipv6
3+
4+
[test_change]
5+
search = sourcetype=test:change
6+
7+
[test_change_account]
8+
search = sourcetype=test:change AND change_type=account
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
11
[test:ipv6]
22
FIELDALIAS-ipAddress_as_src_ip = ipAddress AS src_ip
3+
4+
[test:change]
5+
FIELDALIAS-obj = object.name as object
6+
FIELDALIAS-obj_category = object.category as object_category
7+
FIELDALIAS-obj_attrs = object.attrs as object_attrs
8+
FIELDALIAS-obj_id = object.id as object_id
9+
FIELDALIAS-obj_path = object.path as object_path
10+
FIELDALIAS-usr = user.email as user
11+
FIELDALIAS-usr_name = user.name as user_name
12+
FIELDALIAS-usr_type = user.type as user_type
13+
EVAL-vendor_product = "PSA"

tests/e2e/addons/TA_cim_addon/default/pytest-splunk-addon-data.conf

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,17 @@ expected_event_count = 34
1313

1414
token.0.token = ##ip_address##
1515
token.0.replacementType = all
16-
token.0.replacement = list["1234::", "2001:db8::", "::1334", "::", "::1325", "2001:0db8::1:2:3456", "2001::1:2:3", "2001:db8::1:2", "::ffff:192.168.1.1", "::ffff:192.168.1.112", "::1", "2001:0db8::1:2:3", "ff02:0000:0000:0000:0000:0000:0000:0001", "fe80:0000:0000:0000:a299:9bff:fe18:50d1", "2001:0db8:1111:000a:00b0:0000:9000:0200", "2001:0db8:0000:0000:abcd:0000:0000:1234","2001:0db8:cafe:0001:0000:0000:0000:0100", "2001:0db8:cafe:0001:0000:0000:0000:0200", "1:2:3:4:5:6:7::", "fe80::a299:9bff:fe18:50d1", "::3212", "::1212", "2001:db80:1000:a000:0000:bc00:abcd:d0b0","2001::abcd", "2001:0000:0000:0000:abcd:0000:0000:1234", "2001:0000:0000:abcd:0000:0000:0000:1234", "2001:0000:abcd:0000:0000:0000:0000:1234", "2001:db8:1111:a:b0:0:9000:200", "fe80:0:0:0:a299:9bff:fe18:50d1", "0:0:0:0:0:0:0:1", "0000:0000:0000:0000:0000:0000:0000:0001","0:0:0:0:0:0:ffff:192.168.10.10", "2001:0000:0000:0000:0000:abcd:0000:1", "::ffff:192.168.10.10"]
16+
token.0.replacement = list["1234::", "2001:db8::", "::1334", "::", "::1325", "2001:0db8::1:2:3456", "2001::1:2:3", "2001:db8::1:2", "::ffff:192.168.1.1", "::ffff:192.168.1.112", "::1", "2001:0db8::1:2:3", "ff02:0000:0000:0000:0000:0000:0000:0001", "fe80:0000:0000:0000:a299:9bff:fe18:50d1", "2001:0db8:1111:000a:00b0:0000:9000:0200", "2001:0db8:0000:0000:abcd:0000:0000:1234","2001:0db8:cafe:0001:0000:0000:0000:0100", "2001:0db8:cafe:0001:0000:0000:0000:0200", "1:2:3:4:5:6:7::", "fe80::a299:9bff:fe18:50d1", "::3212", "::1212", "2001:db80:1000:a000:0000:bc00:abcd:d0b0","2001::abcd", "2001:0000:0000:0000:abcd:0000:0000:1234", "2001:0000:0000:abcd:0000:0000:0000:1234", "2001:0000:abcd:0000:0000:0000:0000:1234", "2001:db8:1111:a:b0:0:9000:200", "fe80:0:0:0:a299:9bff:fe18:50d1", "0:0:0:0:0:0:0:1", "0000:0000:0000:0000:0000:0000:0000:0001","0:0:0:0:0:0:ffff:192.168.10.10", "2001:0000:0000:0000:0000:abcd:0000:1", "::ffff:192.168.10.10"]
17+
18+
[test_change.xml]
19+
interval = 30
20+
latest = now
21+
sourcetype = test:change
22+
source = psa
23+
maxIntervalsBeforeFlush = 1
24+
input_type = modinput
25+
host_type = plugin
26+
sourcetype_to_search = test:change
27+
timestamp_type = plugin
28+
expected_event_count = 3
29+
requirement_test_sample = 1
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
[eventtype=test_ipv6]
22
network = enabled
3-
communicate = enabled
3+
communicate = enabled
4+
5+
[eventtype=test_change]
6+
change = enabled
7+
8+
[eventtype=test_change_account]
9+
change = enabled
10+
account = enabled
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<device>
3+
<vendor>Splunk</vendor>
4+
<product>PSA</product>
5+
<version id="unknown" />
6+
<event code="" name="" format="">
7+
<transport type="modinput" sourcetype="test:change" source="test_data" host="so1" />
8+
<source>
9+
<jira id="" />
10+
<comment>lab</comment>
11+
</source>
12+
<raw><![CDATA[{"action":"created","change_type":"resources","command":"test_command","dest":"dest-object","dvc":"object-dvc","object":{"name":"object1","attrs":"attr1","category":"Eventhub","id":"test_id","path":"/dummy/path"},"result":"BadRequest","src":"1.1.1.1","status":"failure","user":{"email":"user1@abc.com","name":"user1","type":"Admin"},"timestamp":"2025-02-12T12:00:00Z"}]]></raw>
13+
<cim>
14+
<models>
15+
<model>Change</model>
16+
</models>
17+
<cim_fields>
18+
<field name="action" value="created" />
19+
<field name="change_type" value="resources" />
20+
<field name="command" value="test_command" />
21+
<field name="dest" value="dest-object" />
22+
<field name="dvc" value="object-dvc" />
23+
<field name="object" value="object1" />
24+
<field name="object_attrs" value="attr1" />
25+
<field name="object_category" value="Eventhub" />
26+
<field name="object_id" value="test_id" />
27+
<field name="object_path" value="/dummy/path" />
28+
<field name="result" value="BadRequest" />
29+
<field name="src" value="1.1.1.1" />
30+
<field name="status" value="failure" />
31+
<field name="user" value="user1@abc.com" />
32+
<field name="user_name" value="user1" />
33+
<field name="user_type" value="Admin" />
34+
<field name="vendor_product" value="PSA" />
35+
</cim_fields>
36+
<missing_recommended_fields />
37+
</cim>
38+
</event>
39+
<event code="" name="" format="">
40+
<transport type="modinput" sourcetype="test:change" source="test_data" host="so1" />
41+
<source>
42+
<jira id="" />
43+
<comment>lab</comment>
44+
</source>
45+
<raw><![CDATA[{"action":"created","change_type":"resources","command":"test_command","dest":"dest-object","dvc":"object-dvc","object":{"name":"object1","attrs":"attr1","category":"user","id":"test_id","path":"/dummy/path"},"result":"BadRequest","src":"1.1.1.1","status":"failure","user":{"email":"user1@abc.com","name":"user1","type":"Admin"},"timestamp":"2025-02-12T12:00:00Z"}]]></raw>
46+
<cim>
47+
<models>
48+
<model>Change</model>
49+
</models>
50+
<cim_fields>
51+
<field name="action" value="created" />
52+
<field name="change_type" value="resources" />
53+
<field name="command" value="test_command" />
54+
<field name="dest" value="dest-object" />
55+
<field name="dvc" value="object-dvc" />
56+
<field name="object" value="object1" />
57+
<field name="object_attrs" value="attr1" />
58+
<field name="object_category" value="user" />
59+
<field name="object_id" value="test_id" />
60+
<field name="object_path" value="/dummy/path" />
61+
<field name="result" value="BadRequest" />
62+
<field name="src" value="1.1.1.1" />
63+
<field name="status" value="failure" />
64+
<field name="user" value="user1@abc.com" />
65+
<field name="user_name" value="user1" />
66+
<field name="user_type" value="Admin" />
67+
<field name="vendor_product" value="PSA" />
68+
</cim_fields>
69+
<missing_recommended_fields />
70+
</cim>
71+
</event>
72+
<event code="" name="" format="">
73+
<transport type="modinput" sourcetype="test:change" source="test_data" host="so1" />
74+
<source>
75+
<jira id="" />
76+
<comment>lab</comment>
77+
</source>
78+
<raw><![CDATA[{"action":"created","change_type":"account","command":"test_command","dest":"dest-object","dvc":"object-dvc","object":{"name":"object1","attrs":"attr1","category":"user","id":"test_id","path":"/dummy/path"},"src":"1.1.1.1","status":"success","user":{"email":"user1@abc.com","name":"user1","type":"Admin"},"timestamp":"2025-02-12T12:00:00Z"}]]></raw>
79+
<cim>
80+
<models>
81+
<model>Change:Account_Management</model>
82+
</models>
83+
<cim_fields>
84+
<field name="action" value="created" />
85+
<field name="change_type" value="account" />
86+
<field name="command" value="test_command" />
87+
<field name="dest" value="dest-object" />
88+
<field name="dvc" value="object-dvc" />
89+
<field name="object" value="object1" />
90+
<field name="object_attrs" value="attr1" />
91+
<field name="object_category" value="user" />
92+
<field name="object_id" value="test_id" />
93+
<field name="object_path" value="/dummy/path" />
94+
<field name="src" value="1.1.1.1" />
95+
<field name="status" value="success" />
96+
<field name="user" value="user1@abc.com" />
97+
<field name="user_name" value="user1" />
98+
<field name="user_type" value="Admin" />
99+
<field name="vendor_product" value="PSA" />
100+
</cim_fields>
101+
<missing_recommended_fields>
102+
<field>result</field>
103+
<field>src_user</field>
104+
</missing_recommended_fields>
105+
</cim>
106+
</event>
107+
</device>

0 commit comments

Comments
 (0)