Source code for cup.jenkinslib.internal.node

#!/usr/bin/env python
# -*- coding: utf-8 -*
# Copyright: [CUP] - See LICENSE for details.
# Authors: liushuxian(liushuxian)
"""
This module provides Node object.
"""

from cup.jenkinslib.internal import base


class Node(base.JenkinsBase):
    """Represents a node."""
    def __init__(self, url, name, jenkins):
        """initialize Node object.

        Args:
            url: url of node.
            name: name of node.
            node: Node object.
        """
        self.name = name
        self.jenkins = jenkins
        super(Node, self).__init__(url, static=jenkins.is_static)

    def get_jenkins_obj(self):
        """get object of current jenkins."""
        return self.jenkins

    def __str__(self):
        return self.name

    @property
    def is_online(self):
        """node is online or not."""
        return not self.poll(tree="offline")["offline"]

    @property
    def is_temporarily_offline(self):
        """node is temporarily offline or not."""
        return not self.poll(tree="temporarilyOffline")["temporarilyOffline"]

    @property
    def is_idle(self):
        """node is idle or not."""
        return self.poll(tree="idle")["idle"]