# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::StorSimple8000Series::Mgmt::V2017_06_01
  module Models
    #
    # Represents the network adapter on device.
    #
    class NetworkAdapters

      include MsRestAzure

      # @return [NetInterfaceId] The ID of the network adapter. Possible values
      # include: 'Invalid', 'Data0', 'Data1', 'Data2', 'Data3', 'Data4',
      # 'Data5'
      attr_accessor :interface_id

      # @return [NetInterfaceStatus] Value indicating status of network
      # adapter. Possible values include: 'Enabled', 'Disabled'
      attr_accessor :net_interface_status

      # @return [Boolean] Value indicating whether this instance is default.
      attr_accessor :is_default

      # @return [ISCSIAndCloudStatus] Value indicating cloud and ISCSI status
      # of network adapter. Possible values include: 'Disabled',
      # 'IscsiEnabled', 'CloudEnabled', 'IscsiAndCloudEnabled'
      attr_accessor :iscsi_and_cloud_status

      # @return [Integer] The speed of the network adapter.
      attr_accessor :speed

      # @return [NetworkMode] The mode of network adapter, either IPv4, IPv6 or
      # both. Possible values include: 'Invalid', 'IPV4', 'IPV6', 'BOTH'
      attr_accessor :mode

      # @return [NicIPv4] The IPv4 configuration of the network adapter.
      attr_accessor :nic_ipv4settings

      # @return [NicIPv6] The IPv6 configuration of the network adapter.
      attr_accessor :nic_ipv6settings


      #
      # Mapper for NetworkAdapters class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'NetworkAdapters',
          type: {
            name: 'Composite',
            class_name: 'NetworkAdapters',
            model_properties: {
              interface_id: {
                client_side_validation: true,
                required: true,
                serialized_name: 'interfaceId',
                type: {
                  name: 'Enum',
                  module: 'NetInterfaceId'
                }
              },
              net_interface_status: {
                client_side_validation: true,
                required: true,
                serialized_name: 'netInterfaceStatus',
                type: {
                  name: 'Enum',
                  module: 'NetInterfaceStatus'
                }
              },
              is_default: {
                client_side_validation: true,
                required: false,
                serialized_name: 'isDefault',
                type: {
                  name: 'Boolean'
                }
              },
              iscsi_and_cloud_status: {
                client_side_validation: true,
                required: true,
                serialized_name: 'iscsiAndCloudStatus',
                type: {
                  name: 'Enum',
                  module: 'ISCSIAndCloudStatus'
                }
              },
              speed: {
                client_side_validation: true,
                required: false,
                serialized_name: 'speed',
                type: {
                  name: 'Number'
                }
              },
              mode: {
                client_side_validation: true,
                required: true,
                serialized_name: 'mode',
                type: {
                  name: 'Enum',
                  module: 'NetworkMode'
                }
              },
              nic_ipv4settings: {
                client_side_validation: true,
                required: false,
                serialized_name: 'nicIpv4Settings',
                type: {
                  name: 'Composite',
                  class_name: 'NicIPv4'
                }
              },
              nic_ipv6settings: {
                client_side_validation: true,
                required: false,
                serialized_name: 'nicIpv6Settings',
                type: {
                  name: 'Composite',
                  class_name: 'NicIPv6'
                }
              }
            }
          }
        }
      end
    end
  end
end
