# frozen_string_literal: true

require_relative '../config'
require_relative '../logging'

require 'aws-sdk-ssm'

module Utils
  # Provides methods for interacting with SSM
  class SSM
    include Logging

    SSM_CLIENT = Aws::SSM::Client.new(region: Config::AWS_REGION)

    def self.tags
      [
        {
          key: 'environment',
          value: Config::ENVIRONMENT
        }
      ]
    end

    def self.create_activation_params(description:)
      {
        description: description,
        expiration_date: (Time.now + (Config::SSM_ACTIVATION_EXPIRATION * 60 * 60)),
        iam_role: Config::SSM_SERVICE_ROLE,
        registration_limit: Config::SSM_REGISTRATION_LIMIT,
        tags: tags
      }
    end

    def self.create_activation(description:)
      params = create_activation_params(description: description)
      logger.info("Creating SSM activation with params: #{params.to_json}")
      activation = SSM_CLIENT.create_activation(params)

      logger.info("Successfully created activation with ID #{activation['activation_id']}")
      activation
    end
  end
end
