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