| | 239 | close($o); |
|---|
| | 240 | return $file; |
|---|
| | 241 | } |
|---|
| | 242 | |
|---|
| | 243 | sub make_stratcon_noits_config { |
|---|
| | 244 | my ($o, $opts) = @_; |
|---|
| | 245 | my $cwd = $opts->{cwd}; |
|---|
| | 246 | $opts->{noit_api_port} ||= $NOIT_API_PORT; |
|---|
| | 247 | print $o qq{ |
|---|
| | 248 | <noits> |
|---|
| | 249 | <sslconfig> |
|---|
| | 250 | <certificate_file>$cwd/../test-stratcon.crt</certificate_file> |
|---|
| | 251 | <key_file>$cwd/../test-stratcon.key</key_file> |
|---|
| | 252 | <ca_chain>$cwd/../test-ca.crt</ca_chain> |
|---|
| | 253 | </sslconfig> |
|---|
| | 254 | <config> |
|---|
| | 255 | <reconnect_initial_interval>1000</reconnect_initial_interval> |
|---|
| | 256 | <reconnect_maximum_interval>15000</reconnect_maximum_interval> |
|---|
| | 257 | </config> |
|---|
| | 258 | }; |
|---|
| | 259 | foreach my $n (@{$opts->{noits}}) { |
|---|
| | 260 | print $o qq{ <noit}; |
|---|
| | 261 | while (my ($k,$v) = each %$n) { |
|---|
| | 262 | print $o qq{ $k=\"$v\"}; |
|---|
| | 263 | } |
|---|
| | 264 | print $o qq{/>\n}; |
|---|
| | 265 | } |
|---|
| | 266 | print $o qq{</noits>\n}; |
|---|
| | 267 | } |
|---|
| | 268 | |
|---|
| | 269 | sub make_stratcon_listeners_config { |
|---|
| | 270 | my ($o, $opts) = @_; |
|---|
| | 271 | my $cwd = $opts->{cwd}; |
|---|
| | 272 | $opts->{stratcon_api_port} ||= $STRATCON_API_PORT; |
|---|
| | 273 | $opts->{stratcon_web_port} ||= $STRATCON_WEB_PORT; |
|---|
| | 274 | print $o qq{ |
|---|
| | 275 | <listeners> |
|---|
| | 276 | <sslconfig> |
|---|
| | 277 | <certificate_file>$cwd/../test-stratcon.crt</certificate_file> |
|---|
| | 278 | <key_file>$cwd/../test-stratcon.key</key_file> |
|---|
| | 279 | <ca_chain>$cwd/../test-ca.crt</ca_chain> |
|---|
| | 280 | </sslconfig> |
|---|
| | 281 | <realtime type="http_rest_api"> |
|---|
| | 282 | <listener address="*" port="$opts->{stratcon_web_port}"> |
|---|
| | 283 | <config> |
|---|
| | 284 | <hostname>stratcon.noit.example.com</hostname> |
|---|
| | 285 | <document_domain>noit.example.com</document_domain> |
|---|
| | 286 | </config> |
|---|
| | 287 | </listener> |
|---|
| | 288 | </realtime> |
|---|
| | 289 | <listener type="control_dispatch" address="*" port="$opts->{stratcon_api_port}" ssl="on" /> |
|---|
| | 290 | </listeners> |
|---|
| | 291 | }; |
|---|
| | 292 | } |
|---|
| | 293 | |
|---|
| | 294 | sub make_iep_config { |
|---|
| | 295 | my ($o, $opts) = @_; |
|---|
| | 296 | my $cwd = $opts->{cwd}; |
|---|
| | 297 | $opts->{iep}->{disabled} ||= 'false'; |
|---|
| | 298 | mkdir("$cwd/logs/$opts->{name}_iep_root"); |
|---|
| | 299 | open(my $run, "<$cwd/../../src/java/run-iep.sh") || |
|---|
| | 300 | BAIL_OUT("cannot open source run-iep.sh"); |
|---|
| | 301 | sysopen(my $newrun, "$cwd/logs/$opts->{name}_iep_root/run-iep.sh", O_WRONLY|O_CREAT, 0755) || |
|---|
| | 302 | BAIL_OUT("cannot open target run-iep.sh"); |
|---|
| | 303 | while(<$run>) { |
|---|
| | 304 | s%^DIRS="%DIRS="$cwd/../../src/java $cwd/../../src/java/lib %; |
|---|
| | 305 | print $newrun $_; |
|---|
| | 306 | } |
|---|
| | 307 | close($run); |
|---|
| | 308 | close($newrun); |
|---|
| | 309 | print $o qq{ |
|---|
| | 310 | <iep disabled="$opts->{iep}->{disabled}"> |
|---|
| | 311 | <start directory="$cwd/logs/$opts->{name}_iep_root" |
|---|
| | 312 | command="$cwd/logs/$opts->{name}_iep_root/run-iep.sh" /> |
|---|
| | 313 | }; |
|---|
| | 314 | foreach my $mqt (keys %{$opts->{iep}->{mq}}) { |
|---|
| | 315 | print $o qq{ <mq type="$mqt">\n}; |
|---|
| | 316 | while (my ($k,$v) = each %{$opts->{iep}->{mq}->{mqt}}) { |
|---|
| | 317 | print $o qq{ <$k>$v</$k>\n}; |
|---|
| | 318 | } |
|---|
| | 319 | print $o qq{ </mq>\n}; |
|---|
| | 320 | } |
|---|
| | 321 | foreach my $bt (keys %{$opts->{iep}->{broker}}) { |
|---|
| | 322 | print $o qq{ <broker adapter="$bt">\n}; |
|---|
| | 323 | while (my ($k,$v) = each %{$opts->{iep}->{broker}->{bt}}) { |
|---|
| | 324 | print $o qq{ <$k>$v</$k>\n}; |
|---|
| | 325 | } |
|---|
| | 326 | print $o qq{ </broker>\n}; |
|---|
| | 327 | } |
|---|
| | 328 | print $o qq{</iep>\n}; |
|---|
| | 329 | } |
|---|
| | 330 | sub make_database_config { |
|---|
| | 331 | my ($o, $opts) = @_; |
|---|
| | 332 | my $cwd = $opts->{cwd}; |
|---|
| | 333 | print $o qq{ |
|---|
| | 334 | <database> |
|---|
| | 335 | <journal> |
|---|
| | 336 | <path>$cwd/logs/$opts->{name}_stratcon.persist</path> |
|---|
| | 337 | </journal> |
|---|
| | 338 | <dbconfig> |
|---|
| | 339 | <host>localhost</host> |
|---|
| | 340 | <port>$NOIT_TEST_DB_PORT</port> |
|---|
| | 341 | <dbname>reconnoiter</dbname> |
|---|
| | 342 | <user>stratcon</user> |
|---|
| | 343 | <password>stratcon</password> |
|---|
| | 344 | </dbconfig> |
|---|
| | 345 | <statements> |
|---|
| | 346 | <allchecks><![CDATA[ |
|---|
| | 347 | SELECT remote_address, id, target, module, name |
|---|
| | 348 | FROM check_currently |
|---|
| | 349 | ]]></allchecks> |
|---|
| | 350 | <findcheck><![CDATA[ |
|---|
| | 351 | SELECT remote_address, id, target, module, name |
|---|
| | 352 | FROM check_currently |
|---|
| | 353 | WHERE sid = \$1 |
|---|
| | 354 | ]]></findcheck> |
|---|
| | 355 | <allstoragenodes><![CDATA[ |
|---|
| | 356 | SELECT storage_node_id, fqdn, dsn |
|---|
| | 357 | FROM stratcon.storage_node |
|---|
| | 358 | ]]></allstoragenodes> |
|---|
| | 359 | <findstoragenode><![CDATA[ |
|---|
| | 360 | SELECT fqdn, dsn |
|---|
| | 361 | FROM stratcon.storage_node |
|---|
| | 362 | WHERE storage_node_id = \$1 |
|---|
| | 363 | ]]></findstoragenode> |
|---|
| | 364 | <mapallchecks><![CDATA[ |
|---|
| | 365 | SELECT id, sid, noit as remote_cn, storage_node_id, fqdn, dsn |
|---|
| | 366 | FROM stratcon.map_uuid_to_sid LEFT JOIN stratcon.storage_node USING (storage_node_id) |
|---|
| | 367 | ]]></mapallchecks> |
|---|
| | 368 | <mapchecktostoragenode><![CDATA[ |
|---|
| | 369 | SELECT o_storage_node_id as storage_node_id, o_sid as sid, |
|---|
| | 370 | o_fqdn as fqdn, o_dsn as dsn |
|---|
| | 371 | FROM stratcon.map_uuid_to_sid(\$1,\$2) |
|---|
| | 372 | ]]></mapchecktostoragenode> |
|---|
| | 373 | <check><![CDATA[ |
|---|
| | 374 | INSERT INTO check_archive_%Y%m%d |
|---|
| | 375 | (remote_address, whence, sid, id, target, module, name) |
|---|
| | 376 | VALUES (\$1, 'epoch'::timestamptz + (\$2 || ' seconds')::interval, |
|---|
| | 377 | \$3, \$4, \$5, \$6, \$7) |
|---|
| | 378 | ]]></check> |
|---|
| | 379 | <status><![CDATA[ |
|---|
| | 380 | INSERT INTO check_status_archive_%Y%m%d |
|---|
| | 381 | (whence, sid, state, availability, duration, status) |
|---|
| | 382 | VALUES ('epoch'::timestamptz + (\$1 || ' seconds')::interval, |
|---|
| | 383 | \$2, \$3, \$4, \$5, \$6) |
|---|
| | 384 | ]]></status> |
|---|
| | 385 | <metric_numeric><![CDATA[ |
|---|
| | 386 | INSERT INTO metric_numeric_archive_%Y%m%d |
|---|
| | 387 | (whence, sid, name, value) |
|---|
| | 388 | VALUES ('epoch'::timestamptz + (\$1 || ' seconds')::interval, |
|---|
| | 389 | \$2, \$3, \$4) |
|---|
| | 390 | ]]></metric_numeric> |
|---|
| | 391 | <metric_text><![CDATA[ |
|---|
| | 392 | INSERT INTO metric_text_archive_%Y%m%d |
|---|
| | 393 | ( whence, sid, name,value) |
|---|
| | 394 | VALUES ('epoch'::timestamptz + (\$1 || ' seconds')::interval, |
|---|
| | 395 | \$2, \$3, \$4) |
|---|
| | 396 | ]]></metric_text> |
|---|
| | 397 | <config><![CDATA[ |
|---|
| | 398 | SELECT stratcon.update_config |
|---|
| | 399 | (\$1, \$2, \$3, |
|---|
| | 400 | 'epoch'::timestamptz + (\$4 || ' seconds')::interval, |
|---|
| | 401 | \$5) |
|---|
| | 402 | ]]></config> |
|---|
| | 403 | <findconfig><![CDATA[ |
|---|
| | 404 | SELECT config FROM stratcon.current_node_config WHERE remote_cn = \$1 |
|---|
| | 405 | ]]></findconfig> |
|---|
| | 406 | </statements> |
|---|
| | 407 | </database> |
|---|
| | 408 | }; |
|---|
| | 409 | } |
|---|
| | 410 | |
|---|
| | 411 | sub make_stratcon_config { |
|---|
| | 412 | my $name = shift; |
|---|
| | 413 | my $options = shift; |
|---|
| | 414 | $options->{cwd} ||= cwd(); |
|---|
| | 415 | $options->{generics} ||= { 'stomp_driver' => { image => 'stomp_driver' } }; |
|---|
| | 416 | $options->{iep}->{mq} ||= { 'stomp' => {} }; |
|---|
| | 417 | my $cwd = $options->{cwd}; |
|---|
| | 418 | my $file = "$cwd/logs/${name}_stratcon.conf"; |
|---|
| | 419 | open (my $o, ">$file") || BAIL_OUT("can't write config: $file"); |
|---|
| | 420 | print $o qq{<?xml version="1.0" encoding="utf8" standalone="yes"?>\n}; |
|---|
| | 421 | print $o qq{<stratcon>}; |
|---|
| | 422 | make_eventer_config($o, $options); |
|---|
| | 423 | make_stratcon_noits_config($o, $options); |
|---|
| | 424 | make_logs_config($o, $options); |
|---|
| | 425 | make_modules_config($o, $options); |
|---|
| | 426 | make_stratcon_listeners_config($o, $options); |
|---|
| | 427 | make_database_config($o, $options); |
|---|
| | 428 | make_iep_config($o, $options); |
|---|
| | 429 | print $o qq{</stratcon>\n}; |
|---|