本文整理汇总了Python中splunklib.client.service方法的典型用法代码示例。如果您正苦于以下问题:Python client.service方法的具体用法?Python client.service怎么用?Python client.service使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类splunklib.client
的用法示例。
在下文中一共展示了client.service方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _proper_namespace
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def _proper_namespace(self, owner=None, app=None, sharing=None):
"""Produce a namespace sans wildcards for use in entity requests.
This method tries to fill in the fields of the namespace which are `None`
or wildcard (`'-'`) from the entity's namespace. If that fails, it uses
the service's namespace.
:param owner:
:param app:
:param sharing:
:return:
"""
if owner is None and app is None and sharing is None: # No namespace provided
if self._state is not None and 'access' in self._state:
return (self._state.access.owner,
self._state.access.app,
self._state.access.sharing)
else:
return (self.service.namespace['owner'],
self.service.namespace['app'],
self.service.namespace['sharing'])
else:
return (owner,app,sharing)
示例2: __getitem__
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def __getitem__(self, key):
# The superclass implementation is designed for collections that contain
# entities. This collection (Configurations) contains collections
# (ConfigurationFile).
#
# The configurations endpoint returns multiple entities when we ask for a single file.
# This screws up the default implementation of __getitem__ from Collection, which thinks
# that multiple entities means a name collision, so we have to override it here.
try:
response = self.get(key)
return ConfigurationFile(self.service, PATH_CONF % key, state={'title': key})
except HTTPError as he:
if he.status == 404: # No entity matching key
raise KeyError(key)
else:
raise
示例3: __init__
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def __init__(self, service, path, kind=None, **kwargs):
# kind can be omitted (in which case it is inferred from the path)
# Otherwise, valid values are the paths from data/inputs ("udp",
# "monitor", "tcp/raw"), or two special cases: "tcp" (which is "tcp/raw")
# and "splunktcp" (which is "tcp/cooked").
Entity.__init__(self, service, path, **kwargs)
if kind is None:
path_segments = path.split('/')
i = path_segments.index('inputs') + 1
if path_segments[i] == 'tcp':
self.kind = path_segments[i] + '/' + path_segments[i+1]
else:
self.kind = path_segments[i]
else:
self.kind = kind
# Handle old input kind names.
if self.kind == 'tcp':
self.kind = 'tcp/raw'
if self.kind == 'splunktcp':
self.kind = 'tcp/cooked'
示例4: create
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def create(self, query, **kwargs):
""" Creates a search using a search query and any additional parameters
you provide.
:param query: The search query.
:type query: ``string``
:param kwargs: Additiona parameters (optional). For a list of available
parameters, see `Search job parameters
<http://dev.splunk.com/view/SP-CAAAEE5#searchjobparams>`_
on Splunk Developer Portal.
:type kwargs: ``dict``
:return: The :class:`Job`.
"""
if kwargs.get("exec_mode", None) == "oneshot":
raise TypeError("Cannot specify exec_mode=oneshot; use the oneshot method instead.")
response = self.post(search=query, **kwargs)
sid = _load_sid(response)
return Job(self.service, sid)
示例5: fired_alerts
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def fired_alerts(self):
"""Returns the collection of fired alerts (a fired alert group)
corresponding to this saved search's alerts.
:raises IllegalOperationException: Raised when the search is not scheduled.
:return: A collection of fired alerts.
:rtype: :class:`AlertGroup`
"""
if self['is_scheduled'] == '0':
raise IllegalOperationException('Unscheduled saved searches have no alerts.')
c = Collection(
self.service,
self.service._abspath(PATH_FIRED_ALERTS + self.name,
owner=self._state.access.owner,
app=self._state.access.app,
sharing=self._state.access.sharing),
item=AlertGroup)
return c
示例6: grant
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def grant(self, *capabilities_to_grant):
"""Grants additional capabilities to this role.
:param capabilities_to_grant: Zero or more capabilities to grant this
role. For a list of capabilities, see
`Capabilities <http://dev.splunk.com/view/SP-CAAAEJ6#capabilities>`_
on Splunk Developer Portal.
:type capabilities_to_grant: ``string`` or ``list``
:return: The :class:`Role`.
**Example**::
service = client.connect(...)
role = service.roles['somerole']
role.grant('change_own_password', 'search')
"""
possible_capabilities = self.service.capabilities
for capability in capabilities_to_grant:
if capability not in possible_capabilities:
raise NoSuchCapability(capability)
new_capabilities = self['capabilities'] + list(capabilities_to_grant)
self.post(capabilities=new_capabilities)
return self
示例7: create
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def create(self, name):
""" Creates a configuration file named *name*.
If there is already a configuration file with that name,
the existing file is returned.
:param name: The name of the configuration file.
:type name: ``string``
:return: The :class:`ConfigurationFile` object.
"""
# This has to be overridden to handle the plumbing of creating
# a ConfigurationFile (which is a Collection) instead of some
# Entity.
if not isinstance(name, six.string_types):
raise ValueError("Invalid name: %s" % repr(name))
response = self.post(__conf=name)
if response.status == 303:
return self[name]
elif response.status == 201:
return ConfigurationFile(self.service, PATH_CONF % name, item=Stanza, state={'title': name})
else:
raise ValueError("Unexpected status code %s returned from creating a stanza" % response.status)
示例8: upload
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def upload(self, filename, **kwargs):
"""Uploads a file for immediate indexing.
**Note**: The file must be locally accessible from the server.
:param filename: The name of the file to upload. The file can be a
plain, compressed, or archived file.
:type filename: ``string``
:param kwargs: Additional arguments (optional). For more about the
available parameters, see `Index parameters <http://dev.splunk.com/view/SP-CAAAEE6#indexparams>`_ on Splunk Developer Portal.
:type kwargs: ``dict``
:return: The :class:`Index`.
"""
kwargs['index'] = self.name
path = 'data/inputs/oneshot'
self.service.post(path, name=filename, **kwargs)
return self
示例9: messages
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def messages(self):
"""Returns the collection of service messages.
:return: A :class:`Collection` of :class:`Message` entities.
"""
return Collection(self, PATH_MESSAGES, item=Message)
示例10: restart
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def restart(self, timeout=None):
"""Restarts this Splunk instance.
The service is unavailable until it has successfully restarted.
If a *timeout* value is specified, ``restart`` blocks until the service
resumes or the timeout period has been exceeded. Otherwise, ``restart`` returns
immediately.
:param timeout: A timeout period, in seconds.
:type timeout: ``integer``
"""
msg = { "value": "Restart requested by " + self.username + "via the Splunk SDK for Python"}
# This message will be deleted once the server actually restarts.
self.messages.create(name="restart_required", **msg)
result = self.post("/services/server/control/restart")
if timeout is None:
return result
start = datetime.now()
diff = timedelta(seconds=timeout)
while datetime.now() - start < diff:
try:
self.login()
if not self.restart_required:
return result
except Exception as e:
sleep(1)
raise Exception("Operation time out.")
示例11: delete
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def delete(self):
owner, app, sharing = self._proper_namespace()
return self.service.delete(self.path, owner=owner, app=app, sharing=sharing)
示例12: disable
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def disable(self):
"""Disables the entity at this endpoint."""
self.post("disable")
if self.service.restart_required:
self.service.restart(120)
return self
示例13: _load_list
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def _load_list(self, response):
"""Converts *response* to a list of entities.
*response* is assumed to be a :class:`Record` containing an
HTTP response, of the form::
{'status': 200,
'headers': [('content-length', '232642'),
('expires', 'Fri, 30 Oct 1998 00:00:00 GMT'),
('server', 'Splunkd'),
('connection', 'close'),
('cache-control', 'no-store, max-age=0, must-revalidate, no-cache'),
('date', 'Tue, 29 May 2012 15:27:08 GMT'),
('content-type', 'text/xml; charset=utf-8')],
'reason': 'OK',
'body': ...a stream implementing .read()...}
The ``'body'`` key refers to a stream containing an Atom feed,
that is, an XML document with a toplevel element ``<feed>``,
and within that element one or more ``<entry>`` elements.
"""
# Some subclasses of Collection have to override this because
# splunkd returns something that doesn't match
# <feed><entry></entry><feed>.
entries = _load_atom_entries(response)
if entries is None: return []
entities = []
for entry in entries:
state = _parse_atom_entry(entry)
entity = self.item(
self.service,
self._entity_path(state),
state=state)
entities.append(entity)
return entities
示例14: submit
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def submit(self, stanza):
"""Adds keys to the current configuration stanza as a
dictionary of key-value pairs.
:param stanza: A dictionary of key-value pairs for the stanza.
:type stanza: ``dict``
:return: The :class:`Stanza` object.
"""
body = _encode(**stanza)
self.service.post(self.path, body=body)
return self
示例15: attach
# 需要导入模块: from splunklib import client [as 别名]
# 或者: from splunklib.client import service [as 别名]
def attach(self, host=None, source=None, sourcetype=None):
"""Opens a stream (a writable socket) for writing events to the index.
:param host: The host value for events written to the stream.
:type host: ``string``
:param source: The source value for events written to the stream.
:type source: ``string``
:param sourcetype: The sourcetype value for events written to the
stream.
:type sourcetype: ``string``
:return: A writable socket.
"""
args = { 'index': self.name }
if host is not None: args['host'] = host
if source is not None: args['source'] = source
if sourcetype is not None: args['sourcetype'] = sourcetype
path = UrlEncoded(PATH_RECEIVERS_STREAM + "?" + urllib.parse.urlencode(args), skip_encode=True)
cookie_or_auth_header = "Authorization: Splunk %s\r\n" % \
(self.service.token if self.service.token is _NoAuthenticationToken
else self.service.token.replace("Splunk ", ""))
# If we have cookie(s), use them instead of "Authorization: ..."
if self.service.has_cookies():
cookie_or_auth_header = "Cookie: %s\r\n" % _make_cookie_header(self.service.get_cookies().items())
# Since we need to stream to the index connection, we have to keep
# the connection open and use the Splunk extension headers to note
# the input mode
sock = self.service.connect()
headers = [("POST %s HTTP/1.1\r\n" % str(self.service._abspath(path))).encode('utf-8'),
("Host: %s:%s\r\n" % (self.service.host, int(self.service.port))).encode('utf-8'),
b"Accept-Encoding: identity\r\n",
cookie_or_auth_header.encode('utf-8'),
b"X-Splunk-Input-Mode: Streaming\r\n",
b"\r\n"]
for h in headers:
sock.write(h)
return sock