3c0d021d75eab28ea2654735551fb637afa37a4b
[netvirt.git] / vpnservice / aclservice / impl / src / main / java / org / opendaylight / netvirt / aclservice / AclServiceImplFactory.java
1 /*
2  * Copyright (c) 2016 Red Hat, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.netvirt.aclservice;
9
10 import javax.inject.Inject;
11 import javax.inject.Singleton;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
14 import org.opendaylight.infrautils.inject.AbstractLifecycle;
15 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
16 import org.opendaylight.netvirt.aclservice.api.AclInterfaceCache;
17 import org.opendaylight.netvirt.aclservice.utils.AclDataUtil;
18 import org.opendaylight.netvirt.aclservice.utils.AclServiceUtils;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.config.rev160806.AclserviceConfig;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 @Singleton
25 public class AclServiceImplFactory extends AbstractLifecycle {
26
27     private static final Logger LOG = LoggerFactory.getLogger(AclServiceImplFactory.class);
28     //private static final String SECURITY_GROUP_MODE = "security-group-mode";
29
30     private final DataBroker dataBroker;
31     private final IMdsalApiManager mdsalManager;
32     private final AclDataUtil aclDataUtil;
33     private final AclServiceUtils aclServiceUtils;
34     private final JobCoordinator jobCoordinator;
35     private final AclInterfaceCache aclInterfaceCache;
36
37     @Inject
38     public AclServiceImplFactory(DataBroker dataBroker, IMdsalApiManager mdsalManager, AclserviceConfig config,
39             AclDataUtil aclDataUtil, AclServiceUtils aclServiceUtils, JobCoordinator jobCoordinator,
40             AclInterfaceCache aclInterfaceCache) {
41         this.dataBroker = dataBroker;
42         this.mdsalManager = mdsalManager;
43         this.aclDataUtil = aclDataUtil;
44         this.aclServiceUtils = aclServiceUtils;
45         this.jobCoordinator = jobCoordinator;
46         this.aclInterfaceCache = aclInterfaceCache;
47
48         LOG.info("AclserviceConfig: {}", config);
49     }
50
51     protected InstanceIdentifier<AclserviceConfig> getWildCardPath() {
52         return InstanceIdentifier
53                 .create(AclserviceConfig.class);
54     }
55
56     @Override
57     protected void start() {
58         LOG.info("{} start", getClass().getSimpleName());
59     }
60
61     @Override
62     protected void stop() {
63         LOG.info("{} close", getClass().getSimpleName());
64     }
65
66     public AbstractIngressAclServiceImpl createIngressAclServiceImpl() {
67         LOG.info("creating ingress acl service");
68         return new StatefulIngressAclServiceImpl(dataBroker, mdsalManager, aclDataUtil, aclServiceUtils,
69                 jobCoordinator, aclInterfaceCache);
70     }
71
72     public AbstractEgressAclServiceImpl createEgressAclServiceImpl() {
73         LOG.info("creating egress acl service");
74         return new StatefulEgressAclServiceImpl(dataBroker, mdsalManager, aclDataUtil, aclServiceUtils,
75                 jobCoordinator, aclInterfaceCache);
76     }
77
78 }