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