# -*- coding: utf-8 -*-
# Copyright 2015 The ChromiumOS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Utilities relating to machine-specific functions."""

from __future__ import print_function

from cros_utils import command_executer


def MachineIsPingable(machine, logging_level='average'):
  """Checks to see if a machine is responding to 'ping'.

  Args:
    machine: String containing the name or ip address of the machine to check.
    logging_level: The logging level with which to initialize the
      command_executer (from command_executor.LOG_LEVEL enum list).

  Returns:
    Boolean indicating whether machine is responding to ping or not.
  """
  ce = command_executer.GetCommandExecuter(log_level=logging_level)
  cmd = 'ping -c 1 -w 3 %s' % machine
  status = ce.RunCommand(cmd)
  return status == 0
