Skip to content

Commit ab93b26

Browse files
committed
Change the way we get environment variables
1 parent 140091e commit ab93b26

File tree

2 files changed

+19
-25
lines changed

2 files changed

+19
-25
lines changed

detection_rules/eswrap.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from kibana import Kibana, RuleResource
1313

1414
from .main import root
15-
from .misc import set_param_values
15+
from .misc import environ
1616
from .utils import normalize_timing_and_sort, unix_time_to_formatted, get_path
1717
from .rule_loader import get_rule, rta_mappings, load_rule_files, load_rules
1818

@@ -179,10 +179,10 @@ def run(self, agent_hostname, indexes, verbose=True, **match):
179179

180180
@es_group.command('collect-events')
181181
@click.argument('agent-hostname')
182-
@click.option('--elasticsearch-url', '-u', callback=set_param_values, expose_value=True)
183-
@click.option('--cloud-id', callback=set_param_values, expose_value=True)
184-
@click.option('--user', '-u', callback=set_param_values, expose_value=True, hide_input=False)
185-
@click.option('--password', '-p', callback=set_param_values, expose_value=True, hide_input=True)
182+
@click.option('--elasticsearch-url', '-u', default=environ("DR_ELASTICSEARCH_URL"))
183+
@click.option('--cloud-id', default=environ("DR_ELASTICSEARCH_URL"))
184+
@click.option('--user', '-u', default=environ("DR_USER"))
185+
@click.option('--password', '-p', default=environ("DR_PASSWORD"), hide_input=True)
186186
@click.option('--index', '-i', multiple=True, help='Index(es) to search against (default: all indexes)')
187187
@click.option('--agent-type', '-a', help='Restrict results to a source type (agent.type) ex: auditbeat')
188188
@click.option('--rta-name', '-r', help='Name of RTA in order to save events directly to unit tests data directory')
@@ -229,16 +229,23 @@ def normalize_file(events_file):
229229

230230
@root.command("kibana-upload")
231231
@click.argument("toml-files", nargs=-1, required=True)
232-
@click.option('--kibana-url', '-u', callback=set_param_values, expose_value=True)
233-
@click.option('--cloud-id', callback=set_param_values, expose_value=True)
234-
@click.option('--user', '-u', callback=set_param_values, expose_value=True, hide_input=False)
235-
@click.option('--password', '-p', callback=set_param_values, expose_value=True, hide_input=True)
232+
@click.option('--kibana-url', '-u', default=environ("DR_KIBANA_URL"))
233+
@click.option('--cloud-id', default=environ("DR_CLOUD_ID"))
234+
@click.option('--user', '-u', default=environ("DR_USER"))
235+
@click.option('--password', '-p', default=environ("DR_PASSWORD"))
236236
def kibana_upload(toml_files, kibana_url, cloud_id, user, password):
237237
"""Upload a list of rule .toml files to Kibana."""
238238
from uuid import uuid4
239239
from .packaging import manage_versions
240240
from .schemas import downgrade
241241

242+
if not cloud_id or kibana_url:
243+
raise click.ClickException("Missing required --cloud-id or --kibana-url")
244+
245+
# don't prompt for these until there's a cloud id or kibana URL
246+
user = user or click.prompt("user")
247+
password = password or click.prompt("password", hide_input=True)
248+
242249
with Kibana(cloud_id=cloud_id, url=kibana_url) as kibana:
243250
kibana.login(user, password)
244251

detection_rules/misc.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -213,19 +213,6 @@ def parse_config():
213213
return _CONFIG
214214

215215

216-
def set_param_values(ctx, param, value):
217-
"""Get value for defined key."""
218-
key = param.name
219-
config = parse_config()
220-
env_key = 'DR_' + key.upper()
221-
prompt = True if param.hide_input is not False else False
222-
223-
if value:
224-
return value
225-
elif os.environ.get(env_key):
226-
return os.environ[env_key]
227-
elif config.get(key) is not None:
228-
return config[key]
229-
elif prompt:
230-
return click.prompt(key, default=param.default if not param.default else None, hide_input=param.hide_input,
231-
show_default=True if param.default else False)
216+
def environ(name):
217+
"""Callback function for `default` to get an environment variable."""
218+
return lambda: os.environ.get(name)

0 commit comments

Comments
 (0)