Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…e of xdmp:server to include group
  • Loading branch information
grtjn committed Jul 6, 2015
1 parent aefee7f commit 641e38d
Showing 1 changed file with 50 additions and 26 deletions.
76 changes: 50 additions & 26 deletions deploy/lib/xquery/setup.xqy
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,11 @@ declare function setup:get-rollback-config()

(: for backwards-compatibility :)
declare function setup:rewrite-config($import-configs as element(configuration)+) as element(configuration)
{
setup:rewrite-config($import-configs, ())
};

declare function setup:rewrite-config($import-configs as element(configuration)+, $silent as xs:boolean?) as element(configuration)
{
let $config :=
element { fn:node-name($import-configs[1]) } {
Expand All @@ -401,7 +406,7 @@ declare function setup:rewrite-config($import-configs as element(configuration)+
<groups xmlns="http://marklogic.com/xdmp/group" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://marklogic.com/xdmp/group group.xsd">{
let $default-group := ($import-configs/@default-group, "Default")[1]
for $group in fn:distinct-values(
($import-configs/(gr:http-servers/gr:http-server | gr:xdbc-servers/gr:xdbc-server |
($import-configs/gr:groups/gr:group/gr:group-name, $import-configs/(gr:http-servers/gr:http-server | gr:xdbc-servers/gr:xdbc-server |
gr:odbc-servers/gr:odbc-server | gr:task-server | db:databases/db:database)/@group, $default-group))
let $http-servers := $import-configs/gr:http-servers/gr:http-server[@group = $group or ($group = $default-group and fn:empty(@group))]
let $xdbc-servers := $import-configs/gr:xdbc-servers/gr:xdbc-server[@group = $group or ($group = $default-group and fn:empty(@group))]
Expand Down Expand Up @@ -437,13 +442,15 @@ declare function setup:rewrite-config($import-configs as element(configuration)+

(: Check config on group consistency! :)
let $_ :=
for $group in $config/gr:groups/gr:group/gr:group-name
let $hosts := ($config/ho:hosts/ho:host[ho:group/@name = $group], try { xdmp:group-hosts(xdmp:group($group)) } catch ($ignore) {})
where fn:empty($hosts)
return
fn:error(
xs:QName("NO_HOSTS_IN_GROUP"),
fn:concat("No hosts assigned to group ", $group, ", needed for app servers and forests!"))
if ($silent) then ()
else
for $group in $config/gr:groups/gr:group/gr:group-name
let $hosts := ($config/ho:hosts/ho:host[ho:group/@name = $group], try { xdmp:group-hosts(xdmp:group($group)) } catch ($ignore) {})
where fn:empty($hosts)
return
fn:error(
xs:QName("NO_HOSTS_IN_GROUP"),
fn:concat("No hosts assigned to group ", $group, ", needed for app servers and forests!"))

(: all good :)
return $config
Expand Down Expand Up @@ -499,7 +506,7 @@ declare function setup:do-wipe($import-config as element(configuration)+) as ite
{
try
{
let $import-config := setup:rewrite-config($import-config)
let $import-config := setup:rewrite-config($import-config, fn:true())
return (

(: remove scheduled tasks :)
Expand Down Expand Up @@ -3272,9 +3279,9 @@ declare function setup:create-group(

(: Make sure App-Services and Manage are available in the new group in case the host we use Roxy against is assigned to it! :)
let $group-id := admin:group-get-id($admin-config, $group)
let $appservices-id := xdmp:server("App-Services")[1]
let $appservices-id := xdmp:server("App-Services")[1] (: just grab the first occurrence, from whatever group :)
let $appservices-port := admin:appserver-get-port($admin-config, $appservices-id)
let $manage-id := xdmp:server("Manage")[1]
let $manage-id := xdmp:server("Manage")[1] (: just grab the first occurrence, from whatever group :)
let $manage-port := admin:appserver-get-port($admin-config, $manage-id)
let $_ :=
if (admin:appserver-exists($admin-config, $group-id, "App-Services")) then ()
Expand Down Expand Up @@ -3526,15 +3533,15 @@ declare function setup:create-appserver(
$server-config as element(gr:http-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:http-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then
if (setup:get-server($server-name, $group-id)) then
fn:concat("HTTP Server ", $server-name, " already exists, not recreated..")
else
let $root := ($server-config/gr:root[fn:string-length(fn:string(.)) > 0], "/")[1]
let $port := xs:unsignedLong($server-config/gr:port)
let $database := setup:get-appserver-content-database($server-config)
let $modules := setup:get-appserver-modules-database($server-config)
let $group-id := setup:get-group($server-config)
let $admin-config := admin:get-configuration()
let $admin-config :=
if (xs:boolean($server-config/gr:webDAV)) then
Expand Down Expand Up @@ -3569,8 +3576,9 @@ declare function setup:validate-appserver(
$server-config as element(gr:http-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:http-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then ()
if (setup:get-server($server-name, $group-id)) then ()
else
setup:validation-fail(fn:concat("Missing HTTP server: ", $server-name))
};
Expand All @@ -3579,11 +3587,11 @@ declare function setup:create-odbcserver(
$server-config as element(gr:odbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:odbc-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then
if (setup:get-server($server-name, $group-id)) then
fn:concat("ODBC Server ", $server-name, " already exists, not recreated..")
else
let $group-id := setup:get-group($server-config)
(: wrap in try catch because this function is new to 6.0 and will fail in older version of ML :)
let $admin-config := admin:get-configuration()
let $admin-config :=
Expand Down Expand Up @@ -3635,8 +3643,9 @@ declare function setup:validate-odbcserver(
$server-config as element(gr:odbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:odbc-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then ()
if (setup:get-server($server-name, $group-id)) then ()
else
setup:validation-fail(fn:concat("Missing ODBC server: ", $server-name))
};
Expand All @@ -3645,11 +3654,11 @@ declare function setup:create-xdbcserver(
$server-config as element(gr:xdbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:xdbc-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then
if (setup:get-server($server-name, $group-id)) then
fn:concat("XDBC Server ", $server-name, " already exists, not recreated..")
else
let $group-id := setup:get-group($server-config)
let $admin-config :=
admin:xdbc-server-create(
admin:get-configuration(),
Expand All @@ -3673,8 +3682,9 @@ declare function setup:validate-xdbcserver(
$server-config as element(gr:xdbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:xdbc-server-name[fn:string-length(fn:string(.)) > 0]
let $group-id := setup:get-group($server-config)
return
if (xdmp:servers()[xdmp:server-name(.) = $server-name]) then ()
if (setup:get-server($server-name, $group-id)) then ()
else
setup:validation-fail(fn:concat("Missing XDBC server: ", $server-name))
};
Expand Down Expand Up @@ -3723,7 +3733,8 @@ declare function setup:configure-http-server(
$server-config as element(gr:http-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:http-server-name[fn:string-length(fn:string(.)) > 0]
let $admin-config := setup:configure-server($server-config, xdmp:server($server-name), if (xs:boolean($server-config/gr:webDAV)) then $webdav-server-settings else $http-server-settings)
let $group-id := setup:get-group($server-config)
let $admin-config := setup:configure-server($server-config, setup:get-server($server-name, $group-id), if (xs:boolean($server-config/gr:webDAV)) then $webdav-server-settings else $http-server-settings)
return
(
if (admin:save-configuration-without-restart($admin-config)) then
Expand All @@ -3736,9 +3747,11 @@ declare function setup:configure-http-server(
declare function setup:validate-http-server(
$server-config as element(gr:http-server)) as item()*
{
let $group-id := setup:get-group($server-config)
return
setup:validate-server(
$server-config,
xdmp:server($server-config/gr:http-server-name[fn:string-length(fn:string(.)) > 0]),
setup:get-server($server-config/gr:http-server-name[fn:string-length(fn:string(.)) > 0], $group-id),
if ($server-config/gr:webDAV = fn:true()) then
$webdav-server-settings
else
Expand All @@ -3749,7 +3762,8 @@ declare function setup:configure-xdbc-server(
$server-config as element(gr:xdbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:xdbc-server-name[fn:string-length(fn:string(.)) > 0]
let $admin-config := setup:configure-server($server-config, xdmp:server($server-name), $xdbc-server-settings)
let $group-id := setup:get-group($server-config)
let $admin-config := setup:configure-server($server-config, setup:get-server($server-name, $group-id), $xdbc-server-settings)
return
(
if (admin:save-configuration-without-restart($admin-config)) then
Expand All @@ -3762,17 +3776,20 @@ declare function setup:configure-xdbc-server(
declare function setup:validate-xdbc-server(
$server-config as element(gr:xdbc-server)) as item()*
{
let $group-id := setup:get-group($server-config)
return
setup:validate-server(
$server-config,
xdmp:server($server-config/gr:xdbc-server-name[fn:string-length(fn:string(.)) > 0]),
setup:get-server($server-config/gr:xdbc-server-name[fn:string-length(fn:string(.)) > 0], $group-id),
$xdbc-server-settings)
};

declare function setup:configure-odbc-server(
$server-config as element(gr:odbc-server)) as item()*
{
let $server-name as xs:string? := $server-config/gr:odbc-server-name[fn:string-length(fn:string(.)) > 0]
let $admin-config := setup:configure-server($server-config, xdmp:server($server-name), $odbc-server-settings)
let $group-id := setup:get-group($server-config)
let $admin-config := setup:configure-server($server-config, setup:get-server($server-name, $group-id), $odbc-server-settings)
return
(
if (admin:save-configuration-without-restart($admin-config)) then
Expand All @@ -3785,9 +3802,11 @@ declare function setup:configure-odbc-server(
declare function setup:validate-odbc-server(
$server-config as element(gr:odbc-server)) as item()*
{
let $group-id := setup:get-group($server-config)
return
setup:validate-server(
$server-config,
xdmp:server($server-config/gr:odbc-server-name[fn:string-length(fn:string(.)) > 0]),
setup:get-server($server-config/gr:odbc-server-name[fn:string-length(fn:string(.)) > 0], $group-id),
$odbc-server-settings)
};

Expand Down Expand Up @@ -5843,6 +5862,11 @@ declare function setup:list-settings($type as xs:string) as item()*
fn:concat("Unknown type of settings: ", $type)
};

declare function setup:get-server($server-name as xs:string, $group-id as xs:unsignedLong) as xs:unsignedLong?
{
xdmp:group-servers($group-id)[xdmp:server-name(.) = $server-name]
};

(:
: Force update mode. This is so that we can create an SSL certificate template
: and then tell an app server to use it.
Expand Down

0 comments on commit 641e38d

Please sign in to comment.