def trigger_launch(): aws_id, aws_key = util.read_aws_credential() aws_creds = {'aws_access_key_id': aws_id, 'aws_secret_access_key': aws_key} sqs = boto.sqs.connect_to_region(config.aws_region, **aws_creds) req_q = sqs.get_queue("%s_request" % config.controller) notify_q = sqs.get_queue("notify_%s" % config.controller) for q in [req_q, notify_q]: q.set_message_class(JSONMessage) msg = JSONMessage() msg.set_body({ 'launch-fp-as': '*****@*****.**', 'launch-refrtok': '<redacted>', 'launch-serial': 1 }) print "Sending request..." req_q.write(msg) return # Comment out to wait for response! print "Awaiting response..." while True: msg = notify_q.read() if msg is not None: print "Got message: %r" % msg.get_body() notify_q.delete_message(msg) return sys.stdout.write(".") sys.stdout.flush()
def push(body, queue='pi-status'): ''' Create a JSON-encoded boto-style Message object and write it to the queue. ''' sqs = SQSConnection() sqs_queue = sqs.create_queue(queue) message = JSONMessage(body=body) sqs_queue.write(message)
def send_message(d): aws_id, aws_key = util.read_aws_credential() aws_creds = {'aws_access_key_id': aws_id, 'aws_secret_access_key': aws_key} sqs = boto.sqs.connect_to_region(config.aws_region, **aws_creds) req_q = sqs.get_queue("%s_request" % config.controller) req_q.set_message_class(JSONMessage) msg = JSONMessage() msg.set_body(d) print "Sending request..." req_q.write(msg) print "Sent."
def report_error_to_controller(error): sqs = boto.sqs.connect_to_region(AWS_REGION, **aws_creds) ctrl_notify_q = sqs.get_queue("notify_%s" % CONTROLLER) msg = JSONMessage() # DRY: SQSChecker at lantern-controller. msg.set_body({'fp-alarm': error, 'instance-id': INSTANCEID, 'ip': IP, 'port': PORT, 'send-email': True}) ctrl_notify_q.write(msg)
def report(failures): fps_str = '\n' + '\n'.join(sorted(failures)) log.warn("Fallbacks failed to proxy: %s" % fps_str) sqs = boto.sqs.connect_to_region(AWS_REGION, **aws_creds) report_q = sqs.get_queue("notify_%s" % CONTROLLER) msg = JSONMessage() msg.set_body({ 'fp-alarm': "Fallbacks not proxying", 'subject': "ALARM: fallback(s) failing to proxy", 'send-email': True, 'ip': fps_str, # These fields are expected by the controller, but they # make no sense in this case. 'user': "******", 'instance-id': 'unavailable', 'port': "n/a" }) report_q.write(msg)
def send_message(self, message): # dart always uses the JSONMessage format self.queue.write(JSONMessage(self.queue, message))
def write_event(self, event_content): self._get_queue().write(JSONMessage(body=event_content))
def get_queue_attributes(self): return {'MessageRetentionPeriod': 4 * 24 * 3600} def get_wait_time(self): return 0 SAMPLE_JSON_SQS_MSG = JSONMessage( body={ 'start_date': '2014-02-02', 'end_date': '2014-02-06', 'script_start_date_arg': '2014-02-02', 'script_end_date_arg': '2014-02-06', 'step': 1, 'log_name': 'log', 'log_schema_version': 'version', 'hash_key': SAMPLE_RECORD_ET_STATUS_SCHEDULED['hash_key'], 'redshift_id': 'some-id', 'redshift_host': 'host', 'redshift_port': 'port', 'redshift_schema': 'rs_namespace', 's3_path': 's3_path', 'uuid': 'uuid', 'additional_arguments': {}, }) SUCCESS_RECORD = { 'status': 'success', 'start_time': 4, 'end_time': 5, 'date': '2014-02-02', 'error_info': {}