# 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::Automanage::Mgmt::V2020_06_30_preview
  module Models
    #
    # Automanage configuration profile assignment properties.
    #
    class ConfigurationProfileAssignmentProperties

      include MsRestAzure

      # @return [ConfigurationProfile] A value indicating configuration
      # profile. Possible values include: 'Azure virtual machine best practices
      # – Dev/Test', 'Azure virtual machine best practices – Production'
      attr_accessor :configuration_profile

      # @return [String] The target VM resource URI
      attr_accessor :target_id

      # @return [String] The Automanage account ARM Resource URI
      attr_accessor :account_id

      # @return [String] The configuration profile custom preferences ARM
      # resource URI
      attr_accessor :configuration_profile_preference_id

      # @return [ProvisioningState] The state of onboarding, which only appears
      # in the response. Possible values include: 'Succeeded', 'Failed',
      # 'Created'
      attr_accessor :provisioning_state

      # @return [ConfigurationProfileAssignmentCompliance] The configuration
      # setting for the configuration profile.
      attr_accessor :compliance


      #
      # Mapper for ConfigurationProfileAssignmentProperties class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'ConfigurationProfileAssignmentProperties',
          type: {
            name: 'Composite',
            class_name: 'ConfigurationProfileAssignmentProperties',
            model_properties: {
              configuration_profile: {
                client_side_validation: true,
                required: false,
                serialized_name: 'configurationProfile',
                type: {
                  name: 'String'
                }
              },
              target_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'targetId',
                type: {
                  name: 'String'
                }
              },
              account_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'accountId',
                type: {
                  name: 'String'
                }
              },
              configuration_profile_preference_id: {
                client_side_validation: true,
                required: false,
                serialized_name: 'configurationProfilePreferenceId',
                type: {
                  name: 'String'
                }
              },
              provisioning_state: {
                client_side_validation: true,
                required: false,
                read_only: true,
                serialized_name: 'provisioningState',
                type: {
                  name: 'String'
                }
              },
              compliance: {
                client_side_validation: true,
                required: false,
                serialized_name: 'compliance',
                type: {
                  name: 'Composite',
                  class_name: 'ConfigurationProfileAssignmentCompliance'
                }
              }
            }
          }
        }
      end
    end
  end
end
