2 * ============LICENSE_START===================================================
3 * SPARKY (AAI UI service)
4 * ============================================================================
5 * Copyright © 2017 AT&T Intellectual Property.
6 * Copyright © 2017 Amdocs
8 * ============================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=====================================================
22 * ECOMP and OpenECOMP are trademarks
23 * and service marks of AT&T Intellectual Property.
26 package org.onap.aai.sparky.synchronizer;
29 * The Class SyncControllerBuilder.
31 public class SyncControllerBuilder {
35 * We'll have to revisit this class, as the sync controllers are wired up pretty differently now
39 * Test elastic search update api.
42 * public void testElasticSearchUpdateApi() { try {
44 * RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false);
46 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
48 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchDataProvider
49 * elasticSearchDataProvider = new ElasticSearchAdapter(nonCachingRestProvider, esConfig);
52 * "{ \"entityType\": \"complex\", \"pkey\": \"MORRISTOWN0075\", \"location\": { \"lat\": \"40.793414\", \"lon\": \"-74.480432\" }, \"selfLink\": \"https://aai-int1.test.att.com:8443/aai/v8/cloud-infrastructure/complexes/complex/MORRISTOWN0075?nodes-only\" }\n"
55 * String updateRequest = elasticSearchDataProvider.buildBulkImportOperationRequest(
56 * "topographysearchindex-localhost", "default",
57 * "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "6", payload);
59 * OperationResult or = elasticSearchDataProvider.doBulkOperation("http://localhost:9200/_bulk",
62 * System.out.println(or.toString());
64 * /* String BULK_IMPORT_INDEX_TEMPLATE =
65 * "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
67 * StringBuilder updateRequestPayload = new StringBuilder(128);
68 * updateRequestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE,
69 * "topographysearchindex-localhost", "default",
70 * "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "5"));
73 * updateRequestPayload.append(payload);
75 * OperationResult or = nonCachingRestProvider.doRestfulOperation(HttpMethod.PUT,
76 * "http://localhost:9200/_bulk", updateRequestPayload.toString(),
77 * RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED, RestfulDataAccessor.APPLICATION_JSON);
82 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
83 * "Error: failed to sync with message = " + exc.getMessage()); } }
85 * /** Do historical entity sync.
87 * public void doHistoricalEntitySync() { try { SyncController syncController = new
88 * SyncControllerImpl("historicalEntityTestController");
90 * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new
91 * RestClientBuilder());
93 * RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false);
95 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
97 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
99 * ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
102 * IndexIntegrityValidator entityCounterHistoryValidator = new
103 * IndexIntegrityValidator(nonCachingRestProvider, esConfig.getEntityCountHistoryIndex(),
104 * esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(),
105 * esConfig.buildElasticSearchEntityCountHistoryTableConfig());
107 * syncController.registerIndexValidator(entityCounterHistoryValidator);
114 * HistoricalEntitySummarizer historicalSummarizer = new
115 * HistoricalEntitySummarizer(esConfig.getEntityCountHistoryIndex());
116 * historicalSummarizer.setAaiDataProvider(aaiAdapter);
117 * historicalSummarizer.setEsDataProvider(esAdapter);
118 * syncController.registerEntitySynchronizer(historicalSummarizer);
122 * /* IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
123 * RestClientBuilder());
125 * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
126 * entitySearchIndexValidator.setIndexType("default");
127 * entitySearchIndexValidator.setIndexSettings("");
128 * entitySearchIndexValidator.setIndexSettings("");
130 * syncController.registerIndexValidator(entitySearchIndexValidator);
136 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
137 * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
140 // syncController.registerIndexCleaner(index1Cleaner);
144 * for (int x = 0; x < 10; x++) {
146 * syncController.performAction(SyncActions.SYNCHRONIZE);
148 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
150 * System.out.println("sync controller state = " + syncController.getState());
152 * Thread.sleep(1000); } }
154 * syncController.shutdown();
156 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
157 * "Error: failed to sync with message = " + exc.getMessage()); } }
159 * /** Do geo entity sync.
161 * public void doGeoEntitySync() { try {
163 * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new
164 * RestClientBuilder());
166 * RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false);
168 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
169 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
171 * ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
173 * IndexIntegrityValidator entitySearchIndexValidator = new
174 * IndexIntegrityValidator(nonCachingRestProvider, esConfig.getIndexName(), esConfig.getType(),
175 * esConfig.getIpAddress(), esConfig.getHttpPort(), esConfig.buildElasticSearchTableConfig());
177 * SyncController syncController = new SyncControllerImpl("geoEntitySyncTestController");
178 * syncController.registerIndexValidator(entitySearchIndexValidator);
183 * GeoSynchronizer geoSync = new GeoSynchronizer("topographysearchindex-localhost");
184 * geoSync.setAaiDataProvider(aaiAdapter); geoSync.setEsDataProvider(esAdapter);
185 * syncController.registerEntitySynchronizer(geoSync);
189 * /* IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
190 * RestClientBuilder());
192 * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
193 * entitySearchIndexValidator.setIndexType("default");
194 * entitySearchIndexValidator.setIndexSettings("");
195 * entitySearchIndexValidator.setIndexSettings("");
197 * syncController.registerIndexValidator(entitySearchIndexValidator);
203 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
204 * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
207 // syncController.registerIndexCleaner(index1Cleaner);
211 * syncController.performAction(SyncActions.SYNCHRONIZE);
213 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
214 * Thread.sleep(1000); }
216 * syncController.shutdown();
218 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
219 * "Error: failed to sync with message = " + exc.getMessage()); } }
221 * /** Do searchable entitysync.
223 * public void doSearchableEntitysync() { try {
226 * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new
227 * RestClientBuilder());
229 * RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false);
231 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
232 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
234 * ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
238 * SyncController syncController = new SyncControllerImpl("searchtableEntityTestController");
240 * ViewInspectEntitySynchronizer ses = new
241 * ViewInspectEntitySynchronizer("entitysearchindex-localhost");
242 * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter);
243 * syncController.registerEntitySynchronizer(ses);
247 * /* IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
248 * RestClientBuilder());
250 * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
251 * entitySearchIndexValidator.setIndexType("default");
253 * syncController.registerIndexValidator(entitySearchIndexValidator);
259 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
260 * "entitysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
262 * syncController.registerIndexCleaner(index1Cleaner);
267 * syncController.performAction(SyncActions.SYNCHRONIZE);
269 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
270 * Thread.sleep(1000); }
272 * syncController.shutdown();
274 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
275 * "Error: failed to sync with message = " + exc.getMessage()); } }
277 * /** Do cross entity reference sync.
279 * public void doCrossEntityReferenceSync() { try {
281 * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new
282 * RestClientBuilder());
284 * RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false);
286 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
287 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
289 * ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
291 * SyncController syncController = new SyncControllerImpl("crossEntityRefSyncController");
293 * CrossEntityReferenceSynchronizer cers = new
294 * CrossEntityReferenceSynchronizer("entitysearchindex-localhost",
295 * ActiveInventoryConfig.getConfig()); cers.setAaiDataProvider(aaiAdapter);
296 * cers.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(cers);
298 * ViewInspectEntitySynchronizer ses = new
299 * ViewInspectEntitySynchronizer("entitysearchindex-localhost");
300 * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter);
301 * syncController.registerEntitySynchronizer(ses);
303 * ElasticSearchConfig config = ElasticSearchConfig.getConfig();
305 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(
306 * nonCachingRestProvider, config.getIndexName(), config.getType(), config.getIpAddress(),
307 * config.getHttpPort(), config.buildElasticSearchTableConfig());
309 * syncController.registerIndexValidator(entitySearchIndexValidator);
313 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
314 * config.getIndexName(), config.getType(), config.getIpAddress(), config.getHttpPort(), 5,
317 * syncController.registerIndexCleaner(index1Cleaner);
321 * syncController.performAction(SyncActions.SYNCHRONIZE);
323 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
324 * Thread.sleep(1000); }
326 * syncController.shutdown();
328 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
329 * "Error: Failed to sync with message = " + exc.getMessage()); } }
331 * /** Do suggestion entitysync.
333 * public void doSuggestionEntitySync() { try { ActiveInventoryAdapter aaiAdapter = new
334 * ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
336 * RestClientBuilder clientBuilder = new RestClientBuilder();
337 * clientBuilder.setUseHttps(false);
339 * RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
340 * ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
342 * ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,
345 * SyncController syncController = new SyncControllerImpl("suggestionEntityTestController");
347 * AutosuggestionSynchronizer ses = new
348 * AutosuggestionSynchronizer("entityautosuggestindex-localhost");
349 * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter);
350 * syncController.registerEntitySynchronizer(ses);
352 * syncController.performAction(SyncActions.SYNCHRONIZE);
354 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
355 * Thread.sleep(1000); }
357 * syncController.shutdown();
359 * } catch (Exception exc) { exc.printStackTrace(); System.out.println(
360 * "Error: failed to sync with message = " + exc.getMessage()); } }
364 * public void doNoOpSync() { try { SyncController syncController = new
365 * SyncControllerImpl("noopSyncTestController");
367 * /* ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new
368 * RestClientBuilder());
370 * aaiAdapter.setCacheEnabled(true);
372 * /*InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
373 * aaiAdapter.setEntityCache(aaiInMemoryCache);
377 * PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
378 * aaiAdapter.setEntityCache(aaiDiskCache);
380 * ElasticSearchConfig config = ElasticSearchConfig.getConfig(); OXMModelLoader loader =
381 * OXMModelLoader.getInstance(); SyncAdapter syncAdapter = new SyncAdapter(new
382 * RestClientBuilder(), config, loader);
386 * SearchableEntitySynchronizer ses = new SearchableEntitySynchronizer();
387 * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(syncAdapter);
388 * syncController.registerEntitySynchronizer(ses);
392 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
393 * RestClientBuilder());
395 * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
396 * entitySearchIndexValidator.setIndexType("default");
397 * entitySearchIndexValidator.setIndexSettings("");
398 * entitySearchIndexValidator.setIndexSettings("");
400 * syncController.registerIndexValidator(entitySearchIndexValidator);
404 * ElasticSearchEntityPurger p1 = new ElasticSearchEntityPurger(new RestClientBuilder());
405 * p1.setIndexName("esi-blal-blah");
407 * ElasticSearchEntityPurger p2 = new ElasticSearchEntityPurger(new RestClientBuilder());
408 * p2.setIndexName("esi-topo-blah");
412 * syncController.performAction(SyncActions.SYNCHRONIZE);
414 * while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
415 * Thread.sleep(1000); }
417 * syncController.shutdown();
419 * } catch (Exception exc) { System.out.println("Error: failed to sync with message = " +
420 * exc.getMessage()); } }
423 * /** The main method.
425 * @param args the arguments
427 * public static void main(String[] args) { //boolean runSearchableEntitySync = false; //boolean
428 * runGeoEntitySync = true;
430 * //System.setProperty("AJSC_HOME", "e:\\dev"); //
431 * System.getProperties().setProperty("AJSC_HOME", //
432 * "c:\\rpo\\tier-support-ui\\target\\swm\\package\\nix\\" // +
433 * "dist_files\\opt\\app\\ajsc-tier-support-ui");
435 * System.setProperty("CONFIG_HOME", "appconfig-local"); System.setProperty("AJSC_HOME",
436 * "x:\\1710_extensibility\\");
438 * SyncControllerBuilder syncBuilder = new SyncControllerBuilder();
440 * /* if (runSearchableEntitySync) syncBuilder.doSearchableEntitysync();
443 * syncBuilder.doSearchableEntitysync(); // syncBuilder.doCrossEntityReferenceSync(); //
444 * syncBuilder.doHistoricalEntitySync(); // syncBuilder.doGeoEntitySync();
445 * //syncBuilder.doSuggestionEntitySync(); //syncBuilder.doMasterEntitySync();
447 * // syncBuilder.testElasticSearchUpdateAPI();
449 * /* if (runGeoEntitySync) { syncBuilder.doGeoEntitySync(); }