diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-14 03:08:18 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-14 03:08:18 +0000 |
commit | db729d703a0bf8fc92f011d160abd063c338b2f3 (patch) | |
tree | 35fa0fbaeaaddd9cc2a126a05eee3527b51e83a8 /deprecated/automation/common/machine.py | |
parent | dddbf2c6f79f2334de6d41b86d63698714ba1124 (diff) | |
parent | b75f321fc8978b92ce3db6886ccb966768f0c7a8 (diff) | |
download | toolchain-utils-db729d703a0bf8fc92f011d160abd063c338b2f3.tar.gz |
Snap for 6206568 from b75f321fc8978b92ce3db6886ccb966768f0c7a8 to rvc-releaseandroid-vts-11.0_r9android-vts-11.0_r8android-vts-11.0_r7android-vts-11.0_r6android-vts-11.0_r5android-vts-11.0_r4android-vts-11.0_r3android-vts-11.0_r2android-vts-11.0_r16android-vts-11.0_r15android-vts-11.0_r14android-vts-11.0_r13android-vts-11.0_r12android-vts-11.0_r11android-vts-11.0_r10android-vts-11.0_r1android-security-11.0.0_r76android-security-11.0.0_r75android-security-11.0.0_r74android-security-11.0.0_r73android-security-11.0.0_r72android-security-11.0.0_r71android-security-11.0.0_r70android-security-11.0.0_r69android-security-11.0.0_r68android-security-11.0.0_r67android-security-11.0.0_r66android-security-11.0.0_r65android-security-11.0.0_r64android-security-11.0.0_r63android-security-11.0.0_r62android-security-11.0.0_r61android-security-11.0.0_r60android-security-11.0.0_r59android-security-11.0.0_r58android-security-11.0.0_r57android-security-11.0.0_r56android-security-11.0.0_r55android-security-11.0.0_r54android-security-11.0.0_r53android-security-11.0.0_r52android-security-11.0.0_r51android-security-11.0.0_r50android-security-11.0.0_r49android-security-11.0.0_r1android-platform-11.0.0_r9android-platform-11.0.0_r8android-platform-11.0.0_r7android-platform-11.0.0_r6android-platform-11.0.0_r5android-platform-11.0.0_r4android-platform-11.0.0_r3android-platform-11.0.0_r2android-platform-11.0.0_r13android-platform-11.0.0_r12android-platform-11.0.0_r11android-platform-11.0.0_r10android-platform-11.0.0_r1android-cts-11.0_r9android-cts-11.0_r8android-cts-11.0_r7android-cts-11.0_r6android-cts-11.0_r5android-cts-11.0_r4android-cts-11.0_r3android-cts-11.0_r2android-cts-11.0_r16android-cts-11.0_r15android-cts-11.0_r14android-cts-11.0_r13android-cts-11.0_r12android-cts-11.0_r11android-cts-11.0_r10android-cts-11.0_r1android-11.0.0_r6android-11.0.0_r5android-11.0.0_r4android-11.0.0_r3android-11.0.0_r25android-11.0.0_r2android-11.0.0_r17android-11.0.0_r1android11-tests-releaseandroid11-security-releaseandroid11-s1-releaseandroid11-releaseandroid11-platform-releaseandroid11-gsi
Change-Id: I997cf91dd612b5e50d502271baf665232843c30a
Diffstat (limited to 'deprecated/automation/common/machine.py')
-rw-r--r-- | deprecated/automation/common/machine.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/deprecated/automation/common/machine.py b/deprecated/automation/common/machine.py new file mode 100644 index 00000000..4db0db0d --- /dev/null +++ b/deprecated/automation/common/machine.py @@ -0,0 +1,70 @@ +# Copyright 2010 Google Inc. All Rights Reserved. + +__author__ = 'asharif@google.com (Ahmad Sharif)' + +from fnmatch import fnmatch + + +class Machine(object): + """Stores information related to machine and its state.""" + + def __init__(self, hostname, label, cpu, cores, os, username): + self.hostname = hostname + self.label = label + self.cpu = cpu + self.cores = cores + self.os = os + self.username = username + + # MachineManager related attributes. + self.uses = 0 + self.locked = False + + def Acquire(self, exclusively): + assert not self.locked + + if exclusively: + self.locked = True + self.uses += 1 + + def Release(self): + assert self.uses > 0 + + self.uses -= 1 + + if not self.uses: + self.locked = False + + def __repr__(self): + return '{%s: %s@%s}' % (self.__class__.__name__, self.username, + self.hostname) + + def __str__(self): + return '\n'.join( + ['Machine Information:', 'Hostname: %s' % self.hostname, 'Label: %s' % + self.label, 'CPU: %s' % self.cpu, 'Cores: %d' % self.cores, 'OS: %s' % + self.os, 'Uses: %d' % self.uses, 'Locked: %s' % self.locked]) + + +class MachineSpecification(object): + """Helper class used to find a machine matching your requirements.""" + + def __init__(self, hostname='*', label='*', os='*', lock_required=False): + self.hostname = hostname + self.label = label + self.os = os + self.lock_required = lock_required + self.preferred_machines = [] + + def __str__(self): + return '\n'.join(['Machine Specification:', 'Name: %s' % self.name, 'OS: %s' + % self.os, 'Lock required: %s' % self.lock_required]) + + def IsMatch(self, machine): + return all([not machine.locked, fnmatch(machine.hostname, self.hostname), + fnmatch(machine.label, self.label), fnmatch(machine.os, + self.os)]) + + def AddPreferredMachine(self, hostname): + if hostname not in self.preferred_machines: + self.preferred_machines.append(hostname) |