#
# Copyright 2013 Red Hat, Inc.
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.

from .device import Device
from .char import CharSource
from ..xmlbuilder import XMLChildProperty, XMLProperty


class DeviceRng(Device):
    XML_NAME = "rng"

    TYPE_RANDOM = "random"
    TYPE_EGD = "egd"
    TYPE_BUILTIN = "builtin"

    model = XMLProperty("./@model")

    backend_model = XMLProperty("./backend/@model")
    backend_type = XMLProperty("./backend/@type")

    source = XMLChildProperty(CharSource, is_single=True, relative_xpath="./backend")

    rate_bytes = XMLProperty("./rate/@bytes")
    rate_period = XMLProperty("./rate/@period")

    device = XMLProperty("./backend[@model='random']")

    ##################
    # Default config #
    ##################

    def set_defaults(self, guest):
        if not self.model:
            self.model = "virtio"
