-
Notifications
You must be signed in to change notification settings - Fork 387
Expand file tree
/
Copy path__init__.py
More file actions
136 lines (123 loc) · 4.03 KB
/
Copy path__init__.py
File metadata and controls
136 lines (123 loc) · 4.03 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Copyright © 2011-2026 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",
},
"internal_ai_client_id": {
"flags": ["--internalAIClientID"],
"default": None,
},
"internal_ai_client_secret": {
"flags": ["--internalAIClientSecret"],
"default": None,
},
"internal_ai_app_key": {
"flags": ["--internalAIAppKey"],
"default": None,
},
"internal_ai_token_url": {
"flags": ["--internalAITokenURL"],
"default": None,
},
"internal_ai_base_url": {
"flags": ["--internalAIBaseURL"],
"default": None,
},
}
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)