# frozen_string_literal: true

# Copyright (c) [2023] SUSE LLC
#
# All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 of the GNU General Public License as published
# by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, contact SUSE LLC.
#
# To contact SUSE LLC about this file by physical or electronic mail, you may
# find current contact information at www.suse.com.

require "yast2/equatable"

module Agama
  module Storage
    module ZFCP
      # zFCP controller
      class Controller
        include Yast2::Equatable

        # zFCP controller channel id
        #
        # @return [String]
        attr_reader :channel

        # @see #active?
        #
        # @return [Boolean]
        attr_writer :active

        # @see #lun_scan?
        #
        # @return [Boolean]
        attr_writer :lun_scan

        eql_attr :channel, :active?

        # Constructor
        #
        # @param channel [String]
        def initialize(channel)
          @channel = channel
        end

        # Whether the controller is active
        #
        # @return [Boolean]
        def active?
          !!@active
        end

        # Whether the controller is automatically scanning LUNs
        #
        # @return [Booelan]
        def lun_scan?
          !!@lun_scan
        end
      end
    end
  end
end
