lib/comet/models/restore_job_advanced_options.rb
# frozen_string_literal: true # Copyright (c) 2020-2024 Comet Licensing Ltd. # Please see the LICENSE file for usage information. # # SPDX-License-Identifier: MIT require 'json' module Comet # RestoreJobAdvancedOptions is a typed class wrapper around the underlying Comet Server API data structure. class RestoreJobAdvancedOptions # One of the RESTORETYPE_ constants # @type [Number] type attr_accessor :type # For RESTORETYPE_FILE # @type [Boolean] overwrite_existing_files attr_accessor :overwrite_existing_files # For RESTORETYPE_FILE. If set, OverwriteExistingFiles must be true # @type [Boolean] overwrite_if_newer attr_accessor :overwrite_if_newer # For RESTORETYPE_FILE. If set, OverwriteExistingFiles must be true # @type [Boolean] overwrite_if_different_content attr_accessor :overwrite_if_different_content # For RESTORETYPE_FILE. If set, OverwriteExistingFiles must be true. This can be set in combination # with other OverwriteIf options. # @type [Boolean] overwrite_force_permissions attr_accessor :overwrite_force_permissions # For RESTORETYPE_FILE. If set, DestPath must be blank # @type [Boolean] dest_is_original_location attr_accessor :dest_is_original_location # For RESTORETYPE_FILE or RESTORETYPE_PROCESS_xxx # @type [String] dest_path attr_accessor :dest_path # For RESTORETYPE_WINDISK only. Must have one entry for each selected restore path # @type [Array<String>] exact_dest_paths attr_accessor :exact_dest_paths # For RESTORETYPE_FILE_ARCHIVE or RESTORETYPE_PROCESS_ARCHIVE. Default 0 is *.tar, for backward # compatibility # @type [Number] archive_format attr_accessor :archive_format # Default disabled. For RESTORETYPE_FILE and RESTORETYPE_WINDISK. Used to continue the restore job # when unreadable data chunks are found. # Corresponds to the "Allow partial file restores (zero-out unrecoverable data)" option # This field is available in Comet 23.6.4 and later. # @type [Boolean] skip_unreadable_chunks attr_accessor :skip_unreadable_chunks # Default disabled. Used to store the index files on disk instead of in memory. # Corresponds to the "Prefer temporary files instead of RAM (slower)" option # This field is available in Comet 23.6.4 and later. # @type [Boolean] on_disk_indexes_key attr_accessor :on_disk_indexes_key # For RESTORETYPE_OFFICE365_CLOUD. # @type [Comet::Office365Credential] office_365credential attr_accessor :office_365credential # For RESTORETYPE_MYSQL # @type [String] username attr_accessor :username # For RESTORETYPE_MYSQL # @type [String] password attr_accessor :password # For RESTORETYPE_MYSQL # @type [String] host attr_accessor :host # For RESTORETYPE_MYSQL # @type [String] port attr_accessor :port # For RESTORETYPE_MYSQL # @type [Boolean] use_ssl attr_accessor :use_ssl # For RESTORETYPE_MYSQL i.e.: Self signed certs # @type [Boolean] ssl_allow_invalid attr_accessor :ssl_allow_invalid # For RESTORETYPE_MYSQL # @type [String] ssl_ca_file attr_accessor :ssl_ca_file # For RESTORETYPE_MYSQL # @type [String] ssl_crt_file attr_accessor :ssl_crt_file # For RESTORETYPE_MYSQL # @type [String] ssl_key_file attr_accessor :ssl_key_file # For RESTORETYPE_MSSQL. # @type [Comet::MSSQLLoginArgs] ms_sql_connection attr_accessor :ms_sql_connection # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations attr_accessor :unknown_json_fields def initialize clear end def clear @type = 0 @dest_path = '' @exact_dest_paths = [] @archive_format = 0 @office_365credential = Comet::Office365Credential.new @username = '' @password = '' @host = '' @port = '' @ssl_ca_file = '' @ssl_crt_file = '' @ssl_key_file = '' @ms_sql_connection = Comet::MSSQLLoginArgs.new @unknown_json_fields = {} end # @param [String] json_string The complete object in JSON format def from_json(json_string) raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String from_hash(JSON.parse(json_string)) end # @param [Hash] obj The complete object as a Ruby hash def from_hash(obj) raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash obj.each do |k, v| case k when 'Type' raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric @type = v when 'OverwriteExistingFiles' @overwrite_existing_files = v when 'OverwriteIfNewer' @overwrite_if_newer = v when 'OverwriteIfDifferentContent' @overwrite_if_different_content = v when 'OverwriteForcePermissions' @overwrite_force_permissions = v when 'DestIsOriginalLocation' @dest_is_original_location = v when 'DestPath' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @dest_path = v when 'ExactDestPaths' if v.nil? @exact_dest_paths = [] else @exact_dest_paths = Array.new(v.length) v.each_with_index do |v1, i1| raise TypeError, "'v1' expected String, got #{v1.class}" unless v1.is_a? String @exact_dest_paths[i1] = v1 end end when 'ArchiveFormat' raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric @archive_format = v when 'SkipUnreadableChunks' @skip_unreadable_chunks = v when 'OnDiskIndexesKey' @on_disk_indexes_key = v when 'Office365Credential' @office_365credential = Comet::Office365Credential.new @office_365credential.from_hash(v) when 'Username' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @username = v when 'Password' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @password = v when 'Host' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @host = v when 'Port' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @port = v when 'UseSsl' @use_ssl = v when 'SslAllowInvalid' @ssl_allow_invalid = v when 'SslCaFile' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @ssl_ca_file = v when 'SslCrtFile' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @ssl_crt_file = v when 'SslKeyFile' raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String @ssl_key_file = v when 'MsSqlConnection' @ms_sql_connection = Comet::MSSQLLoginArgs.new @ms_sql_connection.from_hash(v) else @unknown_json_fields[k] = v end end end # @return [Hash] The complete object as a Ruby hash def to_hash ret = {} ret['Type'] = @type ret['OverwriteExistingFiles'] = @overwrite_existing_files ret['OverwriteIfNewer'] = @overwrite_if_newer ret['OverwriteIfDifferentContent'] = @overwrite_if_different_content ret['OverwriteForcePermissions'] = @overwrite_force_permissions ret['DestIsOriginalLocation'] = @dest_is_original_location ret['DestPath'] = @dest_path ret['ExactDestPaths'] = @exact_dest_paths ret['ArchiveFormat'] = @archive_format ret['SkipUnreadableChunks'] = @skip_unreadable_chunks ret['OnDiskIndexesKey'] = @on_disk_indexes_key unless @office_365credential.nil? ret['Office365Credential'] = @office_365credential end ret['Username'] = @username ret['Password'] = @password ret['Host'] = @host ret['Port'] = @port ret['UseSsl'] = @use_ssl ret['SslAllowInvalid'] = @ssl_allow_invalid ret['SslCaFile'] = @ssl_ca_file ret['SslCrtFile'] = @ssl_crt_file ret['SslKeyFile'] = @ssl_key_file unless @ms_sql_connection.nil? ret['MsSqlConnection'] = @ms_sql_connection end @unknown_json_fields.each do |k, v| ret[k] = v end ret end # @return [Hash] The complete object as a Ruby hash def to_h to_hash end # @return [String] The complete object as a JSON string def to_json(options = {}) to_hash.to_json(options) end end end