Repository navigation
Expand file tree
/
Copy path__init__.py
More file actions
116 lines (103 loc) · 3.51 KB
/
Copy path__init__.py
File metadata and controls
116 lines (103 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Copyright © 2011-2024 Splunk, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"): you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""Utility module shared by the SDK unit tests."""
from utils.cmdopts import *
def config(option, opt, value, parser):
assert opt == "--config"
parser.load(value)
# Default Splunk cmdline rules
RULES_SPLUNK = {
"config": {
"flags": ["--config"],
"action": "callback",
"callback": config,
"type": "string",
"nargs": "1",
"help": "Load options from config file",
},
"scheme": {
"flags": ["--scheme"],
"default": "https",
"help": "Scheme (default 'https')",
},
"host": {
"flags": ["--host"],
"default": "localhost",
"help": "Host name (default 'localhost')",
},
"port": {
"flags": ["--port"],
"default": "8089",
"help": "Port number (default 8089)",
},
"app": {"flags": ["--app"], "help": "The app context (optional)"},
"owner": {"flags": ["--owner"], "help": "The user context (optional)"},
"username": {
"flags": ["--username"],
"default": None,
"help": "Username to login with",
},
"password": {
"flags": ["--password"],
"default": None,
"help": "Password to login with",
},
"version": {
"flags": ["--version"],
"default": None,
"help": "Ignore. Used by JavaScript SDK.",
},
"splunkToken": {
"flags": ["--bearerToken"],
"default": None,
"help": "Bearer token for authentication",
},
"token": {
"flags": ["--sessionKey"],
"default": None,
"help": "Session key for authentication",
},
}
FLAGS_SPLUNK = list(RULES_SPLUNK.keys())
# value: dict, args: [(dict | list | str)*]
def dslice(value, *args):
"""Returns a 'slice' of the given dictionary value containing only the
requested keys. The keys can be requested in a variety of ways, as an
arg list of keys, as a list of keys, or as a dict whose key(s) represent
the source keys and whose corresponding values represent the resulting
key(s) (enabling key rename), or any combination of the above."""
result = {}
for arg in args:
if isinstance(arg, dict):
for k, v in list(arg.items()):
if k in value:
result[v] = value[k]
elif isinstance(arg, list):
for k in arg:
if k in value:
result[k] = value[k]
else:
if arg in value:
result[arg] = value[arg]
return result
def parse(argv, rules=None, config=None, **kwargs):
"""Parse the given arg vector with the default Splunk command rules."""
parser_ = parser(rules, **kwargs)
if config is not None:
parser_.loadenv(config)
return parser_.parse(argv).result
def parser(rules=None, **kwargs):
"""Instantiate a parser with the default Splunk command rules."""
rules = RULES_SPLUNK if rules is None else dict(RULES_SPLUNK, **rules)
return Parser(rules, **kwargs)