blob: 5615c1c2f75a43eaff3b111a922552e157214025 [file] [log] [blame]
package org.apache.dubbo.samples.configcenter;
import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;
import com.ctrip.framework.apollo.openapi.dto.OpenAppDTO;
import com.ctrip.framework.apollo.openapi.dto.OpenAppNamespaceDTO;
import com.ctrip.framework.apollo.openapi.dto.OpenEnvClusterDTO;
import com.ctrip.framework.apollo.openapi.dto.OpenItemDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ApolloUtil {
private static final Logger logger = LoggerFactory.getLogger(ApolloUtil.class);
public static void importConfigs() {
String zookeeperAddress = System.getProperty("zookeeper.address", "127.0.0.1");
String zookeeperPort = System.getProperty("zookeeper.port", "2181");
Map<String,String> props = new LinkedHashMap<>();
props.put("dubbo.registry.address", String.format("zookeeper://%s:%s", zookeeperAddress, zookeeperPort));
logger.info("Importing configs to apollo : {}", props);
try {
String portalAddress = System.getProperty("apollo.address", "127.0.0.1");
String portalPort = System.getProperty("apollo.portal-port", "8070");
//How to generate apollo token by program ?
String token = System.getProperty("apollo.portal-token");
ApolloOpenApiClient apolloApiClient = ApolloOpenApiClient
.newBuilder()
.withPortalUrl(String.format("http://%s:%s", portalAddress, portalPort))
.withToken(token)
.build();
//find app
List<OpenAppDTO> allApps = apolloApiClient.getAllApps();
OpenAppDTO appDTO = allApps.get(0);
String appId = appDTO.getAppId();
//find env
List<OpenEnvClusterDTO> envClusterInfo = apolloApiClient.getEnvClusterInfo(appId);
OpenEnvClusterDTO openEnvClusterDTO = envClusterInfo.get(0);
String env = openEnvClusterDTO.getEnv();
List<String> clusters = new ArrayList<>(openEnvClusterDTO.getClusters());
String cluster = clusters.get(0);
//create dubbo namespace
String namespace = "dubbo";
OpenAppNamespaceDTO appNamespaceDTO = new OpenAppNamespaceDTO();
appNamespaceDTO.setName(namespace);
appNamespaceDTO.setAppId(appDTO.getAppId());
appNamespaceDTO.setFormat("properties");
appNamespaceDTO.setDataChangeCreatedBy("dubbo");
apolloApiClient.createAppNamespace(appNamespaceDTO);
//import configs
props.forEach((key,value) -> {
OpenItemDTO itemDTO = new OpenItemDTO();
itemDTO.setKey(key);
itemDTO.setValue(value);
apolloApiClient.createItem(appId, env, cluster, namespace, itemDTO);
} );
logger.info("Import configs to apollo successfully.");
} catch (Exception e) {
logger.error("Import configs failed", e);
throw e;
}
}
}