# -*- coding: utf-8 -*-
#---------------------------------------------------------------------------
# Copyright 2016 VMware, Inc.  All rights reserved.
# AUTO GENERATED FILE -- DO NOT MODIFY!
#
# vAPI stub file for package com.vmware.appliance.networking.
#---------------------------------------------------------------------------
"""
"""
__author__ = 'VMware, Inc.'
__docformat__ = 'restructuredtext en'
import sys
from vmware.vapi.bindings import type
from vmware.vapi.bindings.converter import TypeConverter
from vmware.vapi.bindings.enum import Enum
from vmware.vapi.bindings.error import VapiError
from vmware.vapi.bindings.struct import VapiStruct
from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
from vmware.vapi.bindings.common import raise_core_exception
from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
from vmware.vapi.exception import CoreException
import com.vmware.vapi.std.errors_client
[docs]class Interfaces(VapiInterface):
    """
    ``Interfaces`` class provides methods Provides information about network
    interface.
    """
    def __init__(self, config):
        """
        :type  config: :class:`vmware.vapi.bindings.stub.StubConfiguration`
        :param config: Configuration to be used for creating the stub.
        """
        VapiInterface.__init__(self, config, _InterfacesStub)
[docs]    class InterfaceStatus(Enum):
        """
        ``Interfaces.InterfaceStatus`` class Defines interface status
        .. note::
            This class represents an enumerated type in the interface language
            definition. The class contains class attributes which represent the
            values in the current version of the enumerated type. Newer versions of
            the enumerated type may contain new values. To use new values of the
            enumerated type in communication with a server that supports the newer
            version of the API, you instantiate this class. See :ref:`enumerated
            type description page <enumeration_description>`.
        """
        down = None
        """
        The interface is down.
        """
        up = None
        """
        The interface is up.
        """
        def __init__(self, string):
            """
            :type  string: :class:`str`
            :param string: String value for the :class:`InterfaceStatus` instance.
            """
            Enum.__init__(string)
 
    InterfaceStatus._set_values([
        InterfaceStatus('down'),
        InterfaceStatus('up'),
    ])
    InterfaceStatus._set_binding_type(type.EnumType(
        'com.vmware.appliance.networking.interfaces.interface_status',
        InterfaceStatus))
[docs]    class InterfaceInfo(VapiStruct):
        """
        ``Interfaces.InterfaceInfo`` class Structure that defines properties and
        status of a network interface.
        .. tip::
            The arguments are used to initialize data attributes with the same
            names.
        """
        def __init__(self,
                     name=None,
                     status=None,
                     mac=None,
                    ):
            """
            :type  name: :class:`str`
            :param name: Interface name, for example, "nic0", "nic1".
            :type  status: :class:`Interfaces.InterfaceStatus`
            :param status: Interface status.
            :type  mac: :class:`str`
            :param mac: MAC address. For example 00:0C:29:94:BB:5A.
            """
            self.name = name
            self.status = status
            self.mac = mac
            VapiStruct.__init__(self)
 
    InterfaceInfo._set_binding_type(type.StructType(
        'com.vmware.appliance.networking.interfaces.interface_info', {
            'name': type.StringType(),
            'status': type.ReferenceType(sys.modules[__name__], 'Interfaces.InterfaceStatus'),
            'mac': type.StringType(),
        },
        InterfaceInfo,
        False,
        None))
[docs]    def list(self):
        """
        Get list of available network interfaces, including those that are not
        yet configured.
        :rtype: :class:`list` of :class:`Interfaces.InterfaceInfo`
        :return: List of InterfaceInfo structures.
        :raise: :class:`com.vmware.vapi.std.errors_client.Error` 
            Generic error
        """
        return self._invoke('list', None)
 
[docs]    def get(self,
            interface_name,
            ):
        """
        Get information about a particular network interface.
        :type  interface_name: :class:`str`
        :param interface_name: Network interface, for example, "nic0".
            The parameter must be an identifier for the resource type:
            ``com.vmware.appliance.networking.interfaces``.
        :rtype: :class:`Interfaces.InterfaceInfo`
        :return: Network interface information.
        :raise: :class:`com.vmware.vapi.std.errors_client.Error` 
            Generic error
        """
        return self._invoke('get',
                            {
                            'interface_name': interface_name,
                            })
  
class _InterfacesStub(ApiInterfaceStub):
    def __init__(self, config):
        # properties for list operation
        list_input_type = type.StructType('operation-input', {})
        list_error_dict = {
            'com.vmware.vapi.std.errors.error':
                type.ReferenceType(com.vmware.vapi.std.errors_client, 'Error'),
        }
        list_input_validator_list = [
        ]
        list_output_validator_list = [
        ]
        # properties for get operation
        get_input_type = type.StructType('operation-input', {
            'interface_name': type.IdType(resource_types='com.vmware.appliance.networking.interfaces'),
        })
        get_error_dict = {
            'com.vmware.vapi.std.errors.error':
                type.ReferenceType(com.vmware.vapi.std.errors_client, 'Error'),
        }
        get_input_validator_list = [
        ]
        get_output_validator_list = [
        ]
        operations = {
            'list': {
                'input_type': list_input_type,
                'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Interfaces.InterfaceInfo')),
                'errors': list_error_dict,
                'input_validator_list': list_input_validator_list,
                'output_validator_list': list_output_validator_list,
            },
            'get': {
                'input_type': get_input_type,
                'output_type': type.ReferenceType(sys.modules[__name__], 'Interfaces.InterfaceInfo'),
                'errors': get_error_dict,
                'input_validator_list': get_input_validator_list,
                'output_validator_list': get_output_validator_list,
            },
        }
        ApiInterfaceStub.__init__(self, iface_name='com.vmware.appliance.networking.interfaces',
                                  config=config,
                                  operations=operations)