blob: c7a17833525c05310529825e39c3eb18fd2c29f1 [file] [log] [blame]
# Copyright (C) 2019 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from __future__ import unicode_literals
import logging
from django.db import models
_log = logging.getLogger(__name__)
class BuildbotInstance(models.Model):
instance_id = models.AutoField(primary_key=True)
hostname = models.TextField()
active = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def __str__(self):
return '{}_{}'.format(self.instance_id, self.hostname)
@classmethod
def get_instance_id(cls, hostname):
try:
return BuildbotInstance.objects.get(hostname=hostname, active=True).instance_id
except BuildbotInstance.DoesNotExist:
instance = BuildbotInstance(hostname=hostname)
instance.save()
_log.info('Created new buildbot instance id {} for hostname: {}'.format(instance.instance_id, hostname))
return instance.instance_id
@classmethod
def get_uid(cls, hostname, build_or_step_id):
instance_id = BuildbotInstance.get_instance_id(hostname)
return '{}_{}'.format(instance_id, build_or_step_id)