def configure(args): """ Load CLI configuration :param args: args from files, launch vars, etc :return: Client API Object and Config values in array """ config = Configuration() if args.get('config') != "~/.devo.json": config.load_json(args.get('config'), 'api') config.mix(dict(args)) if "key" not in args.keys() and "api" not in args.keys() \ and "token" not in args.keys(): config.set("key", os.environ.get('DEVO_API_KEY', None)) config.set("secret", os.environ.get('DEVO_API_SECRET', None)) if "url" not in args.keys(): config.set("url", os.environ.get('DEVO_API_URL', None)) if not config.keys("key") and not config.keys("api") \ and not config.keys("token") \ and os.path.exists("~/.devo.json"): config.load_default_json('api') config.keys('from') config.keys('to') # Try to compose the api api = None try: api = Client.from_config(config.get()) except DevoClientException as error: print_error(str(error), show_help=True) return api, config.get()
def lambda_handler(event, context): # Get the object from the event and show its content type bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key']) try: print("File to process %s" % key) response = s3.get_object(Bucket=bucket, Key=key) body = response['Body'] data = body.read() # If the name has a .gz extension, then decompress the data if key[-3:] == '.gz': data = zlib.decompress(data, 16 + zlib.MAX_WBITS) config = Configuration("config.json") con = Sender(config=config.get("sender")) # Send json events to Devo print("Starting to send lines to Devo") counter = 0 for line in data.splitlines(): events_json = json.loads(line) for single_event in events_json["Records"]: dumped_event = json.dumps(single_event) aws_account_id = "a" if single_event.get("getuserIdentity", None) is not None: if single_event.get("getuserIdentity")\ .get("accountId", None) is not None: aws_account_id = single_event["getuserIdentity"][ "accountId"] elif single_event.get("account", None) is not None: aws_account_id = single_event["account"] elif single_event.get("recipientAccountId", None) is not None: aws_account_id = single_event["recipientAccountId"] aws_region = "b" if single_event.get("awsRegion", None) is not None: aws_region = single_event["awsRegion"] elif single_event.get("region", None) is not None: aws_region = single_event["region"] tag = "{!s}.{!s}.{!s}".format(config.get("tag"), aws_account_id, aws_region) counter += con.send(tag=encode(tag), msg=encode(dumped_event), zip=False) con.close() print("Finished sending lines to Devo (%d)" % counter) except Exception as e: print(e) print("Error getting file '%s' from bucket '%s'. Make sure they \ exist and your bucket is in the same region as this function." % (key, bucket))
def init_conf(args): """ Generic configuration of CLI, from config file and cli arguments """ config = Configuration() if args.get('config'): config.load_json(args.get('config'), 'sender') config.mix(dict(args)) if "address" not in args.keys() and "url" in args.keys(): config.set('address', args['url']) if "address" not in args.keys(): address = os.environ.get('DEVO_SENDER_ADDRESS', None) if not address: address = os.environ.get('DEVO_SENDER_URL', None) config.set("address", address) config.set("port", os.environ.get('DEVO_SENDER_PORT', None)) if config.get()['cert_reqs']: if "config" not in args.keys() and "key" not in args.keys() \ and "cert" not in args.keys() and "chain" not in args.keys(): config.set("key", os.environ.get('DEVO_SENDER_KEY', None)) config.set("cert", os.environ.get('DEVO_SENDER_CERT', None)) config.set("chain", os.environ.get('DEVO_SENDER_CHAIN', None)) if not config.keys("key") and not config.keys("cert") and not \ config.keys("chain") and os.path.exists("~/.devo.json"): config.load_default_json('api') config.keys('from') config.keys('to') return config
def configure(args): """ Load CLI configuration :param args: args from files, launch vars, etc :return: Client API Object and Config values in array """ config = Configuration() try: if args.get('config'): config.load_config(args.get('config'), 'api') if args.get('env'): config.set("key", os.environ.get('DEVO_API_KEY', None)) config.set("secret", os.environ.get('DEVO_API_SECRET', None)) config.set("url", os.environ.get('DEVO_API_URL', None)) config.set("user", os.environ.get('DEVO_API_USER', None)) config.set("comment", os.environ.get('DEVO_API_COMMENT', None)) if args.get('default'): config.load_default_config(section="api") finally: config.mix(dict(args)) conf = config.get() # Try to compose the api api = None try: api = Client.from_config(conf) except DevoClientException as error: print_error(str(error), show_help=True) return api, conf
def configure(args): """For load configuration file/object""" if args.get('config'): config = Configuration(args.get('config')) config.mix(dict(args)) else: config = dict(args) if 'freq' in config.keys(): parts = config['freq'].split('-') config['freq'] = (float(parts[0]), float(parts[1])) config['template'] = config['template'].read() # Initialize LtSender with the config credentials but only # if we aren't in batch mode or simulation mode engine = None if not (config['batch_mode'] or config['simulation']): try: if "sender" not in config.keys(): config['sender'] = { 'key': config.get('key', None), 'chain': config.get('chain', None), 'cert': config.get('cert', None), 'address': config.get('address', None), 'port': config.get('port', 443) } engine = Sender(config=config.get('sender')) except Exception as error: print_error(error, show_help=False) print_error("Error when loading devo sender configuration", show_help=True) return engine, config
def lambda_handler(event, context): # Get the object from the event and show its content type bucket = event['Records'][0]['s3']['bucket']['name'] key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key']) try: print("File to process %s" % key) response = s3.get_object(Bucket=bucket, Key=key) body = response['Body'] data = body.read() ###### START: From this point until END, you need to ###### carefully review the code to make sure all ###### variables match your environment. # If the name has a .gz extension, then decompress the data if key[-3:] == '.gz': data = zlib.decompress(data, 16 + zlib.MAX_WBITS) config = Configuration("config.json") con = Sender(config=config.get("sender")) # Send json events to Devo print("Starting to send lines to Devo") counter = 0 for line in data.splitlines(): events_json = json.loads(line) for single_event in events_json["Records"]: counter += con.send(tag=encode(config.get("tag")), msg=encode(json.dumps(single_event)), zip=False) con.close() print("Finished sending lines to Devo (%d)" % counter) ###### END of code containing key variables. except Exception as e: print(e) print("Error getting file '%s' from bucket '%s'. Make sure they \ exist and your bucket is in the same region as this function." % (key, bucket))
def configure(args): """For load configuration file/object""" if args.get('config'): config = Configuration(path=args.get('config'), section="faker") config.mix(dict(args)) else: config = dict(args) if 'frequency' in config.keys() and isinstance(config.get("frequency"), (str, bytes)): config['frequency'] = tuple( [float(x) for x in config.get("frequency").split("-")]) config['template'] = config['template'].read() # Initialize devo.sender with the config credentials but only # if we aren't in batch mode or simulation mode engine = None if not (config['batch_mode'] or config['simulation'] or config.get('file_name', None)): try: if "sender" not in config.keys(): config['sender'] = { 'key': config.get('key', None), 'chain': config.get('chain', None), 'cert': config.get('cert', None), 'address': config.get('address', None), 'port': config.get('port', 443) } engine = Sender(config=config.get('sender')) except Exception as error: print_error(error, show_help=False) print_error("Error when loading devo sender configuration", show_help=True) return engine, config
def test_add_key_chain(self): config = Configuration(self.config_path + ".yaml") config.set(["devo", "old", "name"], "logtrust") self.assertEqual(config["devo"]['old']['name'], "logtrust") self.assertEqual(config.get("devo", 'old', 'name'), "logtrust")
def test_get_keys_chain_in_array(self): config = Configuration(self.config_path + ".yaml") self.assertEqual(config.get(["devo", "die"]), "hard")