Преглед изворни кода

Merge branch '6-create-command-in-amqp-execute-autodiscovery-action' into 'master'

Resolve "Generate remote command to execute 'autodiscovery' action"

Closes #4 and #6

See merge request interlink-sa/flowdat3/modules/stats!52
Maximiliano Schvindt пре 6 година
родитељ
комит
d99e20bec4

+ 9 - 0
src/StatsBundle/Command/GenerateRemoteCrontabCommand.php

@@ -98,6 +98,15 @@ class GenerateRemoteCrontabCommand extends ContainerAwareCommand
                 $data = $device->jsonExtraData();
                 $deviceId = $device->getDeviceId();
 
+                if(isset($data['timeDiscovery']) && $data['timeDiscovery'] > 0) {
+                    $timeDiscovery = (int) $data['timeDiscovery'];
+                    $params = "--args=--action:Discovery --args=--entity:FTTHBundle\\\\\Entity\\\\\OLT --args=--id:{$deviceId}";
+                    $content .= PHP_EOL . PHP_EOL . "# Autodiscovery {$deviceId} is OK " . PHP_EOL;
+                    $content .= "*/{$timeDiscovery} * * * * {$pathConsole} amqp:remote --route=ftth workflow:run:action {$params} >> /var/log/cron.log 2>&1" . PHP_EOL;
+                } else {
+                    $content .= PHP_EOL . PHP_EOL . "# Autodiscovery {$deviceId} skiped, timeDiscovery is 0 or null or undefined" . PHP_EOL;
+                }
+
                 if ($data['executeSnmp'] == 0){
 		            $content .= PHP_EOL . PHP_EOL . "# Device {$deviceId} skiped, executeSnmp is 0" . PHP_EOL;
                     continue;

+ 7 - 2
src/StatsBundle/Services/DeviceManager.php

@@ -64,7 +64,9 @@ class DeviceManager
         $count = 0;
 
         foreach ($deviceServers as $deviceServer) {
-            $baseRoutes = json_decode($this->webservice->makeGetRequest($deviceServer->getUrl()), true);
+            $baseRoutes = json_decode($this->webservice->makeGetRequest(
+                $deviceServer->getUrl(), 'GET', [], ["username"=>getenv('CMD_USERNAME'), "password"=>getenv('CMD_PASSWORD')]
+            ), true);
 
             if (!isset($baseRoutes['get_devices'])) {
                 $devicesRoute = $deviceServer->getUrl();
@@ -91,7 +93,10 @@ class DeviceManager
                 $limit = 2000;
                 $offset = 0;
 
-                $remoteDevices = $this->webservice->getData($devicesRoute, $filters, array(), $limit, $offset);
+                $url = $this->webservice->buildUrl($devicesRoute, $filters, false, array(), $limit, $offset);
+                $remoteDevices = json_decode($this->webservice->makeGetRequest(
+                    $url, 'GET', [], ["username"=>getenv('CMD_USERNAME'), "password"=>getenv('CMD_PASSWORD')]
+                ), true);
 
                 while (!empty($remoteDevices)) {
                     $devices_values = array();