From aaf6dcb1d155f082cfca06e8cd8757adf82c9080 Mon Sep 17 00:00:00 2001 From: Bart Van Der Meerssche Date: Mon, 30 Nov 2009 19:56:15 +0000 Subject: [PATCH] web: drush commands for populating the alias table --- web/drupal/modules/logger/logger.drush.inc | 60 ++++++++++++++++++++-- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/web/drupal/modules/logger/logger.drush.inc b/web/drupal/modules/logger/logger.drush.inc index 66c76ac..7861dd2 100644 --- a/web/drupal/modules/logger/logger.drush.inc +++ b/web/drupal/modules/logger/logger.drush.inc @@ -26,6 +26,15 @@ function logger_drush_command() { ), ); + $items['logger alias'] = array( + 'callback' => '_logger_alias', + 'description' => 'Create aliases for meter/sensorIDs.', + 'arguments' => array( + 'meter' => 'Create an alias for one specific meterID.', + 'permissions' => 'Set non-default permissions for this alias.', + ), + ); + return $items; } @@ -59,26 +68,44 @@ function _logger_create($serial, $country, $uid = 0) { $type = 'undefined'; } + $permissions = 62; $meter = md5(uniqid(rand(), TRUE)); + $alias = md5(uniqid(rand(), TRUE)); + $path = new stdClass(); $path->root = DRUPAL_ROOT .'/'. drupal_get_path('module', 'logger'); $path->base = $path->root .'/data/base/'; $path->night = $path->root .'/data/night/'; - $result = db_query("INSERT INTO {logger_meters} (meter, uid, device, created, type) VALUES ('%s', %d, '%s', %d, '%s')", $meter, $uid, $device, $created, $type); - if (!$result) drush_set_error('LOGGER_CREATE_METER_ENTRY', dt('Error creating meter entry for @meter.', array('@meter' => $meter))); + $path->alias_base = $path->root .'/alias/base/'; + $path->alias_night = $path->root .'/alias/night/'; + + $result = db_query("INSERT INTO {logger_meters} (meter, uid, device, created, type) VALUES ('%s', %d, '%s', %d, '%s')", $meter, $uid, $device, $created, $type); + $insert = db_query("INSERT INTO {logger_aliases} (alias, meter, permissions) VALUES ('%s', '%s', %d)", $alias, $meter, $permissions); + + if (!($result && $insert)) drush_set_error('LOGGER_CREATE_METER_ENTRY', dt('Error creating meter entry for @meter.', array('@meter' => $meter))); // create the meter base rrd if (!file_exists($path->base . $meter .'.rrd')) { $command = $path->root .'/rrdtool create '. $path->base . $meter .'.rrd -b 1199487600 -s 60 DS:meter:DERIVE:8640000:-2:2 RRA:AVERAGE:0.5:1:120 RRA:AVERAGE:0.5:15:192 RRA:AVERAGE:0.5:1440:60 RRA:AVERAGE:0.5:10080:520'; system($command, $return); - if ($return <> 0) drush_set_error('LOGGER_CREATE_RRD_BASE_ERROR', dt('Error creating the base @meter rrd.', array('@meter' => $meter))); + if ($return == 0) { + system('ln ' . $path->base . $meter . '.rrd ' . $path->alias_base . $alias); + } + else { + drush_set_error('LOGGER_CREATE_RRD_BASE_ERROR', dt('Error creating the base @meter rrd.', array('@meter' => $meter))); + } } // create the meter night rrd if (!file_exists($path->night . $meter .'.rrd')) { $command = $path->root .'/rrdtool create '. $path->night . $meter .'.rrd -b 1199487600 -s 86400 DS:meter:GAUGE:8640000:-2:2 RRA:AVERAGE:0.5:1:60 RRA:AVERAGE:0.5:7:520'; system($command, $return); - if ($return <> 0) drush_set_error('LOGGER_CREATE_RRD_NIGHT_ERROR', dt('Error creating the night @meter rrd.', array('@meter' => $meter))); + if ($return == 0) { + system('ln ' . $path->night . $meter . '.rrd ' . $path->alias_night . $alias); + } + else { + drush_set_error('LOGGER_CREATE_RRD_NIGHT_ERROR', dt('Error creating the night @meter rrd.', array('@meter' => $meter))); + } } if (!drush_get_error()) drush_log(dt('Successfully created the meter: @meter with type: @type', array('@meter' => $meter, '@type' => $type)), 'ok'); @@ -100,3 +127,28 @@ function _logger_assign($serial, $uid) { if (!drush_get_error()) drush_log(dt('Successfully assigned uid: @uid to S/N: @serial', array('@uid' => $uid, '@serial' => $serial)), 'ok'); } + +function _logger_alias($meter = "", $permissions = 62) { + if ($meter == "") { + $result = db_query("SELECT meter FROM {logger_meters}"); + while ($meter = db_fetch_object($result)) { + $count = db_result(db_query("SELECT COUNT(meter) FROM {logger_aliases} WHERE meter = '%s'", $meter->meter)); + if ($count == 0) { + $alias = md5(uniqid(rand(), TRUE)); + $insert = db_query("INSERT INTO {logger_aliases} (alias, meter, permissions) VALUES ('%s', '%s', %d)", $alias, $meter->meter, $permissions); + + if (!$insert) { + drush_set_error('LOGGER_CREATE_ALIAS_ENTRY', dt('Error creating alias entry for @meter.', array('@meter' => $meter->meter))); + } + else { + drush_log(dt('Created an entry in {logger_aliases} with alias: @alias and meter: @meter', array('@alias' => $alias , '@meter' => $meter->meter)), 'ok'); + + $root_path = DRUPAL_ROOT .'/'. drupal_get_path('module', 'logger'); + system('ln ' . $root_path . '/data/base/' . $meter->meter . '.rrd ' . $root_path . '/alias/base/' . $alias); + system('ln ' . $root_path . '/data/night/' . $meter->meter . '.rrd ' . $root_path . '/alias/night/' . $alias); + } + } + } + } +} +