Quellcode durchsuchen

Merge branch 'stats_command#1' into 'master'

Stats command#1

See merge request interlink-sa/flowdat3/modules/stats!61
Jean Sumara Leopoldo vor 5 Jahren
Ursprung
Commit
1d3e16eca5

+ 4 - 16
src/StatsBundle/Command/GenerateRemoteCrontabCommand.php

@@ -65,19 +65,7 @@ class GenerateRemoteCrontabCommand extends ContainerAwareCommand
         $oltLibraries = array('OIDSFiberHomeV1','OIDSHuaweiV1','OIDSFiberLinkV1','OIDSZTEV1','OIDSCalixV1');
 
         $amqp = $input->getOption('amqp');
-        $amqpRemote = '';
-        $routing_key = '';
-        if ($amqp) {
-            $amqpRemote = 'amqp:remote';
-
-            // Verifico la routing key si se pasa como parametro o variable de entorno
-            // default routing_key = stats
-            $routing_key = $input->getOption('routing_key');
-            if (!$routing_key) {
-                $routing_key = getenv('AMQP_KEY') !== false ? getenv('AMQP_KEY') : 'stats';
-            }
-            $routing_key = "--route={$routing_key}";
-        }
+        $amqpRemote = 'stats:amqp';
 
         $content .= "*/5 * * * * {$pathConsole} stats:crontab:remote >> /var/log/cron.log 2>&1" . PHP_EOL;
         $content .= "*/20 * * * * {$pathConsole} stats:devices >> /var/log/cron.log 2>&1" . PHP_EOL;
@@ -134,8 +122,8 @@ class GenerateRemoteCrontabCommand extends ContainerAwareCommand
                 if ($amqp) 
                     $params = "--args=--olt-ip:{$deviceIp} --args=--olt-community:{$snmpCommunity} --args=--olt-snmp-library:{$library} --args=--olt-device-id:{$deviceId} --args=--olt-server-id:{$serverId}  --args=--save-historic:{$saveHistoric}";
 
-                $commands[] = "*/{$timeScan} * * * * {$pathConsole} {$amqpRemote} {$routing_key} {$mark}:onu:scan {$params} >> /var/log/cron.log 2>&1";
-                $commands[] = "*/{$timeOltScan} * * * * {$pathConsole} {$amqpRemote} {$routing_key} {$mark}:olt:scan {$params} >> /var/log/cron.log 2>&1";
+                $commands[] = "*/{$timeScan} * * * * {$pathConsole} {$amqpRemote} {$mark}:onu:scan {$params} >> /var/log/cron.log 2>&1";
+                $commands[] = "*/{$timeOltScan} * * * * {$pathConsole} {$amqpRemote} {$mark}:olt:scan {$params} >> /var/log/cron.log 2>&1";
                 
                 $content .= PHP_EOL . "# OLT {$oltName} ({$deviceIp})" . PHP_EOL;
 
@@ -180,7 +168,7 @@ class GenerateRemoteCrontabCommand extends ContainerAwareCommand
                 if ($amqp) 
                     $params = "--args=--nas-ip:{$deviceIp} --args=--nas-community:{$snmpCommunity} --args=--nas-snmp-library:{$library} --args=--nas-device-id:{$deviceId} --args=--nas-server-id:{$serverId} --args=--save-historic:1";
 
-                $commands[] = "*/10 * * * * {$pathConsole} {$amqpRemote} {$routing_key} nas:onu:octets {$params} >> /var/log/cron.log 2>&1";
+                $commands[] = "*/10 * * * * {$pathConsole} {$amqpRemote} nas:onu:octets {$params} >> /var/log/cron.log 2>&1";
                 $content .= PHP_EOL . "# NAS {$description} ({$deviceIp})" . PHP_EOL;
 
                 $content .= implode(PHP_EOL, $commands);

+ 42 - 0
src/StatsBundle/Command/StatsCommand.php

@@ -0,0 +1,42 @@
+<?php
+
+
+namespace StatsBundle\Command;
+
+
+use PhpAmqpLib\Message\AMQPMessage;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class StatsCommand extends BaseCommand
+{
+    protected function configure()
+    {
+        $this
+            ->setName('stats:amqp')
+            ->setDescription('Send the arguments and publish the queue')
+            ->setHelp('')
+            ->addArgument('name', InputOption::VALUE_REQUIRED, 'Command to execute')
+            ->addOption('args', null, InputOption::VALUE_OPTIONAL|InputOption::VALUE_IS_ARRAY, 'Optional Commands arguments. e.g. --args=key:value --args=key1:value1')
+        ;
+    }
+
+    /**
+     * @param InputInterface $input
+     * @param OutputInterface $output
+     */
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $name = $input->getArgument('name');
+        $args = $input->getOption('args');
+        $date = date("Y-m-d H:i:s");
+        if ($name) {
+            $amqpChannel = $this->getContainer()->get('amqp.channel');
+            $amqpChannel->basic_publish(new AMQPMessage((string) serialize(compact('name', 'args'))), '', 'command_stats');
+            $output->writeln("<info>Command executed:</info> {$date} # {$name} # ".implode(" ",$args));
+        } else {
+            $output->writeln("<error>Enter a valid command:</error> {$date} # {$name} # ".implode(" ",$args));
+        }
+    }
+}