Добавлено редактирование сервера, правил. ДОбавлена проверка на наличие утилиты rac при запуске

This commit is contained in:
Sergey Kalinin
2018-06-15 13:11:09 +03:00
parent 59d808f5a1
commit aa357b45c3
4 changed files with 360 additions and 209 deletions

View File

@@ -352,21 +352,6 @@ proc InsertWorkServerItems {tree id} {
}
}
proc DebugInfo {widget f} {
if {[eof $f]} {
catch [close $f] msg
if {$msg != ""} {
puts $msg
} else {
puts $msg
}
}
while {[gets $f line]>=0} {
puts "$line"
$widget insert {} end -text "$line" -values "$line"
}
}
proc Del {} {
global active_cluster host
set tree .frm_tree.tree
@@ -540,6 +525,9 @@ proc Del::rule {tree host values} {
}
incr i
}
if {[info exists rule_id] == 0 || $rule_id eq ""} {
return
}
set answer [tk_messageBox -message "Удалить требование $rule_id?" \
-icon question -type yesno ]
@@ -640,91 +628,92 @@ proc Add::server {} {
return $frm
}
proc Add::servers {tree host values} {
global default dedicate_manager using_central_server
global default dedicate_managers using
set dedicate_manager "none"
set using_central_server "normal"
#set active_cluster $values
set frm [AddToplevel "Добавление рабочего сервера" server_grey_64]
label $frm.lbl_server_desc -text "Описание сервера"
entry $frm.ent_server_desc
label $frm.lbl_host -text "Адрес сервера"
entry $frm.ent_host
label $frm.lbl_port -text "Порт"
entry $frm.ent_port
$frm.ent_port insert end $default(port)
label $frm.lbl_ports_range -text "Диапазон портов"
entry $frm.ent_ports_range
$frm.ent_ports_range insert end $default(ports_range)
label $frm.lbl_ram_max -text "Максимальный объём памяти раб. процессов"
entry $frm.ent_ram_max
$frm.ent_ram_max insert end $default(ram_max)
label $frm.lbl_ram_sec -text "Безопасный расход памяти за вызов"
entry $frm.ent_ram_sec
$frm.ent_ram_sec insert end $default(ram_sec)
label $frm.lbl_ram_work -text "Объём памяти рабочих процессов"
entry $frm.ent_ram_work
$frm.ent_ram_work insert end $default(ram_work)
label $frm.lbl_base_on_process -text "Количество ИБ на процесс"
entry $frm.ent_base_on_process
$frm.ent_base_on_process insert end $default(base_on_process)
label $frm.lbl_connection_on_process -text "Количество соединений на процесс"
entry $frm.ent_connection_on_process
$frm.ent_connection_on_process insert end $default(connection_on_process)
label $frm.lbl_manager_port -text "Порт главного менеджера кластера"
entry $frm.ent_manager_port
$frm.ent_manager_port insert end $default(port)
label $frm.lbl_manager_each_service -text "Менеджер под каждый сервис"
checkbutton $frm.ent_manager_each_service -variable dedicate_manager -onvalue all -offvalue none
label $frm.lbl_central_server -text "Центральный сервер"
checkbutton $frm.ent_central_server -variable using_central_server -onvalue main -offvalue normal
label $frm.lbl_name -text "Описание сервера"
entry $frm.ent_name
label $frm.lbl_agent_host -text "Адрес сервера"
entry $frm.ent_agent_host
label $frm.lbl_agent_port -text "Порт"
entry $frm.ent_agent_port
$frm.ent_agent_port insert end $default(port)
label $frm.lbl_port_range -text "Диапазон портов"
entry $frm.ent_port_range
$frm.ent_port_range insert end $default(port_range)
label $frm.lbl_safe_working_processes_memory_limit -text "Максимальный объём памяти раб. процессов"
entry $frm.ent_safe_working_processes_memory_limit
$frm.ent_safe_working_processes_memory_limit insert end $default(safe_working_processes_memory_limit)
label $frm.lbl_safe_call_memory_limit -text "Безопасный расход памяти за вызов"
entry $frm.ent_safe_call_memory_limit
$frm.ent_safe_call_memory_limit insert end $default(safe_call_memory_limit)
label $frm.lbl_memory_limit -text "Объём памяти рабочих процессов"
entry $frm.ent_memory_limit
$frm.ent_memory_limit insert end $default(ram_work)
label $frm.lbl_infobases_limit -text "Количество ИБ на процесс"
entry $frm.ent_infobases_limit
$frm.ent_infobases_limit insert end $default(infobases_limit)
label $frm.lbl_connections_limit -text "Количество соединений на процесс"
entry $frm.ent_connections_limit
$frm.ent_connections_limit insert end $default(connections_limit)
label $frm.lbl_cluster_port -text "Порт главного менеджера кластера"
entry $frm.ent_cluster_port
$frm.ent_cluster_port insert end $default(port)
label $frm.lbl_dedicate_managers -text "Менеджер под каждый сервис"
checkbutton $frm.check_dedicate_managers -variable dedicate_managers -onvalue all -offvalue none
label $frm.lbl_using -text "Центральный сервер"
checkbutton $frm.check_using -variable using -onvalue main -offvalue normal
grid $frm.lbl_server_desc -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_server_desc -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_host -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_host -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_ports_range -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_ports_range -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_ram_max -row 4 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_ram_max -row 4 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_ram_sec -row 5 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_ram_sec -row 5 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_ram_work -row 6 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_ram_work -row 6 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_base_on_process -row 7 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_base_on_process -row 7 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_connection_on_process -row 8 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_connection_on_process -row 8 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_manager_port -row 9 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_manager_port -row 9 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_manager_each_service -row 10 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_manager_each_service -row 10 -column 1 -sticky nw -padx 5 -pady 5
grid $frm.lbl_central_server -row 11 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_central_server -row 11 -column 1 -sticky nw -padx 5 -pady 5
grid $frm.lbl_name -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_name -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_agent_host -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_agent_host -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_agent_port -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_agent_port -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port_range -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port_range -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_safe_working_processes_memory_limit -row 4 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_safe_working_processes_memory_limit -row 4 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_safe_call_memory_limit -row 5 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_safe_call_memory_limit -row 5 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_memory_limit -row 6 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_memory_limit -row 6 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_infobases_limit -row 7 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_infobases_limit -row 7 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_connections_limit -row 8 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_connections_limit -row 8 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_cluster_port -row 9 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_cluster_port -row 9 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_dedicate_managers -row 10 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.check_dedicate_managers -row 10 -column 1 -sticky nw -padx 5 -pady 5
grid $frm.lbl_using -row 11 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.check_using -row 11 -column 1 -sticky nw -padx 5 -pady 5
.add.frm_btn.btn_ok configure -command {
RunCommand "" "server insert \
--agent-host=[.add.frm.ent_host get] \
--agent-port=[.add.frm.ent_port get] \
--port-range=[.add.frm.ent_ports_range get] \
--name=[.add.frm.ent_server_desc get] \
--using=$using_central_server \
--infobases-limit=[.add.frm.ent_base_on_process get] \
--memory-limit=[.add.frm.ent_ram_work get] \
--connections-limit=[.add.frm.ent_connection_on_process get] \
--cluster-port=[.add.frm.ent_manager_port get] \
--agent-host=[.add.frm.ent_agent_host get] \
--agent-port=[.add.frm.ent_agent_port get] \
--port-range=[.add.frm.ent_port_range get] \
--name=[.add.frm.ent_name get] \
--using=$using \
--infobases-limit=[.add.frm.ent_infobases_limit get] \
--memory-limit=[.add.frm.ent_memory_limit get] \
--connections-limit=[.add.frm.ent_connections_limit get] \
--cluster-port=[.add.frm.ent_cluster_port get] \
--dedicate-managers=$dedicate_manager \
--safe-working-processes-memory-limit=[.add.frm.ent_ram_max get] \
--safe-call-memory-limit=[.add.frm.ent_ram_sec get] \
--safe-working-processes-memory-limit=[.add.frm.ent_safe_working_processes_memory_limit get] \
--safe-call-memory-limit=[.add.frm.ent_safe_call_memory_limit get] \
--cluster=$active_cluster $host"
Run::servers $tree $host $active_cluster
destroy .add
}
return $frm
}
proc Add::work_server {tree host values} {
Add::servers $tree $host $values
return [Add::servers $tree $host $values]
}
proc Add::infobase {tree host values} {
Add::infobases $tree $host $values
@@ -923,37 +912,39 @@ proc Add::cluster {tree host values} {
}
proc Add::rule {tree host values} {
global default active_cluster object infobase type server
global default active_cluster object infobase object_type server infobase_name rule_type
set server $values
set frm [AddToplevel "Требование назначения функциональности" functional_grey_64]
set type [lindex $default(type) 0]
#set type [lindex $default(obtype) 0]
label $frm.lbl_object -text "Объект требования"
set combo_object [ttk::combobox $frm.cb_object \
-textvariable object -values $default(object)]
label $frm.lbl_type -text "Тип требования"
set combo_type [ttk::combobox $frm.cb_type \
-textvariable type -values $default(type)]
label $frm.lbl_infobase -text "Имя ИБ"
set combo_infobase [ttk::combobox $frm.cb_infobase \
-textvariable infobase -values [GetInfobases $active_cluster $host]]
label $frm.lbl_object_type -text "Объект требования"
ttk::combobox $frm.cb_object_type -textvariable object_type \
-values $default(object_type)]
label $frm.lbl_par -text "Значение доп. параметра"
entry $frm.ent_par
label $frm.lbl_rule_type -text "Тип требования"
ttk::combobox $frm.cb_rule_type -textvariable rule_type \
-values $default(rule_type)]
label $frm.lbl_infobase_name -text "Имя ИБ"
ttk::combobox $frm.cb_infobase_name -textvariable infobase_name \
-values [GetInfobases $active_cluster $host]]
label $frm.lbl_application_ext -text "Значение доп. параметра"
entry $frm.ent_application_ext
label $frm.lbl_priority -text "Приоритет"
entry $frm.ent_priority
$frm.ent_priority insert end $default(priority)
grid $frm.lbl_object -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_object -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_type -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_type -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_infobase -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_infobase -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_par -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_par -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_object_type -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_object_type -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_rule_type -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_rule_type -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_infobase_name -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_infobase_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_application_ext -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_application_ext -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_priority -row 4 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_priority -row 4 -column 1 -sticky nsew -padx 5 -pady 5
@@ -962,14 +953,15 @@ proc Add::rule {tree host values} {
--cluster=$active_cluster \
--server=$server \
--position=0 \
--object-type=$object \
--infobase-name=$infobase \
--rule-type=$type \
--application-ext=[.add.frm.ent_par get] \
--object-type=$object_type \
--infobase-name=$infobase_name \
--rule-type=$rule_type \
--application-ext=[.add.frm.ent_application_ext get] \
--priority=[.add.frm.ent_priority get] $host"
Run::rule $tree $host $server
destroy .add
}
return $frm
}
proc GetInfobases {cluster host} {
@@ -1035,7 +1027,7 @@ proc Edit::server {tree host value} {
close $file
close $orig_file
#return "$host:$port"
file delete [file join $dir(work) 1c_srv.cfg.bak]
file delete [file join $dir(work) rac_gui .cfg.bak]
destroy .add
return $host
}
@@ -1092,8 +1084,28 @@ proc Edit::cluster {tree host values} {
destroy .add
}
}
proc Edit::infobases {tree host values} {
set work_tree_id [.frm_work.tree_work selection]
set work_tree_values [.frm_work.tree_work item $work_tree_id -values]
set id [.frm_tree.tree selection]
#set values [.frm_tree.tree item $id -values]
set key [lindex [split $id "::"] 0]
set column_list [.frm_work.tree_work cget -columns]
set i 0
# проверка соответсвия колонки в таблице и ключа в дереве
foreach l $column_list {
if {$l eq "infobase" } {
set infobase [lindex $work_tree_values $i]
}
incr i
}
if {[info exists infobase] == 0 || $infobase eq ""} {
return
}
Edit::infobase $tree $host $infobase
}
proc Edit::infobase {tree host values} {
global default active_cluster infobase
global default active_cluster infobase
global security_level dbms scheduled_jobs_deny license_distribution date_offset
global sessions_deny
set infobase $values
@@ -1174,6 +1186,8 @@ proc Edit::infobase {tree host values} {
set $entry_name no
} elseif {$value eq "1"} {
set $entry_name yes
} else {
set $entry_name $value
}
}
}
@@ -1207,3 +1221,129 @@ proc Edit::infobase {tree host values} {
destroy .add
}
}
proc Edit::servers {tree host values} {
set work_tree_id [.frm_work.tree_work selection]
set work_tree_values [.frm_work.tree_work item $work_tree_id -values]
set id [.frm_tree.tree selection]
#set values [.frm_tree.tree item $id -values]
set key [lindex [split $id "::"] 0]
set column_list [.frm_work.tree_work cget -columns]
set i 0
# проверка соответсвия колонки в таблице и ключа в дереве
foreach l $column_list {
if {$l eq "server" } {
set work_server [lindex $work_tree_values $i]
}
incr i
}
if {[info exists work_server] == 0 || $work_server eq ""} {
return
}
Edit::work_server $tree $host $work_server
}
proc Edit::work_server {tree host values} {
global default active_cluster
global default dedicate_managers using
set server $values
set frm [Add::work_server $tree $host $values]
$frm configure -text "Редактирование рабочего сервера"
set lst [RunCommand cluster::$values "server info --cluster=$active_cluster --server=$server $host"]
foreach i [lindex $lst 0] {
if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] {
regsub -all -- "-" [string trim $param] "_" entry_name
if [winfo exists .add.frm.ent_$entry_name] {
.add.frm.ent_$entry_name delete 0 end
.add.frm.ent_$entry_name insert end [string trim $value "\""]
}
if [winfo exists .add.frm.cb_$entry_name] {
set $entry_name [string trim $value "\""]
}
if [winfo exists .add.frm.check_$entry_name] {
set $entry_name $value
}
}
}
.add.frm.lbl_agent_port configure -state disable
.add.frm.ent_agent_port configure -state disable
.add.frm.lbl_port_range configure -state disable
.add.frm.ent_port_range configure -state disable
.add.frm.lbl_name configure -state disable
.add.frm.ent_name configure -state disable
.add.frm.lbl_cluster_port configure -state disable
.add.frm.ent_cluster_port configure -state disable
.add.frm_btn.btn_ok configure -command {
RunCommand "" "server update \
--server=$server \
--using=$using \
--infobases-limit=[.add.frm.ent_infobases_limit get] \
--memory-limit=[.add.frm.ent_memory_limit get] \
--connections-limit=[.add.frm.ent_connections_limit get] \
--dedicate-managers=$dedicate_managers \
--safe-working-processes-memory-limit=[.add.frm.ent_safe_working_processes_memory_limit get] \
--safe-call-memory-limit=[.add.frm.ent_safe_call_memory_limit get] \
--cluster=$active_cluster $host"
Run::servers $tree $host $active_cluster
destroy .add
}
}
proc Edit::rule {tree host values} {
global default active_cluster object_type infobase_name object_type server infobase_name rule_type rule
set work_tree_id [.frm_work.tree_work selection]
set work_tree_values [.frm_work.tree_work item $work_tree_id -values]
set id [.frm_tree.tree selection]
#set values [.frm_tree.tree item $id -values]
set key [lindex [split $id "::"] 0]
set column_list [.frm_work.tree_work cget -columns]
set i 0
# проверка соответсвия колонки в таблице и ключа в дереве
foreach l $column_list {
if {$l eq "rule" } {
set rule [lindex $work_tree_values $i]
}
incr i
}
if {[info exists rule] == 0 || $rule eq ""} {
return
}
set frm [Add::rule $tree $host $server]
$frm configure -text "Редактирование требования назначения функциональности"
puts "cluster = $active_cluster\nserver=$server\nrule=$rule"
set lst [RunCommand "" "rule info --cluster=$active_cluster --server=$server --rule=$rule $host"]
foreach i [lindex $lst 0] {
if [regexp -nocase -all -- {(\D+)(\s*?|)(:)(\s*?|)(.*)} $i match param v2 v3 v4 value] {
regsub -all -- "-" [string trim $param] "_" entry_name
if [winfo exists .add.frm.ent_$entry_name] {
.add.frm.ent_$entry_name delete 0 end
.add.frm.ent_$entry_name insert end [string trim $value "\""]
}
if [winfo exists .add.frm.cb_$entry_name] {
set $entry_name [string trim $value "\""]
}
if [winfo exists .add.frm.check_$entry_name] {
set $entry_name $value
}
}
}
.add.frm_btn.btn_ok configure -command {
RunCommand "" "rule update \
--cluster=$active_cluster \
--server=$server \
--rule=$rule \
--position=0 \
--object-type=$object_type \
--infobase-name=$infobase_name \
--rule-type=$rule_type \
--application-ext=[.add.frm.ent_application_ext get] \
--priority=[.add.frm.ent_priority get] $host"
Run::rule $tree $host $server
destroy .add
}
}