def save_ec2()

in lambdas/helper/dal.py [0:0]


    def save_ec2(self, aws_instance_id, input_fields, batch_size=200):
        DataAccessLayer._xray_start('save_ec2')
        try:
            num_ec2_packages = len(input_fields['packages']) if 'packages' in input_fields else 0
            DataAccessLayer._xray_add_metadata('aws_instance_id', aws_instance_id)
            DataAccessLayer._xray_add_metadata('num_ec2_packages', num_ec2_packages)
            # packages have their own table, so remove it to construct the ec2 record
            ec2_fields = input_fields.copy()
            ec2_fields.pop('packages')
            sql_parameters = [
                {'name':'aws_instance_id', 'value':{'stringValue': aws_instance_id}},
                {'name':'aws_region', 'value':{'stringValue': ec2_fields['aws_region']}},
                {'name':'aws_account', 'value':{'stringValue': ec2_fields['aws_account']}},
            ]
            sql = f'insert into {ec2_table_name}' \
                f' (aws_instance_id, aws_region, aws_account)' \
                f' values (:aws_instance_id, :aws_region, :aws_account)'
            response = self.execute_statement(sql, sql_parameters)
            if 'packages' in input_fields:
                self._save_packages_batch(input_fields['packages'], batch_size)
                self._save_ec2_package_relations_batch(aws_instance_id, input_fields['packages'], batch_size)
            return response
        except DataAccessLayerException as de:
            raise de
        except Exception as e:
            raise DataAccessLayerException(e) from e
        finally:
           DataAccessLayer._xray_stop()