d59a9aae6a79320b4777a4f2253a26c70c8ff900
[sdc.git] /
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 java.util.List;
24 import org.openecomp.sdc.asdctool.impl.VrfObjectFixHandler;
25 import org.openecomp.sdc.asdctool.impl.validator.ArtifactToolBL;
26 import org.openecomp.sdc.asdctool.impl.validator.ValidationToolBL;
27 import org.openecomp.sdc.asdctool.impl.validator.executers.*;
28 import org.openecomp.sdc.asdctool.impl.validator.tasks.VfValidationTask;
29 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.ArtifactValidationUtils;
30 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.ServiceArtifactValidationTask;
31 import org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts.VfArtifactValidationTask;
32 import org.openecomp.sdc.asdctool.impl.validator.tasks.moduleJson.ModuleJsonTask;
33 import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
34 import org.openecomp.sdc.asdctool.migration.config.mocks.DistributionEngineMock;
35 import org.openecomp.sdc.be.components.distribution.engine.IDistributionEngine;
36 import org.openecomp.sdc.be.components.distribution.engine.ServiceDistributionArtifactsBuilder;
37 import org.openecomp.sdc.be.config.CatalogModelSpringConfig;
38 import org.openecomp.sdc.be.dao.DAOJanusGraphStrategy;
39 import org.openecomp.sdc.be.dao.JanusGraphClientStrategy;
40 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
41 import org.openecomp.sdc.be.dao.cassandra.CassandraClient;
42 import org.openecomp.sdc.be.dao.config.DAOSpringConfig;
43 import org.openecomp.sdc.be.dao.impl.HealingPipelineDao;
44 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphClient;
45 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphGenericDao;
46 import org.openecomp.sdc.be.dao.jsongraph.HealingJanusGraphDao;
47 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
48 import org.openecomp.sdc.be.model.DerivedNodeTypeResolver;
49 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.*;
50 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
51 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
52 import org.openecomp.sdc.config.CatalogBESpringConfig;
53 import org.springframework.beans.factory.annotation.Qualifier;
54 import org.springframework.beans.factory.config.PropertiesFactoryBean;
55 import org.springframework.context.annotation.Bean;
56 import org.springframework.context.annotation.Configuration;
57 import org.springframework.context.annotation.Import;
58 import org.springframework.context.annotation.Primary;
59 import org.springframework.core.io.FileSystemResource;
60
61 /**
62  * Created by chaya on 7/3/2017.
63  */
64 @Configuration
65 @Import({DAOSpringConfig.class, CatalogBESpringConfig.class, CatalogModelSpringConfig.class})
66 public class ValidationToolConfiguration {
67
68     @Bean
69     public ServiceValidatorExecuter basicServiceValidator(JanusGraphDao janusGraphDao) {
70         return new ServiceValidatorExecuter(janusGraphDao);
71     }
72
73     @Bean
74     public NodeToscaArtifactsValidatorExecuter NodeToscaArtifactsValidatorValidator(JanusGraphDao janusGraphDao,
75         ToscaOperationFacade toscaOperationFacade) {
76         return new NodeToscaArtifactsValidatorExecuter(janusGraphDao, toscaOperationFacade);
77     }
78
79     @Bean
80     public ServiceToscaArtifactsValidatorExecutor ServiceToscaArtifactsValidator(JanusGraphDao janusGraphDao,
81         ToscaOperationFacade toscaOperationFacade) {
82         return new ServiceToscaArtifactsValidatorExecutor(janusGraphDao, toscaOperationFacade);
83     }
84
85     @Bean
86     public VFToscaArtifactValidatorExecutor VFToscaArtifactValidator(JanusGraphDao janusGraphDao,
87         ToscaOperationFacade toscaOperationFacade) {
88         return new VFToscaArtifactValidatorExecutor(janusGraphDao, toscaOperationFacade);
89     }
90
91     @Bean
92     public VfArtifactValidationTask vfArtifactValidationTask(ArtifactValidationUtils artifactValidationUtils) {
93         return new VfArtifactValidationTask(artifactValidationUtils);
94     }
95
96     @Bean
97     public ServiceArtifactValidationTask serviceArtifactValidationTask(ArtifactValidationUtils artifactValidationUtils) {
98         return new ServiceArtifactValidationTask(artifactValidationUtils);
99     }
100
101     @Bean
102     public ModuleJsonTask moduleJsonTask(TopologyTemplateOperation topologyTemplateOperation) {
103         return new ModuleJsonTask(topologyTemplateOperation);
104     }
105
106     @Bean
107     public ValidationToolBL validationToolBL(List<ValidatorExecuter> validators) {
108         return new ValidationToolBL(validators);
109     }
110
111     @Bean
112     public ArtifactToolBL artifactToolBL(List<IArtifactValidatorExecuter> validators) {
113         return new ArtifactToolBL(validators);
114     }
115
116     @Bean
117     public VfValidatorExecuter basicVfValidator(List<VfValidationTask> tasks, JanusGraphDao janusGraphDao) {
118         return new VfValidatorExecuter(tasks, janusGraphDao);
119     }
120
121     @Bean
122     public ReportManager reportManager() { return new ReportManager();}
123
124     @Bean(name = "artifact-cassandra-dao")
125     public ArtifactCassandraDao artifactCassandraDao(CassandraClient cassandraClient) {
126         return new ArtifactCassandraDao(cassandraClient);
127     }
128
129     @Bean
130     public ArtifactValidationUtils artifactValidationUtils(ArtifactCassandraDao artifactCassandraDao,
131         TopologyTemplateOperation topologyTemplateOperation) {
132         return new ArtifactValidationUtils(artifactCassandraDao, topologyTemplateOperation);
133     }
134
135     @Bean(name = "groups-operation")
136     public GroupsOperation jsonGroupsOperation() {
137         return new GroupsOperation();
138     }
139
140     @Bean(name = "cassandra-client")
141     public CassandraClient cassandraClient() {
142         return new CassandraClient();
143     }
144
145     @Bean(name = "dao-janusgraph-strategy")
146     public JanusGraphClientStrategy daoStrategy() {
147         return new DAOJanusGraphStrategy();
148     }
149
150     @Bean(name = "migration-janusgraph-client", initMethod = "createGraph")
151     public JanusGraphClient janusGraphMigrationClient(@Qualifier("dao-janusgraph-strategy")
152                                                      JanusGraphClientStrategy janusGraphClientStrategy) {
153         return new JanusGraphClient(janusGraphClientStrategy);
154     }
155
156     @Bean(name = "tosca-operation-facade")
157     public ToscaOperationFacade toscaOperationFacade() {
158         return new ToscaOperationFacade();
159     }
160
161     @Bean(name = "node-type-operation")
162     public NodeTypeOperation nodeTypeOperation(@Qualifier("mig-derived-resolver") DerivedNodeTypeResolver migrationDerivedNodeTypeResolver) {
163         return new NodeTypeOperation(migrationDerivedNodeTypeResolver);
164     }
165
166     @Bean(name = "topology-template-operation")
167     public TopologyTemplateOperation topologyTemplateOperation() {
168         return new TopologyTemplateOperation();
169     }
170
171     @Bean(name = "node-template-operation")
172     public NodeTemplateOperation nodeTemplateOperation() {
173         return new NodeTemplateOperation();
174     }
175
176
177     @Bean(name = "mig-derived-resolver")
178     public DerivedNodeTypeResolver migrationDerivedNodeTypeResolver() {
179         return new ByToscaNameDerivedNodeTypeResolver();
180     }
181
182     @Bean
183     public JanusGraphGenericDao janusGraphGenericDao(@Qualifier("migration-janusgraph-client") JanusGraphClient janusGraphClient) {
184         return new JanusGraphGenericDao(janusGraphClient);
185     }
186
187     @Bean(name = "elasticsearchConfig")
188     public PropertiesFactoryBean mapper() {
189         String configHome = System.getProperty("config.home");
190         PropertiesFactoryBean bean = new PropertiesFactoryBean();
191         bean.setLocation(new FileSystemResource(configHome + "/elasticsearch.yml"));
192         return bean;
193     }
194
195     @Bean
196     public ArchiveOperation archiveOperation(JanusGraphDao janusGraphDao, IGraphLockOperation graphLockOperation) {
197         return new ArchiveOperation(janusGraphDao, graphLockOperation);
198     }
199
200     @Bean
201     public IGraphLockOperation graphLockOperation() {
202         return new GraphLockOperation();
203     }
204
205     @Bean(name = "janusgraph-client")
206     @Primary
207     public JanusGraphClient janusGraphClient(@Qualifier("dao-client-strategy")
208         JanusGraphClientStrategy janusGraphClientStrategy) {
209         return new JanusGraphClient(janusGraphClientStrategy);
210     }
211
212     @Bean(name ="dao-client-strategy")
213     public JanusGraphClientStrategy janusGraphClientStrategy() {
214         return new DAOJanusGraphStrategy();
215     }
216
217     @Bean
218     public VrfObjectFixHandler vrfObjectFixHandler(@Qualifier("janusgraph-dao")
219         JanusGraphDao janusGraphDao){
220         return new VrfObjectFixHandler(janusGraphDao);
221     }
222
223     @Bean(name = "healingPipelineDao")
224     public HealingPipelineDao healingPipelineDao(){
225         return new HealingPipelineDao();
226     }
227
228     @Bean(name = "janusgraph-dao")
229     public HealingJanusGraphDao healingJanusGraphDao(HealingPipelineDao healingPipelineDao, JanusGraphClient janusGraphClient) {
230         return new HealingJanusGraphDao(healingPipelineDao, janusGraphClient);
231     }
232
233     @Bean
234     public IDistributionEngine iDistributionEngine() {
235         return new DistributionEngineMock();
236     }
237
238     @Bean
239     public ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder(ToscaOperationFacade toscaOperationFacade) {
240         return new ServiceDistributionArtifactsBuilder(toscaOperationFacade);
241     }
242 }