ソースを参照

Merged in FD3-740 (pull request #115)

FD3-740 se asocia número de vlan a número de vlan de service_port

Approved-by: Maximiliano Schvindt <maximiliano@interlink.com.ar>
Guillermo Espinoza 6 年 前
コミット
366d371665

+ 0 - 27
src/FTTHBundle/Entity/ServicePort.php

@@ -63,9 +63,6 @@ class ServicePort
      */
     protected $vlan = 0;
 
-    /** @ORM\Column(type="string") */
-    private $type;
-
     /**
      * @ORM\ManyToOne(targetEntity="\FTTHBundle\Entity\ONU", inversedBy="servicePorts", fetch="EXTRA_LAZY", cascade={"persist", "remove"})
      * @ORM\JoinColumn(name="onu_id", referencedColumnName="id", onDelete="CASCADE")
@@ -99,30 +96,6 @@ class ServicePort
         return $this->number;
     }
 
-    /**
-     * Set type
-     *
-     * @param string $type
-     *
-     * @return ServicePort
-     */
-    public function setType($type)
-    {
-        $this->type = $type;
-
-        return $this;
-    }
-
-    /**
-     * Get type
-     *
-     * @return string
-     */
-    public function getType()
-    {
-        return $this->type;
-    }
-
     /**
      * Set olt
      *

+ 29 - 16
src/FTTHBundle/EventListener/ONUSubscriber.php

@@ -302,9 +302,24 @@ class ONUSubscriber implements EventSubscriber
             	$model_extra_data = array();
             }
             
+            // Si la ONU no tiene asignadas vlans, busco alguna que este por default
+            $vlans = $onu->getVlans() ?: [];
+            $vlanDefault = $this->em->getRepository(VLanID::class)
+                ->findOneBy(array(
+                    "usedByDefault" => true,
+                ));
+            if ((is_null($vlans) || count($vlans) == 0) && $vlanDefault) {
+                $vlans = [
+                    $vlanDefault,
+                ];
+            }
+            
             if (isset($model_extra_data['auto-create-service-ports']) and 
-                $model_extra_data['auto-create-service-ports'] === true and count($sp) == 0) {
+                $model_extra_data['auto-create-service-ports'] === true and count($sp) == 0
+                and count($vlans)) {
                 $olt = $onu->getNAP()->getOLT();
+                
+                // Se buscan los ServicePort utilizados en la OLT
                 $used_sp = $this->em->getRepository(ServicePort::class)->findBy(array(
                     "olt" => $olt,
                 ));
@@ -314,13 +329,9 @@ class ONUSubscriber implements EventSubscriber
                 }
                     
                 $foundit = array();
-                $found_at_least = 2;
-                $service_type = array( "data", "voip", /*'iptv'*/);
-                $vlangemport_config = array(
-	    			'voip' => array('gemport' => 0, 'vlan' => 13), 
-	    			'data' => array('gemport' => 1, 'vlan' => 10)
-	    		);
-                
+                $found_at_least = count($vlans);
+                                
+                // Si existen ServicePort asignados se buscan los números libres                            
                 $max_n = 2;
                 if (count($services)) {
                     $max_n = @max(array_keys($services)); //Warning: max(): Array must contain at least one element
@@ -339,18 +350,20 @@ class ONUSubscriber implements EventSubscriber
                     $foundit[] = 1 + $max_n + $i;
                 }
                 
+                $vlanNumbers = [];
+                foreach ($vlans as $vlan) {
+                    $vlanNumbers[] = $vlan->getValue();
+                }
+                
+                $gemport = 0;
                 foreach ($foundit as $key => $num) {
                     $sp = new ServicePort();
-                    $ok = list($skey, $ser) = each($service_type);
-                    if ($ok === false) {
-                        reset($service_type);
-                        $ok = list($skey, $ser) = current($service_type);
-                    }
                     $sp->setNumber($num);
-                    $sp->setGemport($vlangemport_config[$ser]['gemport']);
-                    $sp->setVlan($vlangemport_config[$ser]['vlan']);
-                    $sp->setType($ser);
+                    $sp->setGemport($gemport);
+                    $sp->setVlan(array_shift($vlanNumbers));
                     $onu->addServicePort($sp);
+                    
+                    $gemport++;
                 }
                 $this->em->flush();
             }

+ 0 - 8
src/FTTHBundle/Form/ServicePortType.php

@@ -16,14 +16,6 @@ class ServicePortType extends AbstractType
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('type', ChoiceType::class, array(
-    		    'choices'  => array(
-        			'Data' => 'data',
-        			'VoIP' => 'voip',
-        			'IPTV' => 'iptv',
-    		    ),
-    		    'label' => 'form.service_port.type',
-			))
             ->add('number', null, array(
     			'attr' => array('maxlength' => 6),
     			'label'=> 'form.service_port.number'

+ 1 - 1
src/FTTHBundle/Resources/translations/FTTHBundle.es.yml

@@ -309,7 +309,7 @@ helps:
     onu_serial_number: Serial Number de la ONU conformado por 16 caracteres, si es vacío lo calculamos desde el Identificador.
     onu_pon_serial_number: Identificador de la ONU, puede ser un Serial Number o Pon Serial Number.
     onu_pon_serial_number_aux: Pon Serial Number de la ONU conformado por 12 caracteres, si es vacío lo calculamos desde el Identificador.
-    service_port: Los services ports son creados automaticamente, si el modelo de OLT tiene seteado 'auto-create-service-ports' == true, en caso de modificarlos <b>no</b> se actualizaran en la OLT, sino que seran utilizados en el siguiente comando.
+    service_port: Los services ports son creados automáticamente, si el modelo de OLT tiene seteado 'auto-create-service-ports' == true y asigne una plantilla de ONU, en caso de modificarlos <b>no</b> se actualizarán en el momento en la OLT, sino que serán utilizados en el siguiente comando.
     tr069_wifi: La configuración de estos campos puede depender/variar según el modelo de la ONU/ONT. Los campos pueden tardar en actualizarse.
     tr069_catv: La configuración de este campo puede depender/variar según el modelo de la ONU/ONT. El campo puede tardar en actualizarse.
     tr069_no_edit: El servicio TR069 se encuentra solamente disponible para la edición de la ONU/ONT.