# frozen_string_literal: false

# ----------------------------------------------------------------------------
#
#     ***     AUTO GENERATED CODE    ***    Type: MMv1     ***
#
# ----------------------------------------------------------------------------
#
#     This file is automatically generated by Magic Modules and manual
#     changes will be clobbered when the file is regenerated.
#
#     Please read more about how to change this file in README.md and
#     CONTRIBUTING.md located at the root of this package.
#
# ----------------------------------------------------------------------------
require 'google/vertexai/property/endpoint_deployed_models_automatic_resources'
require 'google/vertexai/property/endpoint_deployed_models_dedicated_resources'
require 'google/vertexai/property/endpoint_deployed_models_dedicated_resources_autoscaling_metric_specs'
require 'google/vertexai/property/endpoint_deployed_models_dedicated_resources_machine_spec'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_metadata'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_metadata_inputs'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_metadata_outputs'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_examples'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_examples_example_gcs_source'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_examples_example_gcs_source_gcs_source'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_examples_presets'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_integrated_gradients_attribution'
require 'google/vertexai/property/endpoint_dmespigabb_config'
require 'google/vertexai/property/endpoint_dmespigasg_config'
require 'google/vertexai/property/endpoint_dmespigasgcfn_sigma'
require 'google/vertexai/property/endpoint_dmespigasgcfnsn_sigma'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_sampled_shapley_attribution'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_xrai_attribution'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_xrai_attribution_blur_baseline_config'
require 'google/vertexai/property/endpoint_deployed_models_explanation_spec_parameters_xrai_attribution_smooth_grad_config'
require 'google/vertexai/property/endpoint_dmespxasgcfn_sigma'
require 'google/vertexai/property/endpoint_dmespxasgcfnsn_sigma'
require 'google/vertexai/property/endpoint_deployed_models_private_endpoints'
module GoogleInSpec
  module VertexAI
    module Property
      class EndpointDeployedModels
        attr_reader :create_time

        attr_reader :private_endpoints

        attr_reader :disable_container_logging

        attr_reader :model_version_id

        attr_reader :explanation_spec

        attr_reader :enable_access_logging

        attr_reader :service_account

        attr_reader :dedicated_resources

        attr_reader :automatic_resources

        attr_reader :display_name

        attr_reader :model

        attr_reader :id

        def initialize(args = nil, parent_identifier = nil)
          return if args.nil?
          @parent_identifier = parent_identifier
          @create_time = args['createTime']
          @private_endpoints = GoogleInSpec::VertexAI::Property::EndpointDeployedModelsPrivateEndpoints.new(args['privateEndpoints'], to_s)
          @disable_container_logging = args['disableContainerLogging']
          @model_version_id = args['modelVersionId']
          @explanation_spec = GoogleInSpec::VertexAI::Property::EndpointDeployedModelsExplanationSpec.new(args['explanationSpec'], to_s)
          @enable_access_logging = args['enableAccessLogging']
          @service_account = args['serviceAccount']
          @dedicated_resources = GoogleInSpec::VertexAI::Property::EndpointDeployedModelsDedicatedResources.new(args['dedicatedResources'], to_s)
          @automatic_resources = GoogleInSpec::VertexAI::Property::EndpointDeployedModelsAutomaticResources.new(args['automaticResources'], to_s)
          @display_name = args['displayName']
          @model = args['model']
          @id = args['id']
        end

        def to_s
          "#{@parent_identifier} EndpointDeployedModels"
        end
      end

      class EndpointDeployedModelsArray
        def self.parse(value, parent_identifier)
          return if value.nil?
          return EndpointDeployedModels.new(value, parent_identifier) unless value.is_a?(::Array)
          value.map { |v| EndpointDeployedModels.new(v, parent_identifier) }
        end
      end
    end
  end
end
