From e7e8118629dda51bb9e82f300b543ef4b2c037ed Mon Sep 17 00:00:00 2001 From: Shawn Webb Date: Tue, 12 Feb 2013 17:54:31 -0500 Subject: [PATCH] Add snapshot action to Status page --- jailadmin.module | 10 ++++++++++ jailstatus.inc | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/jailadmin.module b/jailadmin.module index 90270e2..d5fb374 100644 --- a/jailadmin.module +++ b/jailadmin.module @@ -127,6 +127,16 @@ function jailadmin_menu() { 'type' => MENU_NORMAL_ITEM, ); + $items['jailadmin/%/snapshot'] = array( + 'title' => 'Snapshot Jail', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('jail_snapshot', 1), + 'file' => 'jailstatus.inc', + 'access callback' => 'jail_config_access', + 'access arguments' => array(1), + 'type' => MENU_NORMAL_ITEM, + ); + return $items; } diff --git a/jailstatus.inc b/jailstatus.inc index fc5f40b..ea830b3 100644 --- a/jailstatus.inc +++ b/jailstatus.inc @@ -24,6 +24,8 @@ function jailadmin_status($form, &$form_state) { else $action = l("Start", "jailadmin/{$jail->name}/start"); + $action .= " | " . l("Snapshot", "jailadmin/{$jail->name}/snapshot"); + $rows[] = array($name, $jail->IsOnlineString(), $jail->NetworkStatus(), $action); } @@ -67,3 +69,16 @@ function jail_stop($form, &$form_state) { return jailadmin_status($form, $form_state); } + +function jail_snapshot($form, &$form_state) { + $jail = Jail::Load($form_state['build_info']['args'][0]); + + if ($jail->Snapshot()) + drupal_set_message(t('Jail @jail snapshot successful', array('@jail' => $jail->name))); + else + drupal_set_message(t('Jail @jail snapshot unsuccessful', array('@jail' => $jail->name))); + + $form_state['rebuild'] = true; + + return jailadmin_status($form, $form_state); +}