class StoreInspector(object): def __init__(self, host='localhost', port='8089', scheme='https', username='******', password='******'): self._service = Service(owner='nobody', app='amp4e_events_input', scheme=scheme, host=host, port=port, username=username, password=password) # self._service = Service(owner='nobody', app='amp4e_events_input', scheme='https', host='localhost', port='8089', # username='******', password='******') self._service.login() self.collection = self._service.kvstore['AmpEventStreams'] def list_collections(self): for collection in self._service.kvstore: print " {}".format(collection.name) def list_records_within_amp_collection(self, query=None): if query is None: query = {} print json.dumps(self.collection.data.query(query=json.dumps(query)), indent=1)
def from_url(cls, server_uri, stanza): parts = urllib.parse.urlparse(server_uri) scheme = parts.scheme host = parts.hostname port = parts.port service = Service( scheme=scheme, host=host, port=port, username=parts.username, password=parts.password, ) service.login() server_scheme = scheme server_host = host server_port = port token = service.token log_dir = environ.get_log_folder() kind, name = cls._split_stanza(stanza) inputs = list() for item in service.inputs: if item.kind != kind: continue if item.name != name: continue stanza = Stanza(kind, name, item.content) inputs.append(stanza) checkpoint_dir = environ.get_checkpoint_folder(kind) return cls(server_scheme, server_host, server_port, token, checkpoint_dir, log_dir, inputs)
def set_service(): global service splunkd_uri = calculate_local_splunkd_protocolhostport() token = cli_get_sessionkey(splunkd_uri) if token is None: logging.error('Please log in first by running `bin/splunk login`.') sys.exit(1) splunkd = urlsplit(splunkd_uri, allow_fragments=False) service = Service(owner='nobody', scheme=splunkd.scheme, host=splunkd.hostname, port=splunkd.port, token=token) service.login() return True
class TestWrapperWithConnection(unittest.TestCase): COLLECTION_NAME = 'TestAmpEventStreams' def setUp(self): AmpStorageWrapper.COLLECTION_NAME = self.COLLECTION_NAME self.service = Service(owner='nobody', app='amp4e_events_input', scheme=SPLUNK_AUTH_OPTIONS['scheme'], host=SPLUNK_AUTH_OPTIONS['host'], port=SPLUNK_AUTH_OPTIONS['port'], username=SPLUNK_AUTH_OPTIONS['username'], password=SPLUNK_AUTH_OPTIONS['password']) self.service.login() self.service.kvstore.create(self.COLLECTION_NAME) self.metadata = MockDefinitions(self.service.token).metadata self.stream_representation = {'input_name': self.metadata['name']} self.storage = AmpStorageWrapper(self.metadata) def tearDown(self): self.service.kvstore.delete(self.COLLECTION_NAME) def test_collection(self): self.assertIsInstance(self.storage.collection, KVStoreCollection) self.assertIn(self.COLLECTION_NAME, [x.name for x in self.service.kvstore]) def test_find_stream(self): self.__create_stream() self.assertEqual(self.storage.find_stream()['input_name'], self.stream_representation['input_name']) # returns None if stream cannot be found def test_find_stream_none(self): self.assertIsNone(self.storage.find_stream()) def test_find_stream_other_query(self): new_data = {'custom_field': '1234'} new_representation = self.stream_representation.copy() new_representation.update(new_data) self.__create_stream(new_representation) found_stream = self.storage.find_stream(new_data) self.assertEqual(found_stream['input_name'], self.stream_representation['input_name']) self.assertEqual(found_stream['custom_field'], new_data['custom_field']) def test_delete_stream(self): self.__create_stream() self.storage.delete_stream() self.assertEqual( self.service.kvstore[self.COLLECTION_NAME].data.query( query=json.dumps(self.stream_representation)), []) # does not raise error if stream does not exist def test_delete_stream_none(self): self.storage.delete_stream() def test_save_stream_with_data_create(self): additional_data = {'test_key': 'test_value'} self.assertEqual( self.service.kvstore[self.COLLECTION_NAME].data.query( query=json.dumps(self.stream_representation)), []) self.storage.save_stream_with_data(additional_data) streams = self.service.kvstore[self.COLLECTION_NAME].data.query( query=json.dumps(self.stream_representation)) self.assertEqual(len(streams), 1) stream = streams[0] self.assertEqual(stream['input_name'], self.stream_representation['input_name']) self.assertEqual(stream['test_key'], additional_data['test_key']) def test_save_stream_with_data_update(self): self.__create_stream() self.assertEqual( len(self.service.kvstore[self.COLLECTION_NAME].data.query( query=json.dumps(self.stream_representation))), 1) additional_data = {'test_key': 'test_value'} self.storage.save_stream_with_data(additional_data) streams = self.service.kvstore[self.COLLECTION_NAME].data.query( query=json.dumps(self.stream_representation)) self.assertEqual(len(streams), 1) stream = streams[0] self.assertEqual(stream['input_name'], self.stream_representation['input_name']) self.assertEqual(stream['test_key'], additional_data['test_key']) def __create_stream(self, query=None): query = query if query is not None else self.stream_representation self.service.kvstore[self.COLLECTION_NAME].data.insert( json.dumps(query))