go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/milo/ui/src/swarming/tools/bot_status.ts (about)

     1  // Copyright 2023 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  import { BotInfo } from '@/proto/go.chromium.org/luci/swarming/proto/api_v2/swarming.pb';
    16  
    17  export enum BotStatus {
    18    Idle,
    19    Busy,
    20    Quarantined,
    21    Dead,
    22    Deleted,
    23  }
    24  
    25  /**
    26   * Computes bot status.
    27   */
    28  export function getBotStatus(bot: BotInfo): BotStatus {
    29    if (bot.deleted) {
    30      return BotStatus.Deleted;
    31    }
    32    if (bot.isDead) {
    33      return BotStatus.Dead;
    34    }
    35    if (bot.quarantined) {
    36      return BotStatus.Dead;
    37    }
    38    if (bot.maintenanceMsg || bot.taskId) {
    39      return BotStatus.Busy;
    40    }
    41    return BotStatus.Idle;
    42  }
    43  
    44  export const BOT_STATUS_LABEL_MAP = Object.freeze({
    45    [BotStatus.Idle]: 'Idle',
    46    [BotStatus.Busy]: 'Busy',
    47    [BotStatus.Quarantined]: 'Quarantined',
    48    [BotStatus.Dead]: 'Offline',
    49    [BotStatus.Deleted]: 'Deleted',
    50  });
    51  
    52  export const BOT_STATUS_COLOR_MAP = Object.freeze({
    53    [BotStatus.Idle]: 'var(--success-color)',
    54    [BotStatus.Busy]: 'var(--warning-color)',
    55    [BotStatus.Quarantined]: 'var(--exonerated-color)',
    56    [BotStatus.Dead]: 'var(--failure-color)',
    57    [BotStatus.Deleted]: 'var(--critical-failure-color)',
    58  });