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.
41 /* public void testElasticSearchUpdateApi() {
44 RestClientBuilder clientBuilder = new RestClientBuilder();
45 clientBuilder.setUseHttps(false);
47 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
49 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
50 ElasticSearchDataProvider elasticSearchDataProvider =
51 new ElasticSearchAdapter(nonCachingRestProvider, esConfig);
54 "{ \"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";
56 String updateRequest = elasticSearchDataProvider.buildBulkImportOperationRequest(
57 "topographysearchindex-localhost", "default",
58 "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "6", payload);
61 elasticSearchDataProvider.doBulkOperation("http://localhost:9200/_bulk", updateRequest);
63 System.out.println(or.toString());
66 * String BULK_IMPORT_INDEX_TEMPLATE =
67 * "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n";
69 * StringBuilder updateRequestPayload = new StringBuilder(128);
70 * updateRequestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE,
71 * "topographysearchindex-localhost", "default",
72 * "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "5"));
75 * updateRequestPayload.append(payload);
77 * OperationResult or = nonCachingRestProvider.doRestfulOperation(HttpMethod.PUT,
78 * "http://localhost:9200/_bulk", updateRequestPayload.toString(),
79 * RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED,
80 * RestfulDataAccessor.APPLICATION_JSON);
85 } catch (Exception exc) {
86 exc.printStackTrace();
87 System.out.println("Error: failed to sync with message = " + exc.getMessage());
92 * Do historical entity sync.
94 public void doHistoricalEntitySync() {
96 SyncController syncController = new SyncControllerImpl("historicalEntityTestController");
98 ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
100 RestClientBuilder clientBuilder = new RestClientBuilder();
101 clientBuilder.setUseHttps(false);
103 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
105 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
107 ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
110 IndexIntegrityValidator entityCounterHistoryValidator =
111 new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getEntityCountHistoryIndex(),
112 esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(),
113 esConfig.buildElasticSearchEntityCountHistoryTableConfig());
115 syncController.registerIndexValidator(entityCounterHistoryValidator);
122 HistoricalEntitySummarizer historicalSummarizer =
123 new HistoricalEntitySummarizer(esConfig.getEntityCountHistoryIndex());
124 historicalSummarizer.setAaiDataProvider(aaiAdapter);
125 historicalSummarizer.setEsDataProvider(esAdapter);
126 syncController.registerEntitySynchronizer(historicalSummarizer);
131 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
132 * RestClientBuilder());
134 * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
135 * entitySearchIndexValidator.setIndexType("default");
136 * entitySearchIndexValidator.setIndexSettings("");
137 * entitySearchIndexValidator.setIndexSettings("");
139 * syncController.registerIndexValidator(entitySearchIndexValidator);
145 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
146 * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
149 // syncController.registerIndexCleaner(index1Cleaner);
153 for (int x = 0; x < 10; x++) {
155 syncController.performAction(SyncActions.SYNCHRONIZE);
157 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
159 System.out.println("sync controller state = " + syncController.getState());
165 syncController.shutdown();
167 } catch (Exception exc) {
168 exc.printStackTrace();
169 System.out.println("Error: failed to sync with message = " + exc.getMessage());
174 * Do geo entity sync.
176 public void doGeoEntitySync() {
179 ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
181 RestClientBuilder clientBuilder = new RestClientBuilder();
182 clientBuilder.setUseHttps(false);
184 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
185 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
187 ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
189 IndexIntegrityValidator entitySearchIndexValidator =
190 new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getIndexName(),
191 esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(),
192 esConfig.buildElasticSearchTableConfig());
194 SyncController syncController = new SyncControllerImpl("geoEntitySyncTestController");
195 syncController.registerIndexValidator(entitySearchIndexValidator);
200 GeoSynchronizer geoSync = new GeoSynchronizer("topographysearchindex-localhost");
201 geoSync.setAaiDataProvider(aaiAdapter);
202 geoSync.setEsDataProvider(esAdapter);
203 syncController.registerEntitySynchronizer(geoSync);
208 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
209 * RestClientBuilder());
211 * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost");
212 * entitySearchIndexValidator.setIndexType("default");
213 * entitySearchIndexValidator.setIndexSettings("");
214 * entitySearchIndexValidator.setIndexSettings("");
216 * syncController.registerIndexValidator(entitySearchIndexValidator);
222 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
223 * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
226 // syncController.registerIndexCleaner(index1Cleaner);
230 syncController.performAction(SyncActions.SYNCHRONIZE);
232 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
236 syncController.shutdown();
238 } catch (Exception exc) {
239 exc.printStackTrace();
240 System.out.println("Error: failed to sync with message = " + exc.getMessage());
245 * Do searchable entitysync.
247 public void doSearchableEntitysync() {
251 ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
253 RestClientBuilder clientBuilder = new RestClientBuilder();
254 clientBuilder.setUseHttps(false);
256 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
257 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
259 ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
263 SyncController syncController = new SyncControllerImpl("searchtableEntityTestController");
265 ViewInspectEntitySynchronizer ses =
266 new ViewInspectEntitySynchronizer("entitysearchindex-localhost");
267 ses.setAaiDataProvider(aaiAdapter);
268 ses.setEsDataProvider(esAdapter);
269 syncController.registerEntitySynchronizer(ses);
274 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
275 * RestClientBuilder());
277 * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
278 * entitySearchIndexValidator.setIndexType("default");
280 * syncController.registerIndexValidator(entitySearchIndexValidator);
286 * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider,
287 * "entitysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000);
289 * syncController.registerIndexCleaner(index1Cleaner);
294 syncController.performAction(SyncActions.SYNCHRONIZE);
296 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
300 syncController.shutdown();
302 } catch (Exception exc) {
303 exc.printStackTrace();
304 System.out.println("Error: failed to sync with message = " + exc.getMessage());
309 * Do cross entity reference sync.
311 public void doCrossEntityReferenceSync() {
314 ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
316 RestClientBuilder clientBuilder = new RestClientBuilder();
317 clientBuilder.setUseHttps(false);
319 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
320 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
322 ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig);
324 SyncController syncController = new SyncControllerImpl("crossEntityRefSyncController");
326 CrossEntityReferenceSynchronizer cers =
327 new CrossEntityReferenceSynchronizer("entitysearchindex-localhost", ActiveInventoryConfig.getConfig());
328 cers.setAaiDataProvider(aaiAdapter);
329 cers.setEsDataProvider(esAdapter);
330 syncController.registerEntitySynchronizer(cers);
332 ViewInspectEntitySynchronizer ses =
333 new ViewInspectEntitySynchronizer("entitysearchindex-localhost");
334 ses.setAaiDataProvider(aaiAdapter);
335 ses.setEsDataProvider(esAdapter);
336 syncController.registerEntitySynchronizer(ses);
338 ElasticSearchConfig config = ElasticSearchConfig.getConfig();
340 IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(
341 nonCachingRestProvider, config.getIndexName(), config.getType(), config.getIpAddress(),
342 config.getHttpPort(), config.buildElasticSearchTableConfig());
344 syncController.registerIndexValidator(entitySearchIndexValidator);
348 IndexCleaner index1Cleaner =
349 new ElasticSearchIndexCleaner(nonCachingRestProvider, config.getIndexName(),
350 config.getType(), config.getIpAddress(), config.getHttpPort(), 5, 5000);
352 syncController.registerIndexCleaner(index1Cleaner);
356 syncController.performAction(SyncActions.SYNCHRONIZE);
358 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
362 syncController.shutdown();
364 } catch (Exception exc) {
365 exc.printStackTrace();
366 System.out.println("Error: Failed to sync with message = " + exc.getMessage());
371 * Do suggestion entitysync.
373 public void doSuggestionEntitySync() {
375 ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder());
377 RestClientBuilder clientBuilder = new RestClientBuilder();
378 clientBuilder.setUseHttps(false);
380 RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder);
381 ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig();
383 ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider, esConfig);
385 SyncController syncController = new SyncControllerImpl("suggestionEntityTestController");
387 AutosuggestionSynchronizer ses =
388 new AutosuggestionSynchronizer("entityautosuggestindex-localhost");
389 ses.setAaiDataProvider(aaiAdapter);
390 ses.setEsDataProvider(esAdapter);
391 syncController.registerEntitySynchronizer(ses);
393 syncController.performAction(SyncActions.SYNCHRONIZE);
395 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
399 syncController.shutdown();
401 } catch (Exception exc) {
402 exc.printStackTrace();
403 System.out.println("Error: failed to sync with message = " + exc.getMessage());
410 public void doNoOpSync() {
412 SyncController syncController = new SyncControllerImpl("noopSyncTestController");
415 * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder());
417 * aaiAdapter.setCacheEnabled(true);
419 * /*InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache();
420 * aaiAdapter.setEntityCache(aaiInMemoryCache);
424 * PersistentEntityCache aaiDiskCache = new PersistentEntityCache();
425 * aaiAdapter.setEntityCache(aaiDiskCache);
427 * ElasticSearchConfig config = ElasticSearchConfig.getConfig(); OXMModelLoader loader =
428 * OXMModelLoader.getInstance(); SyncAdapter syncAdapter = new SyncAdapter(new
429 * RestClientBuilder(), config, loader);
433 * SearchableEntitySynchronizer ses = new SearchableEntitySynchronizer();
434 * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(syncAdapter);
435 * syncController.registerEntitySynchronizer(ses);
439 * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new
440 * RestClientBuilder());
442 * entitySearchIndexValidator.setIndexName("esi-sync2-localhost");
443 * entitySearchIndexValidator.setIndexType("default");
444 * entitySearchIndexValidator.setIndexSettings("");
445 * entitySearchIndexValidator.setIndexSettings("");
447 * syncController.registerIndexValidator(entitySearchIndexValidator);
451 * ElasticSearchEntityPurger p1 = new ElasticSearchEntityPurger(new RestClientBuilder());
452 * p1.setIndexName("esi-blal-blah");
454 * ElasticSearchEntityPurger p2 = new ElasticSearchEntityPurger(new RestClientBuilder());
455 * p2.setIndexName("esi-topo-blah");
459 syncController.performAction(SyncActions.SYNCHRONIZE);
461 while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) {
465 syncController.shutdown();
467 } catch (Exception exc) {
468 System.out.println("Error: failed to sync with message = " + exc.getMessage());
476 * @param args the arguments
478 public static void main(String[] args) {
479 //boolean runSearchableEntitySync = false;
480 //boolean runGeoEntitySync = true;
482 //System.setProperty("AJSC_HOME", "e:\\dev");
483 // System.getProperties().setProperty("AJSC_HOME",
484 // "c:\\rpo\\tier-support-ui\\target\\swm\\package\\nix\\"
485 // + "dist_files\\opt\\app\\ajsc-tier-support-ui");
487 System.setProperty("CONFIG_HOME", "appconfig-local");
488 System.setProperty("AJSC_HOME", "x:\\1710_extensibility\\");
490 SyncControllerBuilder syncBuilder = new SyncControllerBuilder();
493 * if (runSearchableEntitySync) syncBuilder.doSearchableEntitysync();
496 syncBuilder.doSearchableEntitysync();
497 // syncBuilder.doCrossEntityReferenceSync();
498 // syncBuilder.doHistoricalEntitySync();
499 // syncBuilder.doGeoEntitySync();
500 //syncBuilder.doSuggestionEntitySync();
501 //syncBuilder.doMasterEntitySync();
503 // syncBuilder.testElasticSearchUpdateAPI();
506 * if (runGeoEntitySync) { syncBuilder.doGeoEntitySync(); }