Catalog alignment
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / impl / validator / config / ValidationToolConfiguration.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.asdctool.impl.validator.config;
22
23 import org.openecomp.sdc.asdctool.impl.VrfObjectFixHandler;
24 import org.openecomp.sdc.asdctool.impl.validator.ArtifactToolBL;
25 import org.openecomp.sdc.asdctool.impl.validator.ValidationToolBL;
26 import org.openecomp.sdc.asdctool.impl.validator.executers.IArtifactValidatorExecuter;
27 import org.openecomp.sdc.asdctool.impl.validator.executers.NodeToscaArtifactsValidatorExecuter;
28 import org.openecomp.sdc.asdctool.impl.validator.executers.ServiceToscaArtifactsValidatorExecutor;
29 import org.openecomp.sdc.asdctool.impl.validator.executers.ServiceValidatorExecuter;
30 import org.openecomp.sdc.asdctool.impl.validator.executers.VFToscaArtifactValidatorExecutor;
31 import org.openecomp.sdc.asdctool.impl.validator.executers.ValidatorExecuter;
32 import org.openecomp.sdc.asdctool.impl.validator.executers.VfValidatorExecuter;
33 import org.openecomp.sdc.asdctool.impl.validator.tasks.VfValidationTask;
34 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.ArtifactValidationUtils;
35 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.ServiceArtifactValidationTask;
36 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.VfArtifactValidationTask;
37 import org.openecomp.sdc.asdctool.impl.validator.tasks.moduleJson.ModuleJsonTask;
38 import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
39 import org.openecomp.sdc.asdctool.migration.config.mocks.DistributionEngineMock;
40 import org.openecomp.sdc.be.components.distribution.engine.IDistributionEngine;
41 import org.openecomp.sdc.be.components.distribution.engine.ServiceDistributionArtifactsBuilder;
42 import org.openecomp.sdc.be.config.CatalogModelSpringConfig;
43 import org.openecomp.sdc.be.dao.DAOJanusGraphStrategy;
44 import org.openecomp.sdc.be.dao.JanusGraphClientStrategy;
45 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
46 import org.openecomp.sdc.be.dao.cassandra.CassandraClient;
47 import org.openecomp.sdc.be.dao.config.DAOSpringConfig;
48 import org.openecomp.sdc.be.dao.impl.HealingPipelineDao;
49 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphClient;
50 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
51 import org.openecomp.sdc.be.dao.jsongraph.HealingJanusGraphDao;
52 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
53 import org.openecomp.sdc.be.model.DerivedNodeTypeResolver;
54 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArchiveOperation;
55 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ByToscaNameDerivedNodeTypeResolver;
56 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.GroupsOperation;
57 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTemplateOperation;
58 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.NodeTypeOperation;
59 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.TopologyTemplateOperation;
60 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
61 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
62 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
63 import org.openecomp.sdc.config.CatalogBESpringConfig;
64 import org.springframework.beans.factory.annotation.Qualifier;
65 import org.springframework.beans.factory.config.PropertiesFactoryBean;
66 import org.springframework.context.annotation.Bean;
67 import org.springframework.context.annotation.Configuration;
68 import org.springframework.context.annotation.Import;
69 import org.springframework.context.annotation.Primary;
70 import org.springframework.core.io.FileSystemResource;
71
72 import java.util.List;
73
74 /**
75  * Created by chaya on 7/3/2017.
76  */
77 @Configuration
78 @Import({DAOSpringConfig.class, CatalogBESpringConfig.class, CatalogModelSpringConfig.class})
79 public class ValidationToolConfiguration {
80
81     @Bean
82     public ServiceValidatorExecuter basicServiceValidator(JanusGraphDao janusGraphDao) {
83         return new ServiceValidatorExecuter(janusGraphDao);
84     }
85
86     @Bean
87     public NodeToscaArtifactsValidatorExecuter NodeToscaArtifactsValidatorValidator(JanusGraphDao janusGraphDao,
88         ToscaOperationFacade toscaOperationFacade) {
89         return new NodeToscaArtifactsValidatorExecuter(janusGraphDao, toscaOperationFacade);
90     }
91
92     @Bean
93     public ServiceToscaArtifactsValidatorExecutor ServiceToscaArtifactsValidator(JanusGraphDao janusGraphDao,
94         ToscaOperationFacade toscaOperationFacade) {
95         return new ServiceToscaArtifactsValidatorExecutor(janusGraphDao, toscaOperationFacade);
96     }
97
98     @Bean
99     public VFToscaArtifactValidatorExecutor VFToscaArtifactValidator(JanusGraphDao janusGraphDao,
100         ToscaOperationFacade toscaOperationFacade) {
101         return new VFToscaArtifactValidatorExecutor(janusGraphDao, toscaOperationFacade);
102     }
103
104     @Bean
105     public VfArtifactValidationTask vfArtifactValidationTask(ArtifactValidationUtils artifactValidationUtils) {
106         return new VfArtifactValidationTask(artifactValidationUtils);
107     }
108
109     @Bean
110     public ServiceArtifactValidationTask serviceArtifactValidationTask(ArtifactValidationUtils artifactValidationUtils) {
111         return new ServiceArtifactValidationTask(artifactValidationUtils);
112     }
113
114     @Bean
115     public ModuleJsonTask moduleJsonTask(TopologyTemplateOperation topologyTemplateOperation) {
116         return new ModuleJsonTask(topologyTemplateOperation);
117     }
118
119     @Bean
120     public ValidationToolBL validationToolBL(List<ValidatorExecuter> validators) {
121         return new ValidationToolBL(validators);
122     }
123
124     @Bean
125     public ArtifactToolBL artifactToolBL(List<IArtifactValidatorExecuter> validators) {
126         return new ArtifactToolBL(validators);
127     }
128
129     @Bean
130     public VfValidatorExecuter basicVfValidator(List<VfValidationTask> tasks, JanusGraphDao janusGraphDao) {
131         return new VfValidatorExecuter(tasks, janusGraphDao);
132     }
133
134     @Bean
135     public ReportManager reportManager() { return new ReportManager();}
136
137     @Bean(name = "artifact-cassandra-dao")
138     public ArtifactCassandraDao artifactCassandraDao(CassandraClient cassandraClient) {
139         return new ArtifactCassandraDao(cassandraClient);
140     }
141
142     @Bean
143     public ArtifactValidationUtils artifactValidationUtils(ArtifactCassandraDao artifactCassandraDao,
144         TopologyTemplateOperation topologyTemplateOperation) {
145         return new ArtifactValidationUtils(artifactCassandraDao, topologyTemplateOperation);
146     }
147
148     @Bean(name = "groups-operation")
149     public GroupsOperation jsonGroupsOperation() {
150         return new GroupsOperation();
151     }
152
153     @Bean(name = "cassandra-client")
154     public CassandraClient cassandraClient() {
155         return new CassandraClient();
156     }
157
158     @Bean(name = "dao-janusgraph-strategy")
159     public JanusGraphClientStrategy daoStrategy() {
160         return new DAOJanusGraphStrategy();
161     }
162
163     @Bean(name = "migration-janusgraph-client", initMethod = "createGraph")
164     public JanusGraphClient janusGraphMigrationClient(@Qualifier("dao-janusgraph-strategy")
165                                                      JanusGraphClientStrategy janusGraphClientStrategy) {
166         return new JanusGraphClient(janusGraphClientStrategy);
167     }
168
169     @Bean(name = "tosca-operation-facade")
170     public ToscaOperationFacade toscaOperationFacade() {
171         return new ToscaOperationFacade();
172     }
173
174     @Bean(name = "node-type-operation")
175     public NodeTypeOperation nodeTypeOperation(@Qualifier("mig-derived-resolver") DerivedNodeTypeResolver migrationDerivedNodeTypeResolver) {
176         return new NodeTypeOperation(migrationDerivedNodeTypeResolver);
177     }
178
179     @Bean(name = "topology-template-operation")
180     public TopologyTemplateOperation topologyTemplateOperation() {
181         return new TopologyTemplateOperation();
182     }
183
184     @Bean(name = "node-template-operation")
185     public NodeTemplateOperation nodeTemplateOperation() {
186         return new NodeTemplateOperation();
187     }
188
189
190     @Bean(name = "mig-derived-resolver")
191     public DerivedNodeTypeResolver migrationDerivedNodeTypeResolver() {
192         return new ByToscaNameDerivedNodeTypeResolver();
193     }
194
195     @Bean
196     public JanusGraphGenericDao janusGraphGenericDao(@Qualifier("migration-janusgraph-client") JanusGraphClient janusGraphClient) {
197         return new JanusGraphGenericDao(janusGraphClient);
198     }
199
200     @Bean(name = "elasticsearchConfig")
201     public PropertiesFactoryBean mapper() {
202         String configHome = System.getProperty("config.home");
203         PropertiesFactoryBean bean = new PropertiesFactoryBean();
204         bean.setLocation(new FileSystemResource(configHome + "/elasticsearch.yml"));
205         return bean;
206     }
207
208     @Bean
209     public ArchiveOperation archiveOperation(JanusGraphDao janusGraphDao, IGraphLockOperation graphLockOperation) {
210         return new ArchiveOperation(janusGraphDao, graphLockOperation);
211     }
212
213     @Bean
214     public IGraphLockOperation graphLockOperation() {
215         return new GraphLockOperation();
216     }
217
218     @Bean(name = "janusgraph-client")
219     @Primary
220     public JanusGraphClient janusGraphClient(@Qualifier("dao-client-strategy")
221         JanusGraphClientStrategy janusGraphClientStrategy) {
222         return new JanusGraphClient(janusGraphClientStrategy);
223     }
224
225     @Bean(name ="dao-client-strategy")
226     public JanusGraphClientStrategy janusGraphClientStrategy() {
227         return new DAOJanusGraphStrategy();
228     }
229
230     @Bean
231     public VrfObjectFixHandler vrfObjectFixHandler(@Qualifier("janusgraph-dao")
232         JanusGraphDao janusGraphDao){
233         return new VrfObjectFixHandler(janusGraphDao);
234     }
235
236     @Bean(name = "healingPipelineDao")
237     public HealingPipelineDao healingPipelineDao(){
238         return new HealingPipelineDao();
239     }
240
241     @Bean(name = "janusgraph-dao")
242     public HealingJanusGraphDao healingJanusGraphDao(HealingPipelineDao healingPipelineDao, JanusGraphClient janusGraphClient) {
243         return new HealingJanusGraphDao(healingPipelineDao, janusGraphClient);
244     }
245
246     @Bean
247     public IDistributionEngine iDistributionEngine() {
248         return new DistributionEngineMock();
249     }
250
251     @Bean
252     public ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder(ToscaOperationFacade toscaOperationFacade) {
253         return new ServiceDistributionArtifactsBuilder(toscaOperationFacade);
254     }
255 }