Completed
Push — master ( 5fb806...0f3195 )
by Nicolas
21:50
created

LoadBalancerExtension::load()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 23
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 23
rs 9.0856
cc 3
eloc 14
nc 3
nop 2
1
<?php
2
3
namespace NBN\LoadBalancerBundle\DependencyInjection;
4
5
use NBN\LoadBalancer\LoadBalancer;
6
use Symfony\Component\Config\FileLocator;
7
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
8
use Symfony\Component\DependencyInjection\Reference;
9
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
12
/**
13
 * @author Nicolas Bastien <[email protected]>
14
 */
15
class LoadBalancerExtension extends Extension
16
{
17
    /**
18
     * {@inheritDoc}
19
     */
20
    public function load(array $configs, ContainerBuilder $container)
21
    {
22
        $configuration = new Configuration();
23
        $config = $this->processConfiguration($configuration, $configs);
24
25
        $container->setParameter('nbn_loadbalancer.load_limit', $config['load_limit']);
26
27
        $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
28
        $loader->load('chooser.xml');
29
30
        //Instanciate LoadBalancer with corresponding chooser and hosts
31
        $container
32
            ->register('nbn_loadbalancer.loadbalancer', LoadBalancer::class)
33
            ->addArgument([])
34
            ->addArgument(new Reference(sprintf('nbn_loadbalancer.chooser.%s', $config['host_chooser'])));
35
36
        if (count($config['hosts'])) {
37
            $loadbalancer = $container->getDefinition('nbn_loadbalancer.loadbalancer');
38
            foreach($config['hosts'] as $id => $hostConfiguration) {
0 ignored issues
show
Coding Style introduced by
Expected 1 space after FOREACH keyword; 0 found
Loading history...
39
                $loadbalancer->addMethodCall('addHostByConfiguration', [$id, $hostConfiguration['url'], $hostConfiguration['settings']]);
40
            }
41
        }
42
    }
43
}
44