예제 #1
0
    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))
예제 #2
0
 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
예제 #3
0
 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,
     }
예제 #4
0
    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)
예제 #5
0
 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
예제 #6
0
 def release(self):
     logger.info('Release takes no action on infrastructure type project')
예제 #7
0
 def _remove_zipped_folder(self, filename):
     logger.info('Removing local zipped package: {}'.format(filename))
     os.remove(filename)