class AssMaintainer::InfoBase::ServerIb::InfoBaseWrapper
@api private Wrapper for manipulate with real information base deployed in 1C:Enterprise server ower the 1C Ole classes
Attributes
Public Class Methods
# File lib/ass_maintainer/info_base/server_ib.rb, line 201 def initialize(infobase) self.infobase = infobase end
Public Instance Methods
@return [Array<EnterpriseServers::Cluster>] clusters defined in #infobase.clusters
attached into {#sagent} @raise [RuntimeError] unsupport multiple servers infobase deployments
# File lib/ass_maintainer/info_base/server_ib.rb, line 246 def clusters fail_multiple_servers_not_support cs_clusters.select do |cl| cl.attach(sagent).infobase_include? ib_ref end end
Dlete infobase. @note For first item calls {EnterpriseServers::Cluster#drop_infobase!}
with real +mode+ and uses mode == :alive_db for all other. Otherwise when mode == :destroy_db raises error "Не найдена база данных * в SQL-сервере *"
@param mode (see Cluster#drop_infobase!)
# File lib/ass_maintainer/info_base/server_ib.rb, line 292 def drop_infobase!(mode) clusters.each_with_index do |cl, index| cl.drop_infobase!(self, (index == 0 ? mode : :alive_db)) end end
# File lib/ass_maintainer/info_base/server_ib.rb, line 214 def exists? clusters.size > 0 end
Helper
# File lib/ass_maintainer/info_base/server_ib.rb, line 259 def ib_ref ib.connection_string.ref end
@return [AssLauncher::Enterprise::Ole::AgentConnection]
# File lib/ass_maintainer/info_base/server_ib.rb, line 219 def sagent @sagent ||= sagent_get.connect(infobase.platform_require) end
Helper select session per ID
. In normal returns arry with single element or empty array @return [Array<EnterpriseServers::Wrappers::Session>]
# File lib/ass_maintainer/info_base/server_ib.rb, line 273 def session_get(id) sessions.select {|s| s.SessionId().to_s == id.to_s} end
@return [Array<EnterpriseServers::Wrappers::Session>] infobase sessions
# File lib/ass_maintainer/info_base/server_ib.rb, line 279 def sessions return [] unless exists? clusters.map do |cl| cl.infobase_sessions(ib_ref) end.flatten end
@param session [InfoBase::Session]
# File lib/ass_maintainer/info_base/server_ib.rb, line 264 def terminate(session) session_get(session.id).each do |s| s.terminate end end
# File lib/ass_maintainer/info_base/server_ib.rb, line 253 def wp_connection fail 'Infobase not exists' unless exists? clusters[0].wp_connection(self) end
Private Instance Methods
# File lib/ass_maintainer/info_base/server_ib.rb, line 228 def cs_clusters cs_servers.map do |s| EnterpriseServers::Cluster .new("#{s.host}:#{s.port}", ib.cluster_usr, ib.cluster_pwd) end end
# File lib/ass_maintainer/info_base/server_ib.rb, line 223 def cs_servers ib.connection_string.servers.uniq {|s| [s.host.upcase, s.port.upcase]} end
# File lib/ass_maintainer/info_base/server_ib.rb, line 236 def fail_multiple_servers_not_support fail NotImplementedError, 'Multiple clusters deployment not supported' if\ cs_servers.size > 1 end
@return [EnterpriseServers::ServerAgent]
# File lib/ass_maintainer/info_base/server_ib.rb, line 206 def sagent_get EnterpriseServers::ServerAgent .new "#{ib.sagent_host || cs_servers[0].host}:#{ib.sagent_port}", ib.sagent_usr, ib.sagent_pwd end