/** * ============LICENSE_START=================================================== * SPARKY (AAI UI service) * ============================================================================ * Copyright © 2017 AT&T Intellectual Property. * Copyright © 2017 Amdocs * All rights reserved. * ============================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END===================================================== * * ECOMP and OpenECOMP are trademarks * and service marks of AT&T Intellectual Property. */ package org.onap.aai.sparky.synchronizer; /** * The Class SyncControllerBuilder. */ public class SyncControllerBuilder { /* * We'll have to revisit this class, as the sync controllers are wired up pretty differently now */ /** * Test elastic search update api. */ /* public void testElasticSearchUpdateApi() { try { RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchDataProvider elasticSearchDataProvider = new ElasticSearchAdapter(nonCachingRestProvider, esConfig); String payload = "{ \"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"; String updateRequest = elasticSearchDataProvider.buildBulkImportOperationRequest( "topographysearchindex-localhost", "default", "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "6", payload); OperationResult or = elasticSearchDataProvider.doBulkOperation("http://localhost:9200/_bulk", updateRequest); System.out.println(or.toString()); /* * String BULK_IMPORT_INDEX_TEMPLATE = * "{\"index\":{\"_index\":\"%s\",\"_type\":\"%s\",\"_id\":\"%s\", \"_version\":\"%s\"}}\n"; * * StringBuilder updateRequestPayload = new StringBuilder(128); * updateRequestPayload.append(String.format(BULK_IMPORT_INDEX_TEMPLATE, * "topographysearchindex-localhost", "default", * "1e2a6ba9e09d5e1bcb016b3a0b8d50273b42828e47957bd2a2f3ce1854744f5f", "5")); * * * updateRequestPayload.append(payload); * * OperationResult or = nonCachingRestProvider.doRestfulOperation(HttpMethod.PUT, * "http://localhost:9200/_bulk", updateRequestPayload.toString(), * RestfulDataAccessor.APPLICATION_X_WWW_FORM_URL_ENCODED, * RestfulDataAccessor.APPLICATION_JSON); */ /* } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /** * Do historical entity sync. *//* public void doHistoricalEntitySync() { try { SyncController syncController = new SyncControllerImpl("historicalEntityTestController"); ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder()); RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig); IndexIntegrityValidator entityCounterHistoryValidator = new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getEntityCountHistoryIndex(), esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(), esConfig.buildElasticSearchEntityCountHistoryTableConfig()); syncController.registerIndexValidator(entityCounterHistoryValidator); ////// HistoricalEntitySummarizer historicalSummarizer = new HistoricalEntitySummarizer(esConfig.getEntityCountHistoryIndex()); historicalSummarizer.setAaiDataProvider(aaiAdapter); historicalSummarizer.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(historicalSummarizer); //// /* * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new * RestClientBuilder()); * * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost"); * entitySearchIndexValidator.setIndexType("default"); * entitySearchIndexValidator.setIndexSettings(""); * entitySearchIndexValidator.setIndexSettings(""); * * syncController.registerIndexValidator(entitySearchIndexValidator); */ //// /* * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider, * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000); */ // syncController.registerIndexCleaner(index1Cleaner); /// /* for (int x = 0; x < 10; x++) { syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { System.out.println("sync controller state = " + syncController.getState()); Thread.sleep(1000); } } syncController.shutdown(); } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /** * Do geo entity sync. *//* public void doGeoEntitySync() { try { ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder()); RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig); IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(nonCachingRestProvider, esConfig.getIndexName(), esConfig.getType(), esConfig.getIpAddress(), esConfig.getHttpPort(), esConfig.buildElasticSearchTableConfig()); SyncController syncController = new SyncControllerImpl("geoEntitySyncTestController"); syncController.registerIndexValidator(entitySearchIndexValidator); ////// GeoSynchronizer geoSync = new GeoSynchronizer("topographysearchindex-localhost"); geoSync.setAaiDataProvider(aaiAdapter); geoSync.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(geoSync); //// /* * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new * RestClientBuilder()); * * entitySearchIndexValidator.setIndexName("topographysearchindex-localhost"); * entitySearchIndexValidator.setIndexType("default"); * entitySearchIndexValidator.setIndexSettings(""); * entitySearchIndexValidator.setIndexSettings(""); * * syncController.registerIndexValidator(entitySearchIndexValidator); */ //// /* * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider, * "topographysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000); */ // syncController.registerIndexCleaner(index1Cleaner); /// /* syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { Thread.sleep(1000); } syncController.shutdown(); } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /** * Do searchable entitysync. *//* public void doSearchableEntitysync() { try { ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder()); RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig); ////// SyncController syncController = new SyncControllerImpl("searchtableEntityTestController"); ViewInspectEntitySynchronizer ses = new ViewInspectEntitySynchronizer("entitysearchindex-localhost"); ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(ses); //// /* * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new * RestClientBuilder()); * * entitySearchIndexValidator.setIndexName("esi-sync2-localhost"); * entitySearchIndexValidator.setIndexType("default"); * * syncController.registerIndexValidator(entitySearchIndexValidator); */ //// /* * IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider, * "entitysearchindex-localhost", "default", "127.0.0.1", "9200", 5, 5000); * * syncController.registerIndexCleaner(index1Cleaner); */ /// /* syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { Thread.sleep(1000); } syncController.shutdown(); } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /** * Do cross entity reference sync. *//* public void doCrossEntityReferenceSync() { try { ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder()); RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider,esConfig); SyncController syncController = new SyncControllerImpl("crossEntityRefSyncController"); CrossEntityReferenceSynchronizer cers = new CrossEntityReferenceSynchronizer("entitysearchindex-localhost", ActiveInventoryConfig.getConfig()); cers.setAaiDataProvider(aaiAdapter); cers.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(cers); ViewInspectEntitySynchronizer ses = new ViewInspectEntitySynchronizer("entitysearchindex-localhost"); ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(ses); ElasticSearchConfig config = ElasticSearchConfig.getConfig(); IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator( nonCachingRestProvider, config.getIndexName(), config.getType(), config.getIpAddress(), config.getHttpPort(), config.buildElasticSearchTableConfig()); syncController.registerIndexValidator(entitySearchIndexValidator); //// IndexCleaner index1Cleaner = new ElasticSearchIndexCleaner(nonCachingRestProvider, config.getIndexName(), config.getType(), config.getIpAddress(), config.getHttpPort(), 5, 5000); syncController.registerIndexCleaner(index1Cleaner); /// syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { Thread.sleep(1000); } syncController.shutdown(); } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: Failed to sync with message = " + exc.getMessage()); } } /** * Do suggestion entitysync. *//* public void doSuggestionEntitySync() { try { ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new OxmModelLoader(), new RestClientBuilder()); RestClientBuilder clientBuilder = new RestClientBuilder(); clientBuilder.setUseHttps(false); RestfulDataAccessor nonCachingRestProvider = new RestfulDataAccessor(clientBuilder); ElasticSearchConfig esConfig = ElasticSearchConfig.getConfig(); ElasticSearchAdapter esAdapter = new ElasticSearchAdapter(nonCachingRestProvider, esConfig); SyncController syncController = new SyncControllerImpl("suggestionEntityTestController"); AutosuggestionSynchronizer ses = new AutosuggestionSynchronizer("entityautosuggestindex-localhost"); ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(esAdapter); syncController.registerEntitySynchronizer(ses); syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { Thread.sleep(1000); } syncController.shutdown(); } catch (Exception exc) { exc.printStackTrace(); System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /* * Do no op sync. *//* public void doNoOpSync() { try { SyncController syncController = new SyncControllerImpl("noopSyncTestController"); /* * ActiveInventoryAdapter aaiAdapter = new ActiveInventoryAdapter(new RestClientBuilder()); * * aaiAdapter.setCacheEnabled(true); * * /*InMemoryEntityCache aaiInMemoryCache = new InMemoryEntityCache(); * aaiAdapter.setEntityCache(aaiInMemoryCache); */ /* * PersistentEntityCache aaiDiskCache = new PersistentEntityCache(); * aaiAdapter.setEntityCache(aaiDiskCache); * * ElasticSearchConfig config = ElasticSearchConfig.getConfig(); OXMModelLoader loader = * OXMModelLoader.getInstance(); SyncAdapter syncAdapter = new SyncAdapter(new * RestClientBuilder(), config, loader); * * ////// * * SearchableEntitySynchronizer ses = new SearchableEntitySynchronizer(); * ses.setAaiDataProvider(aaiAdapter); ses.setEsDataProvider(syncAdapter); * syncController.registerEntitySynchronizer(ses); * * //// * * IndexIntegrityValidator entitySearchIndexValidator = new IndexIntegrityValidator(new * RestClientBuilder()); * * entitySearchIndexValidator.setIndexName("esi-sync2-localhost"); * entitySearchIndexValidator.setIndexType("default"); * entitySearchIndexValidator.setIndexSettings(""); * entitySearchIndexValidator.setIndexSettings(""); * * syncController.registerIndexValidator(entitySearchIndexValidator); * * //// * * ElasticSearchEntityPurger p1 = new ElasticSearchEntityPurger(new RestClientBuilder()); * p1.setIndexName("esi-blal-blah"); * * ElasticSearchEntityPurger p2 = new ElasticSearchEntityPurger(new RestClientBuilder()); * p2.setIndexName("esi-topo-blah"); */ /// /* syncController.performAction(SyncActions.SYNCHRONIZE); while (syncController.getState() == SynchronizerState.PERFORMING_SYNCHRONIZATION) { Thread.sleep(1000); } syncController.shutdown(); } catch (Exception exc) { System.out.println("Error: failed to sync with message = " + exc.getMessage()); } } /** * The main method. * * @param args the arguments *//* public static void main(String[] args) { //boolean runSearchableEntitySync = false; //boolean runGeoEntitySync = true; //System.setProperty("AJSC_HOME", "e:\\dev"); // System.getProperties().setProperty("AJSC_HOME", // "c:\\rpo\\tier-support-ui\\target\\swm\\package\\nix\\" // + "dist_files\\opt\\app\\ajsc-tier-support-ui"); System.setProperty("CONFIG_HOME", "appconfig-local"); System.setProperty("AJSC_HOME", "x:\\1710_extensibility\\"); SyncControllerBuilder syncBuilder = new SyncControllerBuilder(); /* * if (runSearchableEntitySync) syncBuilder.doSearchableEntitysync(); */ /* syncBuilder.doSearchableEntitysync(); // syncBuilder.doCrossEntityReferenceSync(); // syncBuilder.doHistoricalEntitySync(); // syncBuilder.doGeoEntitySync(); //syncBuilder.doSuggestionEntitySync(); //syncBuilder.doMasterEntitySync(); // syncBuilder.testElasticSearchUpdateAPI(); /* * if (runGeoEntitySync) { syncBuilder.doGeoEntitySync(); } */ //} }