class AssMaintainer::InfoBase::ServerIb::EnterpriseServers::Cluster
@api private Object descrbed 1C cluster
Constants
- DEF_PORT
Deafult 1C:Enterprise cluster TCP port
Public Instance Methods
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 96 def alive_wprocess_get wp_info = wprocesses.select{|p| p.Running == 1 && p.ping?}[0] fail 'No alive working processes found' unless wp_info wp_info end
Attache cluster into server agent @param agent [ServerAgent] @raise (see authenticate
)
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 23 def attach(agent) @sagent = agent unless @sagent ole_set authenticate end
Authenticate cluster user @raise (see ole
)
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 46 def authenticate sagent.Authenticate(ole, user.to_s, password.to_s) self end
@return [String] {DEF_PORT}
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 16 def default_port DEF_PORT end
Delete infobase @param infobase_wrapper [InfoBaseWrapper] infobase wrapper @param mode [Symbol] defines what should do with
infobase's database. See {WpConnection::DROP_MODES}
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 106 def drop_infobase!(infobase_wrapper, mode) wp_connection(infobase_wrapper).drop_infobase!(mode) end
@return [nil Array<Wrappers::Session>] sessions for infobase runned in cluster. nil
if infobase ib_name
not registred in cluster. @param ib_name [String] infobase name @raise (see sagent
)
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 70 def infobase_sessions(ib_name) ib = infobase_find(ib_name) return unless ib sagent.GetInfoBaseSessions(ole, ib).map do |s| Wrappers::Session.new(s, self) end end
@return IClusterInfo
ole object @raise [RuntimeError] if cluster not found on {#sagent} server
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 38 def ole fail ArgumentError, "Cluster `#{host_port}'"\ " not found on server `#{sagent.host_port}'" unless @ole @ole end
@return [ServerAgent] which cluster attached @raise [RuntimeError] unless cluster attached
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 31 def sagent fail 'Cluster must be attachet to ServerAgent' unless @sagent @sagent end
Connect to working process @return [WpConnection] object for comunication with 1C Working
process
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 89 def wp_connection(infobase_wrapper) if !@wp_connection.nil? && !@wp_connection.ping? @wp_connection = nil end @wp_connection ||= alive_wprocess_get.connect(infobase_wrapper) end
All Working processes in cluster @return [Array<Wrappers::WorkingProcessInfo]
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 80 def wprocesses sagent.GetWorkingProcesses(ole).map do |wpi| Wrappers::WorkingProcessInfo.new(wpi, self) end end
Private Instance Methods
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 51 def ole_set @ole = sagent.cluster_find(host, port) ole end