예제 #1
0
def lambda_handler(event, context):
    teams = Teams()
    try:
        domain = os.environ.get('BACKLOG_DOMAIN', '')
        milestone = int(os.environ.get('QA_MILESTONE', '0'))

        for record in event['Records']:
            message_body = json.loads(record['body'])
            message = json.loads(message_body['Message'])

            project = get_value(message, 'project')
            content = get_value(message, 'content')
            createdUser = get_value(message, 'createdUser')

            milestone_array = get_value(content, 'milestone')
            if len(milestone_array) > 0:
                milestone_id = get_value(milestone_array[0], 'id')
            else:
                return

            if milestone_id != milestone:
                return

            projectKey = get_value(project, 'projectKey')
            key_id = get_value(content, 'key_id')

            description = get_value(content, 'description')

            comment = get_value(get_value(content, 'comment'), 'content')
            user = get_value(createdUser, 'name')

            url = 'https://{domain}/view/{projectKey}-{key_id}'.format(
                domain=domain,
                projectKey=projectKey,
                key_id=key_id
            )
            url_tag = '<a href="{url}">{url}</a>'.format(
                url=url
            )

            teams.send_message(
                '回答',
                '**質問**:{description}<br><br>**{user}の回答**:{comment}<br><br>{url}'.format(
                    description=description,
                    user=user,
                    comment=comment,
                    url=url_tag
                )
            )
    except:
        logger.error(traceback.format_exc())
        raise Exception(traceback.format_exc())
예제 #2
0
def lambda_handler(event, context):
    teams = Teams()
    try:
        domain = os.environ.get('BACKLOG_DOMAIN', '')

        for record in event['Records']:
            message_body = json.loads(record['body'])
            message = json.loads(message_body['Message'])

            logger.info(message)

            project = get_value(message, 'project')
            content = get_value(message, 'content')
            createdUser = get_value(message, 'createdUser')

            project_name = get_value(project, 'name')
            projectKey = get_value(project, 'projectKey')
            key_id = get_value(content, 'key_id')
            summary = get_value(content, 'summary')
            milestone_array = get_value(content, 'milestone')
            if len(milestone_array) > 0:
                milestone = get_value(milestone_array[0], 'name')
            else:
                milestone = ''
            estimatedHours = round(get_value(content, 'estimatedHours'), 2)
            actualHours = round(get_value(content, 'actualHours'), 2)
            comment = get_value(get_value(content, 'comment'), 'content')
            status = get_value(get_value(content, 'status'), 'name')
            user = get_value(createdUser, 'name')
            assignee = get_value(get_value(content, 'assignee'), 'name')

            changes = get_value(content, 'changes')

            url = 'https://{domain}/view/{projectKey}-{key_id}'.format(
                domain=domain, projectKey=projectKey, key_id=key_id)
            url_tag = '<a href="{url}">{url}</a>'.format(url=url)

            response = teams.send_message(
                '{summary} ({milestone})'.format(summary=summary,
                                                 milestone=milestone),
                '<b>対応状況:</b> {status}<br><b>担当:</b> {assignee}<br><b>実績時間:</b> {actualHours}<br><b>予定時間:</b> {estimatedHours}<br>{url}<br><b>更新者:</b> {user}<br>{comment}{changes}'
                .format(status=status,
                        user=user,
                        comment=get_comment(comment),
                        actualHours=actualHours,
                        estimatedHours=estimatedHours,
                        url=url_tag,
                        assignee=assignee,
                        changes=get_changes(changes)))

            logger.info(response)
            logger.info(response.text)

    except:
        logger.error(traceback.format_exc())
        raise Exception(traceback.format_exc())
예제 #3
0
def lambda_handler(event, context):
    teams = Teams()
    try:
        s3 = boto3.resource('s3')
        bucket_name = os.environ.get('BUCKET_NAME', None)

        for record in event['Records']:
            message_body = json.loads(record['body'])
            message = json.loads(message_body['Message'])

            project = get_value(message, 'project')
            content = get_value(message, 'content')

            projectKey = get_value(project, 'projectKey')
            key_id = get_value(content, 'key_id')

            object_key = '{projectKey}-{key_id}.json'.format(
                projectKey=projectKey,
                key_id=key_id
            )

            obj = s3.Object(
                bucket_name,
                object_key
            )

            milestone_array = get_value(content, 'milestone')
            if len(milestone_array) > 0:
                milestone = get_value(milestone_array[0], 'name')
            else:
                milestone = ''
            estimatedHours = get_value(content, 'estimatedHours')
            actualHours = get_value(content, 'actualHours')
            status = get_value(get_value(content, 'status'), 'name')
            assignee = get_value(get_value(content, 'assignee'), 'name')
            issueType = get_value(get_value(content, 'issueType'), 'name')
            startDate = get_value(content, 'startDate')
            dueDate = get_value(content, 'dueDate')
            summary = get_value(content, 'summary')

            ticket_json = {
                'milestone': milestone,
                'estimatedHours': estimatedHours,
                'actualHours': actualHours,
                'status': status,
                'assignee': assignee,
                'issueType': issueType,
                'startDate': startDate,
                'dueDate': dueDate,
                'summary': summary
            }

            response = obj.put(
                Body=json.dumps(ticket_json)
            )

            logger.info(response)

    except:
        logger.error(traceback.format_exc())
        teams.send_message(
            'Error',
            traceback.format_exc()
        )
        raise Exception(traceback.format_exc())
예제 #4
0
def lambda_handler(event, context):
    teams = Teams()
    try:
        s3 = boto3.resource('s3')
        bucket_name = os.environ.get('BUCKET_NAME', None)
        api_url = os.environ.get('API_URL', None)
        api_key = os.environ.get('API_KEY', None)
        project_id = os.environ.get('PROJECT_ID', None)
        offset = 0

        backlog_url = '{api_url}?apiKey={api_key}&projectId[]={project_id}&statusId[]=4&count=100&sort=keyId&order=asc&offset='.format(
            api_url=api_url, api_key=api_key, project_id=project_id)

        issues = requests.get(backlog_url + str(offset))

        while len(issues) > 0:

            for record in issues:
                message_body = json.loads(record['body'])
                message = json.loads(message_body['Message'])

                project = get_value(message, 'project')
                content = get_value(message, 'content')

                projectKey = get_value(project, 'projectKey')
                key_id = get_value(content, 'key_id')
                offset = key_id

                object_key = '{projectKey}-{key_id}.json'.format(
                    projectKey=projectKey, key_id=key_id)

                obj = s3.Object(bucket_name, object_key)

                milestone_array = get_value(content, 'milestone')
                if len(milestone_array) > 0:
                    milestone = get_value(milestone_array[0], 'name')
                else:
                    milestone = ''
                estimatedHours = get_value(content, 'estimatedHours')
                actualHours = get_value(content, 'actualHours')
                status = get_value(get_value(content, 'status'), 'name')
                assignee = get_value(get_value(content, 'assignee'), 'name')
                issueType = get_value(get_value(content, 'issueType'), 'name')
                startDate = get_value(content, 'startDate')
                dueDate = get_value(content, 'dueDate')
                summary = get_value(content, 'summary')

                ticket_json = {
                    'milestone': milestone,
                    'estimatedHours': estimatedHours,
                    'actualHours': actualHours,
                    'status': status,
                    'assignee': assignee,
                    'issueType': issueType,
                    'startDate': startDate,
                    'dueDate': dueDate,
                    'summary': summary
                }

                response = obj.put(Body=json.dumps(ticket_json))

                logger.info(response)

            issues = requests.get(backlog_url + str(offset))
            teams.send_message(str(offset))

    except:
        logger.error(traceback.format_exc())
        teams.send_message('Error', traceback.format_exc())
        raise Exception(traceback.format_exc())