Class: HybridPlatformsConductor::Thycotic::ThycoticApi

Inherits:
Object
  • Object
show all
Includes:
LoggerHelpers
Defined in:
lib/hybrid_platforms_conductor/thycotic.rb

Overview

Access to the Thycotic API

Constant Summary

Constants included from LoggerHelpers

LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR

Instance Method Summary collapse

Methods included from LoggerHelpers

#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar

Constructor Details

#initialize(url, user, password, domain: ENV['hpc_domain_for_thycotic'], logger: Logger.new($stdout), logger_stderr: Logger.new($stderr)) ⇒ ThycoticApi

Constructor

Parameters
  • url (String): URL of the Thycotic Secret Server

  • user (String): User name to be used to connect to Thycotic

  • password (SecretString): Password to be used to connect to Thycotic

  • domain (String): Domain to use for authentication to Thycotic [default: ENV]

  • logger (Logger): Logger to be used [default: Logger.new(STDOUT)]

  • logger_stderr (Logger): Logger to be used for stderr [default: Logger.new(STDERR)]



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/hybrid_platforms_conductor/thycotic.rb', line 40

def initialize(
  url,
  user,
  password,
  domain: ENV['hpc_domain_for_thycotic'],
  logger: Logger.new($stdout),
  logger_stderr: Logger.new($stderr)
)
  init_loggers(logger, logger_stderr)
  # Get a token to this SOAP API
  @client = Savon.client(
    wsdl: "#{url}/webservices/SSWebservice.asmx?wsdl",
    ssl_verify_mode: :none,
    logger: @logger,
    log: log_debug?
  )
  @token = @client.call(
    :authenticate,
    message: {
      username: user,
      password: password&.to_unprotected,
      domain: domain
    }
  ).to_hash.dig(:authenticate_response, :authenticate_result, :token)
  raise "Unable to get token from SOAP authentication to #{url}" if @token.nil?
end

Instance Method Details

#download_file_attachment_by_item_id(secret_id, secret_item_id) ⇒ Object

Get a file attached to a given secret

Parameters
  • secret_id (Object): The secret ID

  • secret_item_id (Object): The secret item id

Result
  • String or nil: The file content, or nil if none



90
91
92
93
94
95
96
97
98
99
100
# File 'lib/hybrid_platforms_conductor/thycotic.rb', line 90

def download_file_attachment_by_item_id(secret_id, secret_item_id)
  encoded_file = @client.call(
    :download_file_attachment_by_item_id,
    message: {
      token: @token,
      secretId: secret_id,
      secretItemId: secret_item_id
    }
  ).to_hash.dig(:download_file_attachment_by_item_id_response, :download_file_attachment_by_item_id_result, :file_attachment)
  encoded_file.nil? ? nil : Base64.decode64(encoded_file)
end

#get_secret(secret_id) ⇒ Object

Return secret corresponding to a given secret ID

Parameters
  • secret_id (Object): The secret ID

Result
  • Hash: The corresponding API result



73
74
75
76
77
78
79
80
81
# File 'lib/hybrid_platforms_conductor/thycotic.rb', line 73

def get_secret(secret_id)
  @client.call(
    :get_secret,
    message: {
      token: @token,
      secretId: secret_id
    }
  ).to_hash.dig(:get_secret_response, :get_secret_result)
end