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

ib[RW]
infobase[RW]

Public Class Methods

new(infobase) click to toggle source
# File lib/ass_maintainer/info_base/server_ib.rb, line 201
def initialize(infobase)
  self.infobase = infobase
end

Public Instance Methods

clusters() click to toggle source

@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
drop_infobase!(mode) click to toggle source

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
exists?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib.rb, line 214
def exists?
  clusters.size > 0
end
ib_ref() click to toggle source

Helper

# File lib/ass_maintainer/info_base/server_ib.rb, line 259
def ib_ref
  ib.connection_string.ref
end
sagent() click to toggle source

@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
session_get(id) click to toggle source

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
sessions() click to toggle source

@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
terminate(session) click to toggle source

@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
wp_connection() click to toggle source
# 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

cs_clusters() click to toggle source
# 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
cs_servers() click to toggle source
# 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
fail_multiple_servers_not_support() click to toggle source
# 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
sagent_get() click to toggle source

@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