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