Skip to content

Commit

Permalink
add some functions and put some code into it
Browse files Browse the repository at this point in the history
  • Loading branch information
ira committed Apr 5, 2016
1 parent b568a4b commit c9b46e6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 11 deletions.
6 changes: 4 additions & 2 deletions cdws_api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

from rest_framework_bulk import ListBulkCreateAPIView

from common.storage import get_s3_connection
from common.storage import get_s3_connection, create_bucket
from common.models import Project, Settings
from common.tasks import launch_process
from testreport.tasks import create_environment
Expand Down Expand Up @@ -785,9 +785,11 @@ def post(self, request, filename, testplan_id=None, xunit_format=None):

if s3_connection is not None:
log.info('Get s3 connection')
bucket = s3_connection.create_bucket(settings.S3_BUCKET_NAME)

bucket = create_bucket(s3_connection)
report_key = bucket.new_key(int(time.time()))
report_key.set_contents_from_string(file_obj.read())

log.info('Xml file "{}" created in bucket "{}"'.format(
report_key.name, settings.S3_BUCKET_NAME))

Expand Down
8 changes: 8 additions & 0 deletions common/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,11 @@ def get_s3_connection():
is_secure=False,
calling_format=boto.s3.connection.OrdinaryCallingFormat())
return None


def create_bucket(s3_connection):
return s3_connection.create_bucket(settings.S3_BUCKET_NAME)


def get_bucket(s3_connection):
return s3_connection.get_bucket(settings.S3_BUCKET_NAME)
31 changes: 22 additions & 9 deletions testreport/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from cdws_api.xml_parser import xml_parser_func

from common.storage import get_s3_connection
from common.storage import get_s3_connection, get_bucket
from comments.models import Comment

import celery
Expand Down Expand Up @@ -158,14 +158,13 @@ def update_state(bug):
@celery.task()
def parse_xml(xunit_format, launch_id, params,
s3_conn=False, s3_key_name=None, file_content=None):
if s3_conn:
s3_connection = get_s3_connection()
bucket = s3_connection.get_bucket(settings.S3_BUCKET_NAME)
report = bucket.get_key(s3_key_name)
file_content = report.read()

log.info('Start parsing xml {}'.format(s3_key_name))
try:
if s3_conn:
s3_connection = get_s3_connection()
file_content = \
get_file_from_storage(s3_connection, s3_key_name).read()

log.info('Start parsing xml {}'.format(s3_key_name))
xml_parser_func(format=xunit_format,
file_content=file_content,
launch_id=launch_id,
Expand All @@ -180,8 +179,22 @@ def parse_xml(xunit_format, launch_id, params,

if s3_conn:
finalize_launch(launch_id=launch_id)
bucket.delete_key(s3_key_name)
delete_file_from_storage(s3_connection, s3_key_name)
log.info('Xml file "{}" deleted'.format(s3_key_name))
else:
launch = Launch.objects.get(pk=launch_id)
launch.calculate_counts()


def delete_file_from_storage(s3_connection, file_name):
bucket = get_bucket(s3_connection)
bucket.delete_key(file_name)


def get_file_from_storage(s3_connection, file_name):
bucket = get_bucket(s3_connection)
report = bucket.get_key(file_name)
if report is None:
raise Exception('There is no xml file in bucket "{}"'.
format(settings.S3_BUCKET_NAME))
return report

0 comments on commit c9b46e6

Please sign in to comment.