From 6b12a06f2210e09ec9be16437299aadef20580f5 Mon Sep 17 00:00:00 2001 From: Jimmy Maple <38733055+jimmyatSplunk@users.noreply.github.com> Date: Wed, 10 Feb 2021 17:39:32 -0500 Subject: [PATCH] Update to 3.0.2 Configured the bigfix:available:fixlets for JSON output. --- README/inputs.conf.spec | 14 +- app.manifest | 2 +- appserver/static/js/build/globalConfig.json | 130 +++++++++--------- bin/TA_bigfix_rh_bigfix_available_fixlets.py | 28 ++-- bin/TA_bigfix_rh_bigfix_clients.py | 24 ++-- bin/input_module_bigfix_actions.py | 11 +- bin/input_module_bigfix_available_fixlets.py | 2 +- .../lib2to3/Grammar2.7.17.final.0.pickle | Bin 0 -> 40486 bytes .../PatternGrammar2.7.17.final.0.pickle | Bin 0 -> 2799 bytes default/app.conf | 5 +- default/data/ui/nav/default.xml | 3 +- default/inputs.conf | 17 +-- default/restmap.conf | 15 +- default/web.conf | 17 +-- 14 files changed, 136 insertions(+), 132 deletions(-) create mode 100644 bin/ta_bigfix/aob_py2/lib2to3/Grammar2.7.17.final.0.pickle create mode 100644 bin/ta_bigfix/aob_py2/lib2to3/PatternGrammar2.7.17.final.0.pickle diff --git a/README/inputs.conf.spec b/README/inputs.conf.spec index 13ce081..1ce4369 100644 --- a/README/inputs.conf.spec +++ b/README/inputs.conf.spec @@ -13,12 +13,6 @@ global_account = mac_address_property = Name of property which captures the MAC address of the host. See documentation for property relevance if a property is not available. set_batch_value = Number of batches to use for ingestion. NOTE: This number should be very large in very large environments. -[bigfix_available_fixlets://] -global_account = -site_name = Name of the site to collect from -fixlet_types = Select which types of fixlets to ingest. -set_batch_value = Number of batches to use for ingestion. NOTE: This number should be very large in very large environments. - [bigfix_relevant_fixlets://] global_account = site_name = Name of the site to extract relevant fixlets from. @@ -28,4 +22,10 @@ set_batch_value = Number of batches to use for ingestion. NOTE: This number shou global_account = [bigfix_users://] -global_account = \ No newline at end of file +global_account = + +[bigfix_available_fixlets://] +global_account = +site_name = Name of the site to collect from +fixlet_types = Select which types of fixlets to ingest. +set_batch_value = Number of batches to use for ingestion. NOTE: This number should be very large in very large environments. \ No newline at end of file diff --git a/app.manifest b/app.manifest index 570ed85..bc5bf0e 100644 --- a/app.manifest +++ b/app.manifest @@ -5,7 +5,7 @@ "id": { "group": null, "name": "TA-bigfix", - "version": "3.0.0" + "version": "3.0.2" }, "author": [ { diff --git a/appserver/static/js/build/globalConfig.json b/appserver/static/js/build/globalConfig.json index 8b8aba2..55779af 100644 --- a/appserver/static/js/build/globalConfig.json +++ b/appserver/static/js/build/globalConfig.json @@ -2,7 +2,7 @@ "meta": { "name": "TA-bigfix", "displayName": "BigFix TA", - "version": "3.0.0", + "version": "3.0.1", "apiVersion": "3.0.0", "restRoot": "TA_bigfix" }, @@ -555,8 +555,8 @@ ] }, { - "name": "bigfix_available_fixlets", - "title": "BigFix Available Fixlets", + "name": "bigfix_relevant_fixlets", + "title": "BigFix Relevant Fixlets", "entity": [ { "field": "name", @@ -625,7 +625,7 @@ { "field": "site_name", "label": "Site Name", - "help": "Name of the site to collect from", + "help": "Name of the site to extract relevant fixlets from.", "required": true, "type": "text", "validators": [ @@ -637,36 +637,13 @@ } ] }, - { - "field": "fixlet_types", - "label": "Fixlet Types", - "help": "Select which types of fixlets to ingest.", - "required": true, - "type": "multipleSelect", - "options": { - "delimiter": "~", - "items": [ - { - "value": "Fixlet", - "label": "Fixlet" - }, - { - "value": "Task", - "label": "Task" - }, - { - "value": "Analysis", - "label": "Analysis" - } - ] - } - }, { "field": "set_batch_value", "label": "Set Batch Value", "help": "Number of batches to use for ingestion. NOTE: This number should be very large in very large environments.", "required": true, "type": "text", + "defaultValue": "1", "validators": [ { "type": "string", @@ -679,8 +656,8 @@ ] }, { - "name": "bigfix_relevant_fixlets", - "title": "BigFix Relevant Fixlets", + "name": "bigfix_infrastructure", + "title": "BigFix Infrastructure", "entity": [ { "field": "name", @@ -745,43 +722,12 @@ "options": { "referenceName": "account" } - }, - { - "field": "site_name", - "label": "Site Name", - "help": "Name of the site to extract relevant fixlets from.", - "required": true, - "type": "text", - "validators": [ - { - "type": "string", - "minLength": 0, - "maxLength": 8192, - "errorMsg": "Max length of text input is 8192" - } - ] - }, - { - "field": "set_batch_value", - "label": "Set Batch Value", - "help": "Number of batches to use for ingestion. NOTE: This number should be very large in very large environments.", - "required": true, - "type": "text", - "defaultValue": "1", - "validators": [ - { - "type": "string", - "minLength": 0, - "maxLength": 8192, - "errorMsg": "Max length of text input is 8192" - } - ] } ] }, { - "name": "bigfix_infrastructure", - "title": "BigFix Infrastructure", + "name": "bigfix_users", + "title": "BigFix Users", "entity": [ { "field": "name", @@ -850,8 +796,8 @@ ] }, { - "name": "bigfix_users", - "title": "BigFix Users", + "name": "bigfix_available_fixlets", + "title": "BigFix Available Fixlets", "entity": [ { "field": "name", @@ -916,6 +862,60 @@ "options": { "referenceName": "account" } + }, + { + "field": "site_name", + "label": "Site Name", + "help": "Name of the site to collect from", + "required": true, + "type": "text", + "validators": [ + { + "type": "string", + "minLength": 0, + "maxLength": 8192, + "errorMsg": "Max length of text input is 8192" + } + ] + }, + { + "field": "fixlet_types", + "label": "Fixlet Types", + "help": "Select which types of fixlets to ingest.", + "required": true, + "type": "multipleSelect", + "options": { + "delimiter": "~", + "items": [ + { + "value": "Fixlet", + "label": "Fixlet" + }, + { + "value": "Task", + "label": "Task" + }, + { + "value": "Analysis", + "label": "Analysis" + } + ] + } + }, + { + "field": "set_batch_value", + "label": "Set Batch Value", + "help": "Number of batches to use for ingestion. NOTE: This number should be very large in very large environments.", + "required": true, + "type": "text", + "validators": [ + { + "type": "string", + "minLength": 0, + "maxLength": 8192, + "errorMsg": "Max length of text input is 8192" + } + ] } ] } diff --git a/bin/TA_bigfix_rh_bigfix_available_fixlets.py b/bin/TA_bigfix_rh_bigfix_available_fixlets.py index 57b086e..07ddcd1 100755 --- a/bin/TA_bigfix_rh_bigfix_available_fixlets.py +++ b/bin/TA_bigfix_rh_bigfix_available_fixlets.py @@ -20,53 +20,53 @@ encrypted=False, default=None, validator=validator.Pattern( - regex=r"""^\-[1-9]\d*$|^\d*$""", + regex=r"""^\-[1-9]\d*$|^\d*$""", ) - ), + ), field.RestField( 'index', required=True, encrypted=False, default='default', validator=validator.String( - min_len=1, - max_len=80, + min_len=1, + max_len=80, ) - ), + ), field.RestField( 'global_account', required=True, encrypted=False, default=None, validator=None - ), + ), field.RestField( 'site_name', required=True, encrypted=False, default=None, validator=validator.String( - min_len=0, - max_len=8192, + min_len=0, + max_len=8192, ) - ), + ), field.RestField( 'fixlet_types', required=True, encrypted=False, default=None, validator=None - ), + ), field.RestField( 'set_batch_value', required=True, encrypted=False, - default='1', + default=None, validator=validator.String( - min_len=0, - max_len=8192, + min_len=0, + max_len=8192, ) - ), + ), field.RestField( 'disabled', diff --git a/bin/TA_bigfix_rh_bigfix_clients.py b/bin/TA_bigfix_rh_bigfix_clients.py index dc46987..a95bb72 100755 --- a/bin/TA_bigfix_rh_bigfix_clients.py +++ b/bin/TA_bigfix_rh_bigfix_clients.py @@ -20,46 +20,46 @@ encrypted=False, default=None, validator=validator.Pattern( - regex=r"""^\-[1-9]\d*$|^\d*$""", + regex=r"""^\-[1-9]\d*$|^\d*$""", ) - ), + ), field.RestField( 'index', required=True, encrypted=False, default='default', validator=validator.String( - min_len=1, - max_len=80, + min_len=1, + max_len=80, ) - ), + ), field.RestField( 'global_account', required=True, encrypted=False, default=None, validator=None - ), + ), field.RestField( 'mac_address_property', required=True, encrypted=False, default=None, validator=validator.String( - min_len=0, - max_len=8192, + min_len=0, + max_len=8192, ) - ), + ), field.RestField( 'set_batch_value', required=True, encrypted=False, - default='1', + default=None, validator=validator.String( min_len=0, - max_len=8192, + max_len=8192, ) - ), + ), field.RestField( 'disabled', diff --git a/bin/input_module_bigfix_actions.py b/bin/input_module_bigfix_actions.py index 7c5423c..59bc6ec 100755 --- a/bin/input_module_bigfix_actions.py +++ b/bin/input_module_bigfix_actions.py @@ -13,7 +13,7 @@ def validate_input(helper, definition): # This example accesses the modular input variable # global_account = definition.parameters.get('global_account', None) pass - + def collect_events(helper, ew): opt_root_url = helper.get_global_setting('bigfix_server_url') sourcee= helper.get_input_stanza_names() @@ -27,11 +27,11 @@ def collect_events(helper, ew): account = opt_global_account["username"] + ":" + opt_global_account["password"] base64string = base64.b64encode(account.encode()).decode() headers = { 'Authorization' : 'Basic %s' % base64string } - + opt_url_start=opt_root_url + ":" + opt_rest_api_port + "/api/query?output=json&relevance=" - query='%28%22nt_host%3D%22+%26+item+0+of+it%2C+%22client_id%3D%22+%26+item+12+of+it%2C+%22status%3D%22+%26+item+1+of+it%2C+%22issuer%3D%22+%26+item+2+of+it%2C+%22issue_time%3D%22+%26+item+3+of+it%2C+%22end_time%3D%22+%26+item+4+of+it%2C+%22start_time%3D%22+%26+item+5+of+it%2C+%22action_id%3D%22+%26+item+6+of+it%2C+%22action_name%3D%22+%26+item+7+of+it%2C+%22reapply%3D%22+%26+item+8+of+it%2C+%22restart_required%3D%22+%26+item+9+of+it%2C+%22stopper%3D%22+%26+item+10+of+it%2C+%22time_stopped%3D%22+%26+item+11+of+it%29+of+%28name+of+computers+of+item+0+of+it+as+string%2C+status+of+item+0+of+it+as+string%2C+name+of+issuer+of+item+1+of+it+as+string%2C+time+issued+of+item+1+of+it+as+string%2C+%28if+%28exists+end+date+of+item+1+of+it%29+then+end+date+of+item+1+of+it+as+string+%26+%22+%22+%26+end+time_of_day+of+item+1+of+it+as+string+else+%22%22%29%2C+%28if+%28exists+start+date+of+item+1+of+it%29+then+start+date+of+item+1+of+it+as+string+%26+%22+%22+%26+start+time_of_day+of+item+1+of+it+as+string+else+%22%22%29%2C+id+of+item+1+of+it+as+string%2C+%28concatenation+%22%252527%22+of+%28substrings+separated+by+%22%252522%22+of+name+of+item+1+of+it+as+string%29%29%2C+reapply+flag+of+item+1+of+it+as+string%2C+restart+flag+of+item+1+of+it+as+string%2C+%28if+%28exists+stopper+of+item+1+of+it%29+then+name+of+stopper+of+item+1+of+it+as+string+else+%22%22%29%2C+%28if+%28exists+time+stopped+of+item+1+of+it%29+then+time+stopped+of+item+1+of+it+as+string+else+%22%22%29%2C+%28id+of+computers+of+item+0+of+it+as+string%29%29+of+%28results+of+it%2C+it%29+of+%28bes+actions+whose+%28id+of+computers+of+results+of+it+mod+SETS%3DRESULT%29%29'.replace("SETS", opt_sets) - + query='%28%22nt_host%3D%22+%26+item+0+of+it%2C+%22client_id%3D%22+%26+item+12+of+it%2C+%22status%3D%22+%26+item+1+of+it%2C+%22issuer%3D%22+%26+item+2+of+it%2C+%22issue_time%3D%22+%26+item+3+of+it%2C+%22end_time%3D%22+%26+item+4+of+it%2C+%22start_time%3D%22+%26+item+5+of+it%2C+%22action_id%3D%22+%26+item+6+of+it%2C+%22action_name%3D%22+%26+item+7+of+it%2C+%22reapply%3D%22+%26+item+8+of+it%2C+%22restart_required%3D%22+%26+item+9+of+it%2C+%22stopper%3D%22+%26+item+10+of+it%2C+%22time_stopped%3D%22+%26+item+11+of+it%29+of+%28name+of+computers+of+item+0+of+it+as+string%2C+status+of+item+0+of+it+as+string%2C+name+of+issuer+of+item+1+of+it+as+string%2C+time+issued+of+item+1+of+it+as+string%2C+%28if+%28exists+end+date+of+item+1+of+it%29+then+end+date+of+item+1+of+it+as+string+%26+%22+%22+%26+end+time_of_day+of+item+1+of+it+as+string+else+%22%22%29%2C+%28if+%28exists+start+date+of+item+1+of+it%29+then+start+date+of+item+1+of+it+as+string+%26+%22+%22+%26+start+time_of_day+of+item+1+of+it+as+string+else+%22%22%29%2C+id+of+item+1+of+it+as+string%2C+%28concatenation+%22%252527%22+of+%28substrings+separated+by+%22%252522%22+of+name+of+item+1+of+it+as+string%29%29%2C+reapply+flag+of+item+1+of+it+as+string%2C+restart+flag+of+item+1+of+it+as+string%2C+%28if+%28exists+stopper+of+item+1+of+it%29+then+name+of+stopper+of+item+1+of+it+as+string+else+%22%22%29%2C+%28if+%28exists+time+stopped+of+item+1+of+it%29+then+time+stopped+of+item+1+of+it+as+string+else+%22%22%29%2C+%28it+mod+SETS+%3D+RESULT+of+it%29+of+id+of+computers+of+item+0+of+it+as+string%29+of+%28results+of+it%2C+it%29+of+%28bes+actions%29'.replace("SETS", opt_sets) + urlb=opt_url_start + query helper.log_info("Beginning job="+sourcee) @@ -57,7 +57,7 @@ def collect_events(helper, ew): helper.log_error("job="+sourcee+" Response for MOD loop="+str(x)+" code="+str(response.status_code)) if y == 99: helper.log_error("job="+sourcee+" Total Failure. Exiting " + response.text ) - return + return helper.log_error("job="+sourcee+" Sleeping for 1 minute and retry="+str(y)) time.sleep(30) helper.log_info("job="+sourcee+" Response for MOD loop="+str(x)+" code="+str(response.status_code)) @@ -78,3 +78,4 @@ def collect_events(helper, ew): ew.write_event(event) helper.log_info("job="+sourcee+" Ending MOD loop="+str(x)) helper.log_info("Ending job="+sourcee) + diff --git a/bin/input_module_bigfix_available_fixlets.py b/bin/input_module_bigfix_available_fixlets.py index feb4179..c329656 100755 --- a/bin/input_module_bigfix_available_fixlets.py +++ b/bin/input_module_bigfix_available_fixlets.py @@ -86,7 +86,7 @@ def collect_events(helper, ew): for value in item: output.append(value.replace("=","\": \"",1)+"\"") eventitem=space.join(output) - j_convert=eventitem + j_convert="{ \"" + eventitem + " }" event = helper.new_event(source=s, index=helper.get_output_index(), sourcetype=helper.get_sourcetype(), data=j_convert) ew.write_event(event) helper.log_info("job="+sourcee+" Ending MOD loop="+str(x)) diff --git a/bin/ta_bigfix/aob_py2/lib2to3/Grammar2.7.17.final.0.pickle b/bin/ta_bigfix/aob_py2/lib2to3/Grammar2.7.17.final.0.pickle new file mode 100644 index 0000000000000000000000000000000000000000..705bcfd306f4e9c97420da56df8ff21224e1cf8c GIT binary patch literal 40486 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 G-~R*IKGTT+ literal 0 HcmV?d00001 diff --git a/bin/ta_bigfix/aob_py2/lib2to3/PatternGrammar2.7.17.final.0.pickle b/bin/ta_bigfix/aob_py2/lib2to3/PatternGrammar2.7.17.final.0.pickle new file mode 100644 index 0000000000000000000000000000000000000000..b42689c21f48cf6f31769ac6fa69b841931a7b43 GIT binary patch literal 2799 zcmY*a1$b0P5I)Ualz2jd>*5gHE$DCo4j%r1OY$Hg$sN0QK&evU)!kjGySp2ulu}CF z-QE44-Mf60?_>Ahe`aUq&F%cz=4)t3w6;18spdpHnKNHCI?8FRZEi^ANRKVO!j?W^ z1sd1IlG5JRbc>Ws9o zba8aruDH`JleT*%ZI4Xao|&}0+SB%q%08~_i@-ued`R05A^KAe2OWUV8Yl=~=E^}P z&tQ{h2%Lsy@(j!5smbISp2;(!J&m&fN?aZy&O@gW zB7!~#Tv-SI`A8LXtaAK7OYFC1H+{z`!ZWDHy?=XE246xD_6na z7Lg#buSWJYf(kkPS}Ni#M#Wq}J)9a$_Zkt@p%SiV9pHLFrJSIN%GkddjvHV_Z7s02 z8n(@3k0X9U$A{NO!5ILgKo0$UR8%HinF6;-M6yuOW?a~!eR3?6nO+@_>nBhp z`=1DSQo4YXO#!E%fNWQuY6>_F*G@+S_?`jZGtu z9hKL>^;%(NwZ`h5)}*}7me&jNSiu>Q1&f!<8(euK#-q-aH<1VH%@o3V3uR-ymAp+m zTzMO@`F8SSy#p^2+nx9&u-%1u#&$OqW4(t;vEEB%SntCmV7s5fSRbH5tPfHF)`zGH z>%-*3`UvG=eUz%PK1StOAIFQs_5|f%ebPbUPYEkOzNxL=Q8me}ZS{#(`80p%Gw9m0 zEL>J75=%8SIZEz?_j4>TR_@f+l%wLYRP$y>?gITh3xJh(0G*V(!N0%*YlUi^RIC}D z*#qiD9yu$w&RHKzIgM7lIVJakeu-zn3P+ud4tOQ^fqR*sqZQCT`}t>iB`RM9|C+FZ z$y7|GRpUzk_Fq*?1QZ^g4f4s zQT)V+;-{cLOH-d4>I>XJoG-asU*X2rM&iCfuy4~6_nmS1o?U)`%a2B#euB%-r~>(Z z0sPgd({F&k;{rzc53b@*T=>hV&)+cplUAR9^~foY*W=NTUU`8WTltt^8B%_rn5_cX z%mAn$+c>hy0)lhM5CK<(f#96Y1Z$JZVFE6>*oCd~c+(=J^4W)VNEI+*DN-GP;9STA zw?h>HAzm>PEK91y5T)3RIH@wWu|BDCAl$BCf>laY0^xSYc8@A1;8Kkp)pX*G{|36M zGyAXzsVj#90{jnLXQUi<){sWC|5EHtIgMpB32oo$_YN#QGVN2Iv!!}+2a7HX+Y6K%)|41NY z8^r|cnHmj*h-0v&f7G#T(?yOmUI;KA$iY8bO<+eW&&+O(mLN3|9EMm;VwKv6XhD_kPlB|rTwMwL_@NdB1lY_!z^-kNqnhHzn_KJ140;1Jb^Jy0AR z7U{!Itq*FkKJ10?z+&mcKFAFYOY~tsbcTyric?fA!wS=KHd$GzM2izosuehK6)Tyw z)hgcbgZbcSYm7gEz^gU(Q3>!Gjr|k?UaN74{J=4d!_)z|UgK;E05@oyLzTdd8s||d zu%mGS6#=i)xR45g*K1r%xxh^tmr@>Zv&LnV54=I+aw-RI(YT6=fm=1MrZWEQHXNcV Nj+IXdecFh1@PB?A60ZON literal 0 HcmV?d00001 diff --git a/default/app.conf b/default/app.conf index 9cb312f..32ce11e 100644 --- a/default/app.conf +++ b/default/app.conf @@ -3,11 +3,12 @@ state_change_requires_restart = true is_configured = 0 state = enabled -build = 1 +build = 3 +install_source_checksum = 24e87538278b5729b1afc88c5c8c181a25233ee7 [launcher] author = Jimmy Maple -version = 3.0.1 +version = 3.0.2 description = Technical add-on for ingesting data from HCL BigFix into Splunk [ui] diff --git a/default/data/ui/nav/default.xml b/default/data/ui/nav/default.xml index be22fa7..6d95d8b 100644 --- a/default/data/ui/nav/default.xml +++ b/default/data/ui/nav/default.xml @@ -1,6 +1,5 @@

+ \ No newline at end of file diff --git a/default/inputs.conf b/default/inputs.conf index eb18c44..9c08c47 100644 --- a/default/inputs.conf +++ b/default/inputs.conf @@ -22,14 +22,6 @@ interval = 30 set_batch_value = 1 disabled = 0 -[bigfix_available_fixlets] -start_by_shell = false -python.version = python3 -sourcetype = bigfix:fixlets:available -interval = 30 -fixlet_types = [] -disabled = 0 - [bigfix_relevant_fixlets] start_by_shell = false python.version = python3 @@ -51,3 +43,12 @@ python.version = python3 sourcetype = bigfix:users interval = 30 disabled = 0 + +[bigfix_available_fixlets] +start_by_shell = false +python.version = python3 +sourcetype = bigfix:fixlets:available +interval = 30 +fixlet_types = [] +disabled = 0 + diff --git a/default/restmap.conf b/default/restmap.conf index df8e4e3..acdf07f 100644 --- a/default/restmap.conf +++ b/default/restmap.conf @@ -1,7 +1,7 @@ [admin:TA_bigfix] match = / -members = TA_bigfix_account, TA_bigfix_settings, TA_bigfix_bigfix_actions, TA_bigfix_bigfix_analysis, TA_bigfix_bigfix_clients, TA_bigfix_bigfix_available_fixlets, TA_bigfix_bigfix_relevant_fixlets, TA_bigfix_bigfix_infrastructure, TA_bigfix_bigfix_users +members = TA_bigfix_account, TA_bigfix_settings, TA_bigfix_bigfix_actions, TA_bigfix_bigfix_analysis, TA_bigfix_bigfix_clients, TA_bigfix_bigfix_relevant_fixlets, TA_bigfix_bigfix_infrastructure, TA_bigfix_bigfix_users, TA_bigfix_bigfix_available_fixlets [admin_external:TA_bigfix_account] handlertype = python @@ -33,12 +33,6 @@ handlerfile = TA_bigfix_rh_bigfix_clients.py handleractions = edit, list, remove, create python.version = python3 -[admin_external:TA_bigfix_bigfix_available_fixlets] -handlertype = python -handlerfile = TA_bigfix_rh_bigfix_available_fixlets.py -handleractions = edit, list, remove, create -python.version = python3 - [admin_external:TA_bigfix_bigfix_relevant_fixlets] handlertype = python handlerfile = TA_bigfix_rh_bigfix_relevant_fixlets.py @@ -56,3 +50,10 @@ handlertype = python handlerfile = TA_bigfix_rh_bigfix_users.py handleractions = edit, list, remove, create python.version = python3 + +[admin_external:TA_bigfix_bigfix_available_fixlets] +handlertype = python +handlerfile = TA_bigfix_rh_bigfix_available_fixlets.py +handleractions = edit, list, remove, create +python.version = python3 + diff --git a/default/web.conf b/default/web.conf index 7357218..6a6d419 100644 --- a/default/web.conf +++ b/default/web.conf @@ -39,14 +39,6 @@ methods = POST, GET pattern = TA_bigfix_bigfix_clients/* methods = POST, GET, DELETE -[expose:TA_bigfix_bigfix_available_fixlets] -pattern = TA_bigfix_bigfix_available_fixlets -methods = POST, GET - -[expose:TA_bigfix_bigfix_available_fixlets_specified] -pattern = TA_bigfix_bigfix_available_fixlets/* -methods = POST, GET, DELETE - [expose:TA_bigfix_bigfix_relevant_fixlets] pattern = TA_bigfix_bigfix_relevant_fixlets methods = POST, GET @@ -71,6 +63,15 @@ methods = POST, GET pattern = TA_bigfix_bigfix_users/* methods = POST, GET, DELETE +[expose:TA_bigfix_bigfix_available_fixlets] +pattern = TA_bigfix_bigfix_available_fixlets +methods = POST, GET + +[expose:TA_bigfix_bigfix_available_fixlets_specified] +pattern = TA_bigfix_bigfix_available_fixlets/* +methods = POST, GET, DELETE + [expose:_splunkd_data] pattern = data/* methods = GET +