Class: HybridPlatformsConductor::Thycotic::ThycoticApi
- Inherits:
-
Object
- Object
- HybridPlatformsConductor::Thycotic::ThycoticApi
- 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
-
#download_file_attachment_by_item_id(secret_id, secret_item_id) ⇒ Object
Get a file attached to a given secret.
-
#get_secret(secret_id) ⇒ Object
Return secret corresponding to a given secret ID.
-
#initialize(url, user, password, domain: ENV['hpc_domain_for_thycotic'], logger: Logger.new($stdout), logger_stderr: Logger.new($stderr)) ⇒ ThycoticApi
constructor
Constructor.
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 (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 |