def _show_deployment_progress(self, event): for message in event.messages: logger.info('ECS service event - {}'.format(message)) logger.info('ECS service tasks - ' 'desired: {} pending: {} running: {} previous: {}'.format( event.desired, event.pending, event.running, event.previous_running))
def _zip_up_component(self): logger.info('Zipping up ./{} folder'.format(self._source_dir)) with ZipFile(self._source_dir + '.zip', 'w') as zipped_folder: with self._change_dir(self._source_dir): for dirname, subdirs, files in os.walk('.'): for filename in files: zipped_folder.write(os.path.join(dirname, filename)) return zipped_folder
def _upload_zip_to_bucket(self, bucket_name, filename): logger.info('Uploading {} to s3 bucket ({}) with key: {}'.format( filename, bucket_name, self._lambda_s3_key)) self._boto_s3_client.upload_file(filename, bucket_name, self._lambda_s3_key) return { 's3_bucket': bucket_name, 's3_key': self._lambda_s3_key, }
def wait(self): start = time() for event in self._ecs_event_iterator: if time() - start > self._TIMEOUT: raise TimeoutError('Deployment timed out - didn\'t complete ' 'within {} seconds'.format(self._TIMEOUT)) self._show_deployment_progress(event) self._check_for_failed_tasks(event) if event.done: logger.info('Deployment complete') return True sleep(self._INTERVAL)
def _upload_zip_to_buckets(self, buckets, filename): metadata = { 's3_key': self._lambda_s3_key, # this is a map tfvar that currently only allows scalar values # in the future we might have a list without the _csv postfix # (the same applies to the "s3_bucket." psuedo-map below) 's3_bucket_regions_csv': ','.join(sorted(buckets.keys())) } for region, bucket_name in buckets.items(): logger.info( 'Uploading {} to s3 bucket ({} in {}) with key: {}'.format( filename, bucket_name, region, self._lambda_s3_key)) self._boto_session.client('s3', region_name=region).upload_file( filename, bucket_name, self._lambda_s3_key) metadata[f's3_bucket.{region}'] = bucket_name return metadata
def release(self): logger.info('Release takes no action on infrastructure type project')
def _remove_zipped_folder(self, filename): logger.info('Removing local zipped package: {}'.format(filename)) os.remove(filename)