<!-- start create - menu -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "title" >
#!string!striker_0203!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td class = "main_option_icon" >
< a href = "?anvil=true&task=fences" > < img src = "#!data!skin::url!#/images/fence.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
< a href = "?anvil=true&task=fences" > #!string!striker_0208!#< / a >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< a href = "?anvil=true&task=upses" > < img src = "#!data!skin::url!#/images/ups.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
< a href = "?anvil=true&task=upses" > #!string!striker_0231!# #!string!striker_0237!#< / a >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< a href = "?anvil=true&task=manifests&manifest_uuid=new&step=1" > < img src = "#!data!skin::url!#/images/manifest.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
< a href = "?anvil=true&task=manifests&manifest=new" > #!string!striker_0204!#< / a >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< / td >
< td >
#!string!striker_0205!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "main_option" col >
< table >
< div id = "existing_manifests" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
#!string!striker_0207!#
< / td >
< td class = "column_header" >
#!string!striker_0206!#
< / td >
< td class = "column_header" >
#!string!header_0022!#
< / td >
< / tr >
#!variable!existing_manifests!#
< / div >
< / table >
< / td >
< / tr >
< / table >
<!-- end create - menu -->
<!-- start run - manifest - network -->
< tr >
< td class = "column_header" >
<!-- Network name -->
#!variable!name!#:
< / td >
< td class = "column_row_value_fixed" >
<!-- Network -->
#!variable!network!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- Subnet -->
#!variable!subnet!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- Gateway -->
#!variable!gateway!# #!variable!default!#
< / td >
< / tr >
<!-- end run - manifest - network -->
<!-- start run - manifest - ip -->
< tr >
< td class = "column_header" >
<!-- Network name -->
#!variable!name!#:
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 1 -->
#!variable!node1!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 2 -->
#!variable!node2!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- DR Host -->
#!variable!dr1!#
< / td >
< / tr >
<!-- end run - manifest - ip -->
<!-- start run - manifest - fence -->
< tr >
< td class = "column_header" >
<!-- Fence name -->
#!variable!name!#:
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 1 -->
#!variable!node1!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 2 -->
#!variable!node2!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- DR Host isn't tracked yet, but it might be in the future -->
<!-- #!variable!dr1!# -->
< / td >
< / tr >
<!-- end run - manifest - fence -->
<!-- start run - manifest - ups -->
< tr >
< td class = "column_header" >
<!-- UPS name -->
#!variable!name!#:
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 1 -->
#!variable!node1!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- Node 2 -->
#!variable!node2!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
<!-- DR Host isn't tracked yet, but it might be in the future -->
<!-- #!variable!dr1!# -->
< / td >
< / tr >
<!-- end run - manifest - ups -->
<!-- start run - manifest -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "title" >
#!variable!title!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "description" >
#!string!striker_0268!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td >
< form name = "run_manifest" action = "" method = "post" >
< table align = "center" class = "anvil_main_menu" >
< tr >
< td class = "column_header" >
<!-- Anvil! Description -->
#!string!header_0040!#:
< / td >
< td colspan = "5" >
< input type = "text" name = "description" id = "description" value = "#!variable!description!#" placeholder = "#!string!striker_0275!#" class = "#!variable!description_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- Password -->
#!string!header_0030!#:
< / td >
< td colspan = "5" >
<!-- This combination of input type text, disk characters and autocomplete=off prevents browsers from pre - filling password and offering to save passwords. -->
< input type = "text" name = "password1" id = "password1" value = "#!variable!password1!#" autocomplete = "off" placeholder = "#!string!striker_0271!#" class = "#!variable!password_class!#" style = "text-security:disc; -webkit-text-security:disc;" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- Confirm Password -->
#!string!header_0031!#:
< / td >
< td colspan = "5" >
< input type = "text" name = "password2" id = "password2" value = "#!variable!password2!#" autocomplete = "off" placeholder = "#!string!header_0031!#" class = "#!variable!password_class!#" style = "text-security:disc; -webkit-text-security:disc;" / >
< / td >
< / tr >
< tr >
< td colspan = "6" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "column_header" >
<!-- Node 1 -->
#!string!striker_0255!#
< / td >
< td >
< / td >
< td class = "column_header" >
<!-- Node 2 -->
#!string!striker_0256!#
< / td >
< td >
< / td >
< td class = "column_header" >
<!-- DR Host -->
#!string!striker_0257!#
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- Machine -->
#!string!header_0029!#:
< / td >
< td >
#!variable!select_node1!#
< / td >
< td >
< / td >
< td >
#!variable!select_node2!#
< / td >
< td >
< / td >
< td >
#!variable!select_dr1!#
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- New Hostname -->
#!string!header_0039!#:
< / td >
< td class = "column_row_value_fixed" >
#!variable!hostname_node1!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
#!variable!hostname_node2!#
< / td >
< td >
< / td >
< td class = "column_row_value_fixed" >
#!variable!hostname_dr1!#
< / td >
< / tr >
#!variable!machine_ips!#
< tr >
< td colspan = "6" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "column_header" colspan = "5" >
<!-- Fence Port -->
#!string!striker_0262!#:
< / td >
< / tr >
#!variable!fences!#
< tr >
< td colspan = "6" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "column_header" colspan = "5" >
<!-- UPSes -->
#!string!striker_0264!#:
< / td >
< / tr >
#!variable!upses!#
< tr >
< td colspan = "6" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "column_header" >
<!-- Network -->
#!string!striker_0149!#
< / td >
< td >
< / td >
< td class = "column_header" >
<!-- Subnet -->
#!string!striker_0025!#
< / td >
< td >
< / td >
< td class = "column_header" >
<!-- Gateway -->
#!string!striker_0026!#
< / td >
< / tr >
#!variable!networks!#
< tr >
< td >
< / td >
< td class = "column_header" colspan = "5" >
<!-- Network Common -->
#!string!header_0035!#
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- DNS -->
#!string!header_0032!#:
< / td >
< td class = "column_row_value_fixed" colspan = "5" >
#!variable!dns!#
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- NTP -->
#!string!header_0033!#:
< / td >
< td class = "column_row_value_fixed" colspan = "5" >
#!variable!ntp!#
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- MTU -->
#!string!header_0034!#:
< / td >
< td class = "column_row_value_fixed" colspan = "5" >
#!variable!mtu!#
< / td >
< / tr >
< tr >
< td colspan = "6" >
< / td >
< / tr >
< tr >
< td colspan = "3" >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td colspan = "3" style = "text-align: right;" >
< input type = "submit" name = "confirm" id = "confirm" value = "#!string!striker_0206!#" class = "button" >
< / td >
< input type = "hidden" name = "run" id = "run" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "manifests" >
< input type = "hidden" name = "manifest_uuid" id = "manifest_uuid" value = "#!data!cgi::manifest_uuid::value!#" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Notes -->
#!string!striker_0269!#:
< / td >
< td >
#!string!striker_0272!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
< / td >
< td >
#!string!striker_0273!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
< / td >
< td >
#!string!striker_0274!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
<!-- end run - manifest -->
<!-- start create - menu - existing - manifest - entry -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td >
< a href = "?anvil=true&task=manifests&manifest_uuid=#!variable!manifest_uuid!#&step=1" class = "fixed_link_highlight" > #!variable!manifest_name!#< / a >
< / td >
< td style = "text-align: center;" >
< a href = "?anvil=true&task=manifests&run=true&manifest_uuid=#!variable!manifest_uuid!#" > < img src = "#!data!skin::url!#/images/run.png" alt = "#!string!striker_0206!#" style = "height: .8em;" > < / a >
< / td >
< td style = "text-align: center;" >
< a href = "?anvil=true&task=manifests&delete=true&manifest_uuid=#!variable!manifest_uuid!#" > < img src = "#!data!skin::url!#/images/delete.png" alt = "#!string!striker_0068!#" style = "height: .8em;" > < / a >
< / td >
< / tr >
<!-- end create - menu - existing - manifest - entry -->
<!-- start manifest - step1 -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "title" >
#!variable!title!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "description" >
#!string!striker_0227!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td >
< form name = "manifest_step1" action = "" method = "post" >
< table align = "center" class = "anvil_main_menu" >
< tr >
< td class = "column_header" >
<!-- prefix -->
#!string!striker_0228!#
< / td >
< td >
< input type = "text" name = "prefix" id = "prefix" value = "#!variable!prefix!#" placeholder = "xx" class = "#!variable!prefix_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- domain -->
#!string!striker_0007!#
< / td >
< td >
< input type = "text" name = "domain" id = "domain" value = "#!variable!domain!#" placeholder = "example.com" class = "#!variable!domain_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- Sequence -->
#!string!striker_0229!#
< / td >
< td >
< input type = "number" name = "sequence" id = "sequence" value = "#!variable!sequence!#" placeholder = "1" class = "#!variable!sequence_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- IFN Count -->
#!string!striker_0230!#
< / td >
< td >
< input type = "number" name = "ifn_count" id = "ifn_count" value = "#!variable!ifn_count!#" placeholder = "1" class = "#!variable!ifn_count_class!#" / >
<!-- Note: Currently, the user can't choose the number of BCN and SNs. However, this may change later, so we already setup for it. -->
< input type = "hidden" name = "sn_count" id = "sn_count" value = "#!variable!sn_count!#" / >
< input type = "hidden" name = "bcn_count" id = "bcn_count" value = "#!variable!bcn_count!#" / >
< input type = "hidden" name = "mn_count" id = "mn_count" value = "#!variable!mn_count!#" / >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td style = "text-align: right;" >
< input type = "submit" name = "next" id = "next" value = "#!string!striker_0013!#" class = "button" >
< / td >
< input type = "hidden" name = "step" id = "step" value = "2" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "manifests" >
< input type = "hidden" name = "manifest_uuid" id = "manifest_uuid" value = "#!data!cgi::manifest_uuid::value!#" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Prefix -->
#!string!striker_0228!#
< / td >
< td >
#!string!striker_0246!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Domain -->
#!string!striker_0007!#
< / td >
< td >
#!string!striker_0247!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Sequence -->
#!string!striker_0229!#
< / td >
< td >
#!string!striker_0244!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- IFN Count -->
#!string!striker_0230!#
< / td >
< td >
#!string!striker_0245!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Password note -->
#!string!striker_0051!#
< / td >
< td >
#!string!striker_0259!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
<!-- end manifest - step1 -->
<!-- start manifest - step2 - network - entry -->
< tr >
< td class = "column_header" >
<!-- Network Name -->
#!variable!network!#:
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!network_name!#" id = "#!variable!network_name!#" value = "#!variable!network_value!#" width = "15" style = "width: 15em;" class = "#!variable!network_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
#!variable!subnet!#
< / td >
< td class = "fixed_width_no_wrap" >
< / td >
< / tr >
<!-- end manifest - step2 - network - entry -->
<!-- start manifest - step2 - network - entry - gateway -->
< tr >
< td class = "column_header" >
<!-- Network Name -->
#!variable!network!#:
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!network_name!#" id = "#!variable!network_name!#" value = "#!variable!network_value!#" width = "15" style = "width: 15em;" class = "#!variable!network_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
#!variable!subnet!#
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!gateway_name!#" id = "#!variable!gateway_name!#" value = "#!variable!gateway_value!#" width = "15" style = "width: 15em;" class = "#!variable!gateway_class!#" / >
< / td >
< / tr >
<!-- end manifest - step2 - network - entry - gateway -->
<!-- start manifest - step2 -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "title" >
#!variable!title!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "description" >
#!string!striker_0248!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td >
< form name = "manifest_step2" action = "" method = "post" >
< table align = "center" class = "anvil_main_menu" >
< tr >
< td class = "column_header" >
<!-- Network Name -->
< / td >
< td class = "column_header" >
<!-- Network -->
#!string!striker_0149!#
< / td >
< td class = "column_header" >
<!-- Subnet Mask -->
#!string!striker_0025!#
< / td >
< td class = "column_header" >
<!-- Gateway -->
#!string!striker_0026!#
< / td >
< / tr >
#!variable!networks!#
< tr >
< td colspan = "4" >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- DNS -->
#!string!striker_0037!#
< / td >
< td colspan = "3" >
< input type = "text" name = "dns" id = "dns" value = "#!variable!dns!#" style = "width: 30em;" class = "#!variable!dns_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- NTP -->
#!string!striker_0251!#
< / td >
< td colspan = "3" >
< input type = "text" name = "ntp" id = "ntp" value = "#!variable!ntp!#" style = "width: 30em;" class = "#!variable!ntp_class!#" / >
< / td >
< / tr >
< tr >
< td class = "column_header" >
<!-- MTU -->
#!string!striker_0253!#
< / td >
< td colspan = "3" >
< input type = "number" name = "mtu" id = "mtu" value = "#!variable!mtu!#" style = "width: 30em;" class = "#!variable!mtu_class!#" / >
< / td >
< / tr >
< tr >
< td colspan = "4" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td colspan = "2" style = "text-align: right;" >
< input type = "submit" name = "next" id = "next" value = "#!string!striker_0013!#" class = "button" >
< / td >
< input type = "hidden" name = "prefix" id = "prefix" value = "#!data!cgi::prefix::value!#" >
< input type = "hidden" name = "domain" id = "domain" value = "#!data!cgi::domain::value!#" >
< input type = "hidden" name = "sequence" id = "sequence" value = "#!data!cgi::sequence::value!#" >
< input type = "hidden" name = "bcn_count" id = "bcn_count" value = "#!data!cgi::bcn_count::value!#" >
< input type = "hidden" name = "sn_count" id = "sn_count" value = "#!data!cgi::sn_count::value!#" >
< input type = "hidden" name = "ifn_count" id = "ifn_count" value = "#!data!cgi::ifn_count::value!#" >
< input type = "hidden" name = "mn_count" id = "mn_count" value = "#!data!cgi::mn_count::value!#" >
< input type = "hidden" name = "step" id = "step" value = "3" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "manifests" >
< input type = "hidden" name = "manifest_uuid" id = "manifest_uuid" value = "#!data!cgi::manifest_uuid::value!#" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Network -->
#!string!striker_0149!#
< / td >
< td >
#!string!message_0163!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Subnet Mask -->
#!string!striker_0025!#
< / td >
< td >
#!string!message_0164!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Gateway -->
#!string!striker_0026!#
< / td >
< td >
#!string!message_0165!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- DNS -->
#!string!striker_0037!#
< / td >
< td >
#!string!striker_0038!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- NTP -->
#!string!striker_0251!#
< / td >
< td >
#!string!striker_0252!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- MTU -->
#!string!striker_0253!#
< / td >
< td >
#!string!striker_0254!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- BCN -->
#!string!message_0160!#
< / td >
< td >
#!string!message_0131!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- SN -->
#!string!message_0161!#
< / td >
< td >
#!string!message_0132!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- IFN -->
#!string!message_0162!#
< / td >
< td >
#!string!message_0133!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
<!-- end manifest - step2 -->
<!-- start manifest - step3 - network - entry -->
< tr >
< td class = "column_header" >
<!-- Network Name -->
#!variable!network!#:
< input type = "hidden" name = "#!variable!network_name!#" id = "#!variable!network_name!#" value = "#!variable!network_value!#" / >
< input type = "hidden" name = "#!variable!subnet_name!#" id = "#!variable!subnet_name!#" value = "#!variable!subnet_value!#" / >
< input type = "hidden" name = "#!variable!gateway_name!#" id = "#!variable!gateway_name!#" value = "#!variable!gateway_value!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!node1_ip_name!#" id = "#!variable!node1_ip_name!#" value = "#!variable!node1_ip_value!#" width = "15" style = "width: 15em;" class = "#!variable!node1_ip_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!node2_ip_name!#" id = "#!variable!node2_ip_name!#" value = "#!variable!node2_ip_value!#" width = "15" style = "width: 15em;" class = "#!variable!node2_ip_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!dr1_ip_name!#" id = "#!variable!dr1_ip_name!#" value = "#!variable!dr1_ip_value!#" width = "15" style = "width: 15em;" class = "#!variable!dr1_ip_class!#" / >
< / td >
< / tr >
<!-- end manifest - step3 - network - entry -->
<!-- start manifest - step3 - ipmi - entry -->
< tr >
< td class = "column_header" >
<!-- Network Name -->
#!string!striker_0258!#:
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "node1_ipmi_ip" id = "node1_ipmi_ip" value = "#!variable!node1_value!#" width = "15" style = "width: 15em;" class = "#!variable!node1_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "node2_ipmi_ip" id = "node2_ipmi_ip" value = "#!variable!node2_value!#" width = "15" style = "width: 15em;" class = "#!variable!node2_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "dr1_ipmi_ip" id = "dr1_ipmi_ip" value = "#!variable!dr1_value!#" width = "15" style = "width: 15em;" class = "#!variable!dr1_class!#" / >
< / td >
< / tr >
<!-- end manifest - step3 - ipmi - entry -->
<!-- start manifest - step3 - fence - entry -->
< tr >
< td class = "column_header" >
<!-- Fence Name -->
#!variable!name!#:
< input type = "hidden" name = "#!variable!fence_uuid_name!#" id = "#!variable!fence_uuid_name!#" value = "#!variable!fence_uuid_value!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!node1_fence_name!#" id = "#!variable!node1_fence_name!#" value = "#!variable!node1_fence_value!#" style = "width: 15em;" class = "#!variable!node1_fence_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "text" name = "#!variable!node2_fence_name!#" id = "#!variable!node2_fence_name!#" value = "#!variable!node2_fence_value!#" style = "width: 15em;" class = "#!variable!node2_fence_class!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
<!-- For now, we don't care about DR fencing, Maybe this will change later -->
<!-- <input type="text" name="#!variable!dr1_fence_name!#" id="#!variable!dr1_fence_name!#" value="#!variable!dr1_fence_value!#" style="width: 15em;" class="#!variable!dr1_fence_class!#" /> -->
< / td >
< / tr >
<!-- end manifest - step3 - fence - entry -->
<!-- start manifest - step3 - ups - entry -->
< tr >
< td class = "column_header" >
<!-- UPS Name -->
#!variable!name!#:
< input type = "hidden" name = "#!variable!ups_uuid_name!#" id = "#!variable!ups_uuid_name!#" value = "#!variable!ups_uuid_value!#" / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "checkbox" name = "#!variable!node1_ups_name!#" id = "#!variable!node1_ups_name!#" # ! variable ! node1_ups_checked ! # / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "checkbox" name = "#!variable!node2_ups_name!#" id = "#!variable!node2_ups_name!#" # ! variable ! node2_ups_checked ! # / >
< / td >
< td class = "fixed_width_no_wrap" >
<!-- For now, we don't care about DR's UPSes, Maybe this will change later -->
<!-- <input type="checkbox" name="#!variable!dr1_ups_name!#" id="#!variable!dr1_ups_name!#" #!variable!dr1_ups_checked!# /> -->
< / td >
< / tr >
<!-- end manifest - step3 - ups - entry -->
<!-- start manifest - step3 - ups - null - entry -->
< tr >
< td class = "column_header" >
<!-- No UPS -->
#!string!striker_0277!#:
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "checkbox" name = "null" disabled / >
< / td >
< td class = "fixed_width_no_wrap" >
< input type = "checkbox" name = "null" disabled / >
< / td >
< td class = "fixed_width_no_wrap" >
< / td >
< / tr >
<!-- end manifest - step3 - ups - null - entry -->
<!-- start manifest - step3 -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "title" >
#!variable!title!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td class = "description" >
#!string!striker_0250!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td >
< form name = "manifest_step3" action = "" method = "post" >
< table align = "center" class = "anvil_main_menu" >
<!-- IPs -->
< tr >
< td class = "column_header" >
<!-- Variable -->
< / td >
< td class = "column_header" >
<!-- Node 1 -->
#!string!striker_0255!#
< / td >
< td class = "column_header" >
<!-- Node 2 -->
#!string!striker_0256!#
< / td >
< td class = "column_header" >
<!-- DR Host -->
#!string!striker_0257!#
< / td >
< / tr >
#!variable!networks!#
<!-- Fences -->
< tr >
< td class = "column_header" >
<!-- Fence Name -->
< / td >
< td class = "column_header" >
<!-- Node 1 -->
#!string!striker_0262!#
< / td >
< td class = "column_header" >
<!-- Node 2 -->
#!string!striker_0262!#
< / td >
< td class = "column_header" >
<!-- DR Host -->
<!-- For now, we don't care about DR fencing, Maybe this will change later -->
<!-- #!string!striker_0262!# -->
< / td >
< / tr >
#!variable!fences!#
<!-- UPSes -->
< tr >
< td class = "column_header" >
<!-- UPS Name -->
< / td >
< td class = "column_header" >
<!-- Node 1 -->
#!string!striker_0264!#
< / td >
< td class = "column_header" >
<!-- Node 2 -->
#!string!striker_0264!#
< / td >
< td class = "column_header" >
<!-- DR Host -->
<!-- For now, we don't care about DR fencing, Maybe this will change later -->
<!-- #!string!striker_0264!# -->
< / td >
< / tr >
#!variable!upses!#
< tr >
< td colspan = "4" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td colspan = "2" style = "text-align: right;" >
< input type = "submit" name = "next" id = "next" value = "#!string!striker_0013!#" class = "button" >
< / td >
< input type = "hidden" name = "prefix" id = "prefix" value = "#!data!cgi::prefix::value!#" >
< input type = "hidden" name = "domain" id = "domain" value = "#!data!cgi::domain::value!#" >
< input type = "hidden" name = "sequence" id = "sequence" value = "#!data!cgi::sequence::value!#" >
< input type = "hidden" name = "bcn_count" id = "bcn_count" value = "#!data!cgi::bcn_count::value!#" >
< input type = "hidden" name = "sn_count" id = "sn_count" value = "#!data!cgi::sn_count::value!#" >
< input type = "hidden" name = "ifn_count" id = "ifn_count" value = "#!data!cgi::ifn_count::value!#" >
< input type = "hidden" name = "mn_count" id = "mn_count" value = "#!data!cgi::mn_count::value!#" >
< input type = "hidden" name = "dns" id = "dns" value = "#!data!cgi::dns::value!#" / >
< input type = "hidden" name = "ntp" id = "ntp" value = "#!data!cgi::ntp::value!#" / >
< input type = "hidden" name = "mtu" id = "mtu" value = "#!data!cgi::mtu::value!#" / >
< input type = "hidden" name = "step" id = "step" value = "4" >
< input type = "hidden" name = "reload" id = "reload" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "manifests" >
< input type = "hidden" name = "manifest_uuid" id = "manifest_uuid" value = "#!data!cgi::manifest_uuid::value!#" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
#!variable!network_note!#
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- IPMI IP -->
#!string!striker_0258!#
< / td >
< td >
#!string!striker_0261!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- IPMI Note -->
#!string!striker_0260!#
< / td >
< td >
#!string!striker_0266!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Fence Note -->
#!string!striker_0262!#
< / td >
< td >
#!string!striker_0263!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- UPS Note -->
#!string!striker_0264!#
< / td >
< td >
#!string!striker_0265!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
<!-- end manifest - step3 -->
<!-- start manifest - step3 - network - note - entry -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
#!variable!name!#
< / td >
< td >
#!variable!message!#
< / td >
< / tr >
<!-- end manifest - step3 - network - note - entry -->
<!-- start fence - agent - configuration -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/fence.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0215!#
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< / td >
< td class = "subtle_text" >
#!variable!note!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "description" >
#!variable!description!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "subtle_text" style = "text-align: right;" >
< span class = "say_required" > #!string!striker_0219!#< / span >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "fence_configuration" action = "" method = "post" >
< table class = "centered" >
#!variable!options!#
< tr >
< td colspan = "3" >
< input type = "submit" name = "save" id = "save" value = "#!string!striker_0067!#" class = "button" >
< input type = "hidden" name = "fence_agent" id = "fence_agent" value = "#!data!cgi::fence_agent::value!#" >
< input type = "hidden" name = "fence_count" id = "fence_count" value = "#!data!cgi::fence_count::value!#" >
< input type = "hidden" name = "add" id = "add" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "fences" >
< / td >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / table >
<!-- end fence - agent - configuration -->
<!-- start ups - option - menu -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td >
#!variable!device!#
< / td >
< td class = "column_row_centered_input" >
< input type = "text" name = "#!variable!name_key!#" id = "#!variable!name_key!#" placeholder = "#!string!striker_0016!#" value = "#!variable!name!#" / >
< / td >
< td class = "column_row_centered_input" >
< input type = "text" name = "#!variable!ip_address_key!#" id = "#!variable!ip_address_key!#" placeholder = "#!string!striker_0024!#" value = "#!variable!ip_address!#" / >
< / td >
< td >
#!variable!agent!#
< / td >
< / tr >
< input type = "hidden" name = "#!variable!fence_uuid_key!#" id = "#!variable!fence_uuid_key!#" value = "#!variable!fence_uuid!#" / >
<!-- end ups - option - menu -->
<!-- start ups - option - menu - confirm -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td >
#!variable!device!#
< / td >
< td class = "column_row_centered_input" >
#!variable!name!#
< input type = "hidden" name = "#!variable!name_key!#" id = "#!variable!name_key!#" value = "#!variable!name!#" / >
< / td >
< td class = "column_row_centered_input" >
#!variable!ip_address!#
< input type = "hidden" name = "#!variable!ip_address_key!#" id = "#!variable!ip_address_key!#" value = "#!variable!ip_address!#" / >
< / td >
< td >
#!variable!say_agent!#
< input type = "hidden" name = "#!variable!agent_key!#" id = "#!variable!agent_key!#" value = "#!variable!agent!#" / >
< / td >
< / tr >
< input type = "hidden" name = "#!variable!fence_uuid_key!#" id = "#!variable!fence_uuid_key!#" value = "#!variable!fence_uuid!#" / >
<!-- end ups - option - menu - confirm -->
<!-- start ups - configuration -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/ups.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0240!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "description" >
#!variable!description!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "ups_configuration" action = "" method = "post" >
< table class = "centered" >
< tr >
< td class = "column_header" >
< / td >
< td class = "column_header" >
<!-- Name -->
#!string!header_0026!#
< / td >
< td class = "column_header" >
<!-- IP Address -->
#!string!header_0025!#
< / td >
< td class = "column_header" >
<!-- Brand (agent) -->
#!string!header_0027!#
< / td >
< / tr >
#!variable!upses!#
< tr >
< td colspan = "4" class = "button_cell" >
< input type = "submit" name = "save" id = "save" value = "#!string!striker_0067!#" class = "button" >
< input type = "hidden" name = "ups_agent" id = "ups_agent" value = "#!data!cgi::ups_agent::value!#" >
< input type = "hidden" name = "ups_count" id = "ups_count" value = "#!data!cgi::ups_count::value!#" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "upses" >
< / td >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Name -->
#!string!header_0026!#
< / td >
< td >
#!string!striker_0235!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- IP Address -->
#!string!header_0025!#
< / td >
< td >
#!string!striker_0241!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td class = "column_header" >
<!-- Brand (agent) -->
#!string!header_0027!#
< / td >
< td >
#!string!striker_0242!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< / table >
<!-- end ups - configuration -->
<!-- start ups - configuration - confirm -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/ups.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0243!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "description" >
#!variable!confirm!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "ups_configuration" action = "" method = "post" >
< table class = "centered" >
< tr >
< td class = "column_header" >
< / td >
< td class = "column_header" >
<!-- Name -->
#!string!header_0026!#
< / td >
< td class = "column_header" >
<!-- IP Address -->
#!string!header_0025!#
< / td >
< td class = "column_header" >
<!-- Brand (agent) -->
#!string!header_0027!#
< / td >
< / tr >
#!variable!upses!#
< tr >
< td colspan = "4" class = "button_cell" >
< input type = "submit" name = "confirm" id = "confirm" value = "#!string!striker_0082!#" class = "button" >
< input type = "hidden" name = "ups_count" id = "ups_count" value = "#!data!cgi::ups_count::value!#" >
< input type = "hidden" name = "save" id = "save" value = "true" >
< input type = "hidden" name = "confirm" id = "confirm" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "upses" >
< / td >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< / table >
<!-- end ups - configuration - confirm -->
<!-- start fence - agent - row -->
< tr >
#!variable!columns!#
< / tr >
<!-- end fence - agent - row -->
<!-- start fence - agent - column -->
< td class = "column_row_value_centered_border" >
< span class = "#!variable!class!#" > #!variable!value!#< / span >
< / td >
<!-- end fence - agent - column -->
<!-- start fence - agent - column - hidden - value -->
< td class = "column_row_value_centered_border" >
< span class = "#!variable!class!#" > #!variable!say_value!#< / span >
< input type = "hidden" name = "#!variable!name!#" id = "#!variable!name!#" value = "#!variable!value!#" / >
< / td >
<!-- end fence - agent - column - hidden - value -->
<!-- start ups - column -->
< td class = "column_row_value_centered_border" >
< span class = "#!variable!class!#" > #!variable!value!#< / span >
< / td >
<!-- end ups - column -->
<!-- start ups - column - hidden - value -->
< td class = "column_row_value_centered_border" >
< span class = "#!variable!class!#" > #!variable!say_value!#< / span >
< input type = "hidden" name = "#!variable!name!#" id = "#!variable!name!#" value = "#!variable!value!#" / >
< / td >
<!-- end ups - column - hidden - value -->
<!-- start fence - agent - confirm -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/fence.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0215!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!variable!confirm_string!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "fence_configuration" action = "" method = "post" >
< table class = "centered" >
#!variable!table!#
< tr >
< td class = "close_top" >
< br / >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td class = "close_top" style = "text-align: right;" colspan = "#!variable!span_count!#" >
< br / >
< input type = "submit" name = "save" id = "save" value = "#!string!striker_0067!#" class = "button" >
< / td >
< input type = "hidden" name = "fence_agent" id = "fence_agent" value = "#!data!cgi::fence_agent::value!#" >
< input type = "hidden" name = "fence_count" id = "fence_count" value = "#!data!cgi::fence_count::value!#" >
< input type = "hidden" name = "add" id = "add" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "fences" >
< input type = "hidden" name = "confirm" id = "confirm" value = "true" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / table >
<!-- end fence - agent - confirm -->
<!-- start ups - delete - confirm -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/ups.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0225!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "ups_configuration" action = "" method = "post" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "column_header" >
#!string!header_0024!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "fixed_width" >
#!variable!say_device!#
< input type = "hidden" name = "delete_ups_uuid" id = "delete_ups_uuid" value = "#!data!cgi::delete_ups_uuid::value!#" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "close_top" >
< br / >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td class = "close_top" style = "text-align: right;" >
< br / >
< input type = "submit" name = "confirm" id = "confirm" value = "#!string!striker_0082!#" class = "button" >
< / td >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "upses" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / table >
<!-- end ups - delete - confirm -->
<!-- start manifest - delete - confirm -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/manifest.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0225!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "manifest_delete" action = "" method = "post" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "column_header" >
#!string!header_0028!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "column_row_value" >
#!variable!say_manifest!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td style = "text-align: right;" >
< input type = "submit" name = "confirm" id = "confirm" value = "#!string!striker_0082!#" class = "button" >
< / td >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "manifests" >
< input type = "hidden" name = "delete" id = "delete" value = "true" >
< input type = "hidden" name = "manifest_uuid" id = "manifest_uuid" value = "#!data!cgi::manifest_uuid::value!#" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / table >
<!-- end manifest - delete - confirm -->
<!-- start fence - agent - delete - confirm -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/fence.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0225!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!variable!confirm_string!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form name = "fence_configuration" action = "" method = "post" >
< table class = "centered" >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "column_header" >
#!string!header_0023!#
< / td >
< / tr >
< tr style = "border: 1px dotted #7f7f7f;" >
< td colspan = "2" class = "fixed_width" >
#!variable!say_device!#
< input type = "hidden" name = "delete_fence_uuid" id = "delete_fence_uuid" value = "#!data!cgi::delete_fence_uuid::value!#" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "close_top" >
< br / >
< input type = "submit" name = "back" id = "back" value = "#!string!striker_0098!#" class = "button" >
< / td >
< td class = "close_top" style = "text-align: right;" >
< br / >
< input type = "submit" name = "confirm" id = "confirm" value = "#!string!striker_0082!#" class = "button" >
< / td >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "fences" >
< / tr >
< / table >
< / form >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / table >
<!-- end fence - agent - delete - confirm -->
<!-- start fence - agent - option - menu -->
< tr >
< td colspan = "3" class = "menu_title" >
#!variable!device_name!#
< / td >
< / tr >
#!variable!device_options!#
< input type = "hidden" name = "#!variable!fence_uuid_key!#" id = "#!variable!fence_uuid_key!#" value = "#!variable!fence_uuid!#" / >
<!-- end fence - agent - option - menu -->
<!-- start fence - agent - option - entry -->
< tr >
< td class = "#!variable!name_class!#" >
#!variable!name!#
< / td >
< td >
#!variable!option!#
< / td >
< td >
#!variable!description!#
< / td >
< / tr >
<!-- end fence - agent - option - entry -->
<!-- start fence - agent - checkbox - entry -->
< tr >
< td class = "#!variable!name_class!#" >
#!variable!name!#
< / td >
< td >
< input type = "checkbox" id = "#!variable!checkbox_name!#" name = "#!variable!checkbox_name!#" # ! variable ! checkbox_checked ! # / >
< / td >
< td >
#!variable!description!#
< / td >
< / tr >
<!-- end fence - agent - checkbox - entry -->
<!-- start fence - agent - input - entry -->
< tr >
< td class = "#!variable!name_class!#" >
#!variable!name!#
< / td >
< td >
< input type = "text" name = "#!variable!key!#" id = "#!variable!key!#" value = "#!variable!value!#" placeholder = "#!variable!default!#" class = "#!variable!input_class!#" >
< / td >
< td >
#!variable!description!#
< / td >
< / tr >
<!-- end fence - agent - input - entry -->
<!-- start existing - fence - devices -->
< tr >
< td >
< / td >
< td >
#!string!striker_0224!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td >
< table >
< div id = "existing_fence_devices" >
< tr style = "border: 1px dotted #7f7f7f;" >
<!-- Device name -->
< td class = "column_header" >
#!string!header_0003!#:
< / td >
< td >
< / td >
<!-- Delete -->
< td class = "column_header" >
#!string!header_0022!#
< / td >
< td >
< / td >
<!-- agent and arguments -->
< td class = "column_header" >
#!string!header_0021!#
< / td >
< / tr >
#!variable!devices!#
< / div >
< / table >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
<!-- end existing - fence - devices -->
<!-- start existing - upses -->
< tr >
< td >
< / td >
< td >
#!string!striker_0236!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td >
< table >
< div id = "existing_ups_devices" >
< tr style = "border: 1px dotted #7f7f7f;" >
<!-- Device name -->
< td class = "column_header" >
#!string!header_0003!#:
< / td >
< td >
< / td >
<!-- Delete -->
< td class = "column_header" >
#!string!header_0022!#
< / td >
< td >
< / td >
<!-- Scan agent -->
< td class = "column_header" >
#!string!header_0041!#
< / td >
< td >
< / td >
<!-- IP Address -->
< td class = "column_header" >
#!string!header_0025!#
< / td >
< / tr >
#!variable!upses!#
< / div >
< / table >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
<!-- end existing - upses -->
<!-- start existing - ups - entry -->
< tr style = "border: 1px dotted #7f7f7f;" >
<!-- Device Name -->
< td >
< a href = "?anvil=true&task=upses&ups_agent=#!variable!ups_agent!#&ups_count=1&ups_uuid_1=#!variable!ups_uuid!#" class = "fixed_link_highlight" > #!variable!name!#< / a >
< / td >
< td >
< / td >
<!-- Delete -->
< td style = "text-align: center;" >
< a href = "?anvil=true&task=upses&delete_ups_uuid=#!variable!ups_uuid!#" class = "fixed_link_highlight" > < img src = "#!data!skin::url!#/images/delete.png" alt = "#!string!striker_0068!#" style = "height: .8em;" > < / a >
< / td >
< td >
< / td >
<!-- Scan agent -->
< td class = "fixed_width" >
#!variable!ups_agent!#
< / td >
< td >
< / td >
<!-- IP Address -->
< td class = "fixed_width" >
#!variable!ip_address!#
< / td >
< / tr >
<!-- end existing - ups - entry -->
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
<!-- start fence - agent - menu -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/fence.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0209!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "description" >
#!string!striker_0210!#< br / > < br / >
#!string!striker_0211!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
#!variable!existing_devices!#
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< td >
#!string!striker_0213!#
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td >
< table >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< div id = "new_fences" >
< form name = "new_fences" action = "" method = "post" >
< tr >
< td >
#!string!striker_0070!#:
< / td >
< td >
< / td >
< td >
#!variable!fence_select!#
< / td >
< / tr >
< tr >
< td >
#!string!striker_0212!#:
< / td >
< td >
< / td >
< td >
#!variable!fence_count!#
< / td >
< / tr >
< tr >
< td colspan = "3" >
< / td >
< / tr >
< tr >
< td colspan = "3" class = "no_border_right" >
< input type = "submit" name = "add" id = "add" class = "button" value = "#!string!striker_0070!#" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "fences" >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
< / form >
< / div >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / table >
< / td >
< / tr >
< div id = "fence_agent_list" >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!string!striker_0214!#
< / td >
< / tr >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td colspan = "2" >
< table >
#!variable!descriptions!#
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / table >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / div >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / table >
<!-- end fence - agent - menu -->
<!-- start existing - fence - device - entry -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td >
< a href = "?anvil=true&task=fences&fence_agent=#!variable!fence_agent!#&fence_count=1&fence_uuid_1=#!variable!fence_uuid!#" class = "fixed_link_highlight" > #!variable!name!#< / a >
< / td >
< td >
< / td >
< td style = "text-align: center;" >
< a href = "?anvil=true&task=fences&delete_fence_uuid=#!variable!fence_uuid!#" class = "fixed_link_highlight" > < img src = "#!data!skin::url!#/images/delete.png" alt = "#!string!striker_0068!#" style = "height: .8em;" > < / a >
< / td >
< td >
< / td >
< td class = "fixed_width" >
#!variable!arguments!#
< / td >
< / tr >
<!-- end existing - fence - device - entry -->
<!-- start ups - agent - menu -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< img src = "#!data!skin::url!#/images/ups.png" class = "top_icon" >
< / td >
< td class = "title" >
#!string!striker_0231!#
< / td >
< / tr >
< tr >
< td >
< / td >
< td class = "description" >
#!string!striker_0237!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
#!variable!existing_upses!#
< tr >
< td >
< / td >
< td >
#!string!striker_0231!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td >
< / td >
< td >
< table >
< div id = "new_upses" >
< form name = "new_upses" action = "" method = "post" >
< tr >
< td >
#!string!striker_0070!#:
< / td >
< td >
< / td >
< td >
#!variable!ups_select!#
< / td >
< / tr >
< tr >
< td >
#!string!striker_0212!#:
< / td >
< td >
< / td >
< td >
#!variable!ups_count!#
< / td >
< / tr >
< tr >
< td colspan = "3" >
< / td >
< / tr >
< tr >
< td colspan = "3" class = "no_border_right" >
< input type = "submit" name = "add" id = "add" class = "button" value = "#!string!striker_0070!#" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "upses" >
< / td >
< / tr >
< / form >
< / div >
< / table >
< / td >
< / tr >
< div id = "ups_agent_list" >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!string!striker_0238!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table >
#!variable!descriptions!#
< / table >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< / div >
< / table >
<!-- end ups - agent - menu -->
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
<!-- start fence - agent - description -->
< tr style = "border: 1px dotted #7f7f7f;" >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< td >
< span class = "column_row_value_fixed" > #!variable!name!#< / a >
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< td >
#!variable!description!#
< / td >
< / tr >
<!-- end fence - agent - description -->
<!-- start ups - agent - description -->
< tr style = "border: 1px dotted #7f7f7f;" >
< td >
< span class = "column_row_value_fixed" > #!variable!name!#< / a >
< / td >
< td >
#!variable!description!#
< / td >
< / tr >
<!-- end ups - agent - description -->
<!-- start main - menu -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "title" >
#!string!striker_0113!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< a href = "/index.html" > < img src = "#!data!skin::url!#/images/anvil_icon_on.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
< a href = "/index.html" > #!string!striker_0288!#< / a >
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< a href = "?anvil=true&task=prep-host" > < img src = "#!data!skin::url!#/images/prep-host_icon.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< a href = "?anvil=true&task=prep-host" > #!string!striker_0116!#< / a >
< / td >
< / tr >
< tr >
< td rowspan = "2" class = "main_option_icon" style = "cursor: pointer;" >
< span id = "toggle_unconfigured_icon" > < img src = "#!data!skin::url!#/images/configure-network.png" class = "top_icon" > < / span >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< td class = "main_option" >
< span id = "toggle_unconfigured_text" style = "cursor: pointer;" > #!string!striker_0130!#< / spam >
< / td >
< / tr >
< tr >
< td class = "main_option_list" >
<!-- See anvil.js for the in - JS generated HTML table that gets inserted here -->
< div id = "unconfigured_hosts" style = "display: none;"
data-none="#!string!unit_0003!#"
data-yes="#!string!unit_0001!#"
data-no="#!string!unit_0002!#"
data-configured="#!string!header_0018!#"
data-unconfigured="#!string!header_0016!#"
data-accessible="#!string!header_0017!#"
data-at-ip="#!string!header_0020!#"
data-type="#!string!header_0019!#"
/>
< / td >
< / tr >
< tr >
< td class = "main_option_icon" >
< a href = "?anvil=true&task=create" > < img src = "#!data!skin::url!#/images/build-anvil_icon.png" class = "top_icon" > < / a >
< / td >
< td class = "main_option" >
<!-- Create a new Anvil! -->
< a href = "?anvil=true&task=create" > #!string!striker_0114!#< / a >
< / td >
< / tr >
<!-- List of existing Anvil! systems -->
< / table >
<!-- end main - menu -->
<!-- start network_interface_form -->
< table >
< tr >
< td colspan = "5" class = "form_group_header1" >
#!variable!field!#:
< input type = "hidden" name = "#!variable!network_name!#_create_bridge" id = "#!variable!network_name!#_create_bridge" value = "#!variable!create_bridge!#" >
< / td >
< / tr >
< tr >
< td colspan = "5" class = "form_group_header2" >
#!variable!description!#< br / >
< span class = "notice" > #!string!prefix_0006!#< / span > : #!string!striker_0145!#
< / td >
< / tr >
< tr >
< td >
#!string!striker_0024!#
< / td >
< td >
< input type = "text" name = "#!variable!ip_key!#" id = "#!variable!ip_key!#" value = "#!variable!ip_value!#" placeholder = "#!string!striker_0024!#" class = "#!variable!ip_class!#" >
< / td >
< td >
< / td >
< td >
#!string!striker_0029!#
< / td >
< td >
#!variable!iface1_select!#
< / td >
< / tr >
< tr >
< td >
#!string!striker_0025!#
< / td >
< td >
< input type = "text" name = "#!variable!subnet_mask_key!#" id = "#!variable!subnet_mask_key!#" value = "#!variable!subnet_mask_value!#" placeholder = "#!string!striker_0025!#" class = "#!variable!subnet_mask_class!#" >
< / td >
< td >
< / td >
< td >
#!string!striker_0030!#
< / td >
< td >
#!variable!iface2_select!#
< / td >
< / tr >
< / table >
<!-- end network_interface_form -->
<!-- start network_job_recorded -->
< table >
< tr >
< td >
< span class = "config_header2" > #!string!striker_0044!#< / span > < br / >
< span class = "config_header3" > #!string!striker_0161!#< / span >
< br / >
< hr / >
< a href = "/cgi-bin/striker?anvil=true" class = "button" > #!string!striker_0162!#< / a >
< / td >
< / tr >
< / table >
<!-- end network_job_recorded -->
<!-- start config - network - main -->
< table align = "center" class = "anvil_main_menu" >
< script type = "text/javascript" src = "/skins/alteeve/anvil.js" > < / script >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "title" >
#!string!striker_0141!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!string!striker_0142!#
< / td >
< / tr >
< form name = "host_setup" action = "" method = "post" >
< tr >
< td colspan = "2" >
< hr >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table width = "100%" >
< div id = "network_config" >
< form name = "network_config_form" action = "" method = "post" >
< tr >
< td width = "75%" style = "vertical-align: top;" >
< table >
< tr >
< td >
#!variable!host_name_form!#
* Moved the fences_unified_metadata file from /tmp, which apache can not read, to /var/www/html/.
* Fixed a bug (well, made a work-around for an issue without a known reproducer) where, on some occassion, a record will end up in the public table without being copied into the history schema. When this happens, the next resync would crash out because the resynd reads in the history table only. Now, when about to INSERT a record into the public schema during a resync, an explicit check is made to see if the record alread
y exists. If it does, the INSERT is instead redirected to the history schema.
* Cleaned up the fence agent metadata when displaying to a user, converting the shell codes to underline a string with square brackets instead. We also now replace newlines with <br /> tags. Lastly, to help fence_azure_arm's metadata description to display cleanly, a check is made to format the table correctly.
* Began work on the Striker menu for handling fence device management
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
< tr >
< td >
#!variable!interface_form!#
< / td >
< / tr >
< tr >
< td >
#!variable!gateway_form!#
< / td >
< / tr >
< tr >
< td >
#!variable!dns_form!#
< / td >
< / tr >
< / table >
< / td >
< td width = "25%" style = "padding-left: 1em; vertical-align: top;" >
< div id = "network_interface_table"
data-host-name="#!variable!host_name!#"
data-title="#!string!header_0001!#"
data-mac-address="#!string!header_0002!#"
data-name="#!string!header_0003!#"
data-state="#!string!header_0004!#"
data-speed="#!string!header_0005!#"
data-up-order="#!string!header_0006!#"
data-up="#!string!unit_0013!#"
data-down="#!string!unit_0014!#"
/>
< / td >
< / tr >
< tr >
< td colspan = "2" class = "column_row_value_right" >
< input type = "submit" name = "next" id = "next" class = "button" value = "#!string!striker_0013!#" >
< / td >
< / tr >
< input type = "hidden" name = "host_uuid" id = "host_uuid" value = "#!variable!host_uuid!#" >
< input type = "hidden" name = "bcn_count" id = "bcn_count" value = "#!variable!bcn_count!#" >
< input type = "hidden" name = "sn_count" id = "sn_count" value = "#!variable!sn_count!#" >
< input type = "hidden" name = "ifn_count" id = "ifn_count" value = "#!variable!ifn_count!#" >
< input type = "hidden" name = "mn_count" id = "mn_count" value = "#!variable!mn_count!#" >
< input type = "hidden" name = "save" id = "save" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "prep-network" >
< / form >
< / div >
< / table >
< / td >
< / tr >
< / form >
< / table >
<!-- end config - network - main -->
<!-- start config - network - confirm -->
< table align = "center" width = "75%" >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "title" >
#!string!striker_0146!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!string!striker_0147!#
< / td >
< / tr >
< form name = "host_setup" action = "" method = "post" >
< tr >
< td colspan = "2" >
< hr >
< / td >
< / tr >
< tr >
< td colspan = "2" >
< table class = "centered" >
< form name = "network_config_confirm" action = "" method = "post" >
< div id = "network_plan" >
< tr >
< td colspan = "2" >
<!-- Network Plan -->
#!string!striker_0148!#
< / td >
< / tr >
< tr >
< td colspan = "2" style = "vertical-align: top;" >
< table class = "data_table_nowrap" >
< tr >
< td class = "column_header" >
<!-- Network Name -->
#!string!striker_0149!#
< / td >
< td class = "column_header" >
<!-- Primary Interface -->
#!string!striker_0029!#
< / td >
< td class = "column_header" >
<!-- Secondary Interface -->
#!string!striker_0030!#
< / td >
< td class = "column_header" >
<!-- Primary IP Address/Subnet (or DHCP) -->
#!string!striker_0150!#
< / td >
< td class = "column_header" >
<!-- Bridge? -->
#!string!striker_0151!#
< / td >
< / tr >
#!variable!interfaces!#
< tr >
< td class = "column_header" >
#!string!striker_0016!#:
< / td >
< td colspan = "4" class = "column_row_value_fixed" >
#!variable!host_name!#
< / td >
< / tr >
< / table >
< / td >
< / tr >
< tr >
< td class = "column_row_value" >
< br / >
< input type = "submit" name = "back" id = "back" class = "button" value = "#!string!striker_0098!#" >
< / td >
< td class = "column_row_value_right" >
< br / >
< input type = "submit" name = "confirm" id = "confirm" class = "button" value = "#!string!striker_0082!#" >
< / td >
< / tr >
< input type = "hidden" name = "host_uuid" id = "host_uuid" value = "#!variable!host_uuid!#" >
< input type = "hidden" name = "bcn_count" id = "bcn_count" value = "#!variable!bcn_count!#" >
< input type = "hidden" name = "sn_count" id = "sn_count" value = "#!variable!sn_count!#" >
< input type = "hidden" name = "ifn_count" id = "ifn_count" value = "#!variable!ifn_count!#" >
< input type = "hidden" name = "mn_count" id = "mn_count" value = "#!variable!mn_count!#" >
< input type = "hidden" name = "dns" id = "dns" value = "#!variable!dns!#" >
< input type = "hidden" name = "gateway" id = "gateway" value = "#!variable!gateway!#" >
< input type = "hidden" name = "gateway_interface" id = "gateway_interface" value = "#!variable!gateway_interface!#" >
< input type = "hidden" name = "save" id = "save" value = "true" >
< input type = "hidden" name = "anvil" id = "anvil" value = "true" >
< input type = "hidden" name = "task" id = "task" value = "prep-network" >
< / form >
< / div >
< / table >
< / td >
< / tr >
< / table >
<!-- end config - network - confirm -->
<!-- start interface - entry -->
< tr >
< td class = "column_row_value" >
<!-- Network Name -->
#!variable!network!#
< / td >
< td class = "column_row_value_fixed" >
<!-- Primary Interface -->
#!variable!primary!#
< input type = "hidden" name = "#!variable!link1_key!#" id = "#!variable!link1_key!#" value = "#!variable!link1_value!#" / >
< / td >
< td class = "column_row_value_fixed" >
<!-- Secondary Interface -->
#!variable!secondary!#
< input type = "hidden" name = "#!variable!link2_key!#" id = "#!variable!link2_key!#" value = "#!variable!link2_value!#" / >
< / td >
< td class = "column_row_value_fixed" >
<!-- Primary IP Address/Subnet (or DHCP) -->
#!variable!say_ip!#
< input type = "hidden" name = "#!variable!ip_key!#" id = "#!variable!ip_key!#" value = "#!variable!ip_address!#" / >
< input type = "hidden" name = "#!variable!subnet_key!#" id = "#!variable!subnet_key!#" value = "#!variable!subnet_mask!#" / >
< / td >
< td class = "column_row_value" >
<!-- Bridge? -->
#!variable!bridge!#
< input type = "hidden" name = "#!variable!bridge_key!#" id = "#!variable!bridge_key!#" value = "#!variable!bridge_value!#" / >
< / td >
< / tr >
<!-- end interface - entry -->
<!-- start prep - host - main -->
< table align = "center" class = "anvil_main_menu" >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" class = "title" >
#!string!striker_0121!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< tr >
< td colspan = "2" >
#!string!striker_0122!#
< / td >
< / tr >
< tr >
< td colspan = "2" >
< / td >
< / tr >
< form name = "host_setup" action = "" method = "post" >
< tr >
< td colspan = "2" >
#!variable!form!#
< / td >
< / tr >
< input type = "hidden" name = "anvil" id = "anvil" value = "1" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "hidden" name = "task" id = "task" value = "prep-host" >
< / form >
< / table >
<!-- end prep - host - main -->
<!-- start host - setup - menu1 -->
< table align = "center" class = "anvil_main_menu" >
< div id = "host-setup" >
< tr >
< td colspan = "3" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
#!string!message_0146!#
< / td >
< / tr >
< tr >
< td colspan = "3" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "radio" name = "type" value = "node" id = "node" class = "radio" # ! variable ! node_checked ! # > #!string!message_0116!# < br / >
< input type = "radio" name = "type" value = "dr" id = "dr" class = "radio" # ! variable ! dr_checked ! # > #!string!message_0117!#
< / td >
< / tr >
< tr >
< td colspan = "3" >
< / td >
< / tr >
< tr >
< td colspan = "3" >
#!string!message_0150!#
< / td >
< / tr >
< tr >
< td colspan = "3" >
< input type = "text" name = "host_name" id = "host_name" value = "#!variable!host_name!#" placeholder = "#!string!striker_0016!#" / >
< input type = "hidden" name = "default_host_name" id = "default_host_name" value = "#!variable!default_host_name!#" / >
< / td >
< / tr >
< tr >
< td colspan = "3" >
< / td >
< / tr >
< tr >
< td colspan = "3" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
#!string!message_0147!#
< / td >
< / tr >
< tr >
< td >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "text" name = "host_ip_address" id = "host_ip_address" value = "#!variable!host_ip_address!#" placeholder = "#!string!striker_0024!#" / >
< / td >
< td >
< / td >
< td >
<!--
This combination of input type text, disk characters and autocomplete=off prevents browsers from pre-filling password and offering to save passwords.
-->
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "text" name = "host_password" id = "host_password" value = "#!variable!password!#" style = "text-security:disc; -webkit-text-security:disc;" autocomplete = "off" placeholder = "#!string!striker_0123!#" / >
< / td >
< / tr >
< tr >
< td colspan = "3" >
< / td >
< / tr >
< tr >
< td colspan = "3" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "submit" name = "connect" id = "connect" class = "button" value = "#!string!striker_0049!#" >
< / td >
< / tr >
< / div >
< / table >
<!-- end host - setup - menu1 -->
<!-- start confirm - initialize - host -->
< table align = "center" >
< form name = "confirm-new-peer" action = "" method = "post" >
< tr >
< td class = "menu_title" >
#!string!striker_0078!#
< / td >
< / tr >
< tr >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< td class = "menu_details" >
#!string!striker_0124!#
< / td >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / tr >
< tr >
< td >
< / td >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / tr >
#!variable!redhat_message!#
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< table align = "center" class = "data_table" >
< div id = "confirm-new-peer" >
< tr >
< td class = "top_padded_cell" >
#!string!striker_0125!#:
< / td >
< td class = "top_padded_cell" >
< span class = "fixed_width" > #!variable!access!#< / span >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
< tr >
< td class = "padded_cell" >
#!string!striker_0126!#:
< / td >
< td class = "padded_cell" >
< span class = "fixed_width" > #!variable!current_host_name!#< / span >
< / td >
< / tr >
< tr >
< td class = "padded_cell" >
#!string!striker_0138!#:
< / td >
< td class = "padded_cell" >
< span class = "fixed_width" > #!variable!new_host_name!#< / span >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
< tr >
< td class = "padded_cell" >
#!string!striker_0127!#:
< / td >
< td class = "padded_cell" >
< span class = "fixed_width" > #!variable!host_uuid!#< / span >
< input type = "hidden" name = "host_uuid" id = "host_uuid" value = "#!variable!host_uuid!#" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< / tr >
#!variable!redhat_form!#
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td class = "button_cell" style = "text-align: left;" >
< a href = "/cgi-bin/striker?anvil=true&task=prep-host&host_ip_address=#!data!cgi::host_ip_address::value!#" class = "button" > #!string!striker_0098!#< / a >
< / td >
< td class = "button_cell" style = "text-align: right;" >
< input type = "submit" name = "confirm" id = "confirm" class = "button" value = "#!string!striker_0128!#" >
< / td >
< / tr >
< input type = "hidden" name = "anvil" id = "anvil" value = "#!data!cgi::anvil::value!#" >
< input type = "hidden" name = "connect" id = "connect" value = "#!data!cgi::connect::value!#" >
< input type = "hidden" name = "host_ip_address" id = "host_ip_address" value = "#!data!cgi::host_ip_address::value!#" >
< input type = "hidden" name = "host_password" id = "host_password" value = "#!data!cgi::host_password::value!#" >
< input type = "hidden" name = "type" id = "type" value = "#!data!cgi::type::value!#" >
< input type = "hidden" name = "task" id = "task" value = "#!data!cgi::task::value!#" >
< input type = "hidden" name = "host_name" id = "host_name" value = "#!data!cgi::host_name::value!#" >
< input type = "hidden" name = "default_host_name" id = "default_host_name" value = "#!data!cgi::default_host_name::value!#" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / div >
< / table >
< / td >
< / tr >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / form >
< / table >
<!-- end confirm - initialize - host -->
<!-- start host - setup - redhat - message -->
< tr >
< td class = "menu_details" >
#!variable!message!#
< / td >
< / tr >
< tr >
< td >
< / td >
< / tr >
<!-- end host - setup - redhat - message -->
<!-- start host - setup - redhat - form -->
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< tr >
< td class = "padded_cell" >
#!string!message_0144!#:
< / td >
< td class = "padded_cell" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "text" name = "rh_user" id = "rh_user" value = "#!variable!rh_user!#" placeholder = "#!string!message_0144!#" / >
< / td >
< / tr >
< tr >
< td class = "padded_cell" >
#!string!message_0145!#:
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< / td >
< td class = "padded_cell" >
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair.
* Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered.
* Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database.
* Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host.
* Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper.
* In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead.
* Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table.
* Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host.
Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
< input type = "text" name = "rh_password" id = "rh_password" value = "#!variable!rh_password!#" style = "text-security:disc; -webkit-text-security:disc;" autocomplete = "off" placeholder = "#!string!message_0145!#" / >
< / td >
< / tr >
<!-- end host - setup - redhat - form -->