All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.cloud.context.cs.AliCloudCsInitializer Maven / Gradle / Ivy

/*
 * Copyright (C) 2018 the original author or authors.
 *
 * 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.
 */

package com.alibaba.cloud.context.cs;

import com.alibaba.cloud.context.AliCloudConfiguration;
import com.alibaba.cloud.context.AliCloudServerMode;
import com.alibaba.cloud.context.edas.*;
import com.alibaba.cloud.context.utils.StringUtils;
import com.aliyuncs.edas.model.v20170801.GetSecureTokenResponse;
import com.aliyuncs.edas.model.v20170801.InsertApplicationResponse;
import com.taobao.config.client.LocalAttribute;
import com.taobao.config.client.PublisherRegistration;
import com.taobao.config.client.SubscriberRegistration;
import com.taobao.config.client.bean.InstanceMetaData;

/**
 * configserver初始化工具类
 *
 * @author xiaolongzuo
 */
public class AliCloudCsInitializer {

    private AliCloudCsInitializer() {
    }

    /**
     * 初始化发布者的权限
     *
     * @param csHandledConfiguration configserver已处理的配置
     * @param registration           发布者
     */
    public static void initialize(CsHandledConfiguration csHandledConfiguration,
                                  PublisherRegistration registration) {
        initialize(csHandledConfiguration, registration, null);
    }

    /**
     * 初始化订阅者权限
     *
     * @param csHandledConfiguration configserver已处理的配置
     * @param registration           订阅者
     */
    public static void initialize(CsHandledConfiguration csHandledConfiguration,
                                  SubscriberRegistration registration) {
        initialize(csHandledConfiguration, null, registration);
    }

    private static void initialize(CsHandledConfiguration csHandledConfiguration,
                                   PublisherRegistration publisherRegistration,
                                   SubscriberRegistration subscriberRegistration) {
        if (csHandledConfiguration.getServerMode() == AliCloudServerMode.EDAS) {
            InstanceMetaData instanceMetaData = new InstanceMetaData(
                csHandledConfiguration.getProjectName(),
                csHandledConfiguration.getDauthAccessKey(),
                csHandledConfiguration.getDauthSecretKey());
            if (publisherRegistration != null) {
                publisherRegistration.setTenant(csHandledConfiguration.getTenantId());
                publisherRegistration.setInstanceMetaData(instanceMetaData);
            }
            if (subscriberRegistration != null) {
                subscriberRegistration.setTenant(csHandledConfiguration.getTenantId());
                subscriberRegistration.setInstanceMetaData(instanceMetaData);
            }
        } else {

            InstanceMetaData instanceMetaData = new InstanceMetaData(
                csHandledConfiguration.getProjectName(),
                csHandledConfiguration.getDauthAccessKey(),
                csHandledConfiguration.getDauthSecretKey());

            if (publisherRegistration != null) {
                publisherRegistration.setInstanceMetaData(instanceMetaData);
                if (!StringUtils.isEmpty(csHandledConfiguration.getServerList())) {
                    publisherRegistration.setLocalAttribute(LocalAttribute.ATTRIBUTE_SERVER,
                        csHandledConfiguration.getServerList() + "?key=default");
                }
            }

            if (subscriberRegistration != null) {
                subscriberRegistration.setInstanceMetaData(instanceMetaData);
                if (!StringUtils.isEmpty(csHandledConfiguration.getServerList())) {
                    subscriberRegistration.setLocalAttribute(LocalAttribute.ATTRIBUTE_SERVER,
                        csHandledConfiguration.getServerList() + "?key=default");
                }
            }
        }
    }

    /**
     * 处理cs配置
     *
     * @param aliCloudConfiguration 阿里云通用配置
     * @param edasConfiguration     EDAS通用配置
     * @param csConfiguration       configserver配置
     * @return configserver已处理的配置
     */
    public static CsHandledConfiguration handleCsConfiguration(
        AliCloudConfiguration aliCloudConfiguration,
        EdasConfiguration edasConfiguration, CsConfiguration csConfiguration) {
        return handleCsConfiguration(aliCloudConfiguration, edasConfiguration,
            csConfiguration, null);
    }

    /**
     * 处理cs配置
     *
     * @param aliCloudConfiguration 阿里云通用配置
     * @param edasConfiguration     EDAS通用配置
     * @param csConfiguration       configserver配置
     * @param aliCloudEdasSdk       EDAS的POP-API-SDK
     * @return configserver已处理的配置
     */
    public static CsHandledConfiguration handleCsConfiguration(
        AliCloudConfiguration aliCloudConfiguration,
        EdasConfiguration edasConfiguration, CsConfiguration csConfiguration,
        AliCloudEdasSdk aliCloudEdasSdk) {
        SimpleCsHandledConfiguration csHandledConfiguration = new SimpleCsHandledConfiguration();
        EdasChangeOrderConfiguration edasChangeOrderConfiguration = EdasChangeOrderConfigurationFactory
            .getEdasChangeOrderConfiguration();
        if (edasChangeOrderConfiguration.isEdasManaged()) {
            csHandledConfiguration.setDauthAccessKey(edasChangeOrderConfiguration.getDauthAccessKey());
            csHandledConfiguration.setDauthSecretKey(edasChangeOrderConfiguration.getDauthSecretKey());
            csHandledConfiguration.setTenantId(edasChangeOrderConfiguration.getTenantId());
            csHandledConfiguration.setProjectName(edasChangeOrderConfiguration.getProjectName());
            csHandledConfiguration.setServerMode(AliCloudServerMode.EDAS);
        } else if (edasConfiguration.isEnabled() || csConfiguration.getServerMode() == AliCloudServerMode.EDAS) {
            if (aliCloudEdasSdk == null) {
                aliCloudEdasSdk = AliCloudEdasSdkFactory.getDefaultAliCloudEdasSdk(
                    aliCloudConfiguration, edasConfiguration.getRegionId());
            }
            GetSecureTokenResponse.SecureToken secureToken = aliCloudEdasSdk.getSecureToken(
                edasConfiguration.getNamespace());
            InsertApplicationResponse.ApplicationInfo applicationInfo = aliCloudEdasSdk.getApplicationInfo(
                edasConfiguration.getApplicationName(), edasConfiguration.getNamespace());
            csHandledConfiguration.setDauthAccessKey(secureToken.getAccessKey());
            csHandledConfiguration.setDauthSecretKey(secureToken.getSecretKey());
            csHandledConfiguration.setTenantId(secureToken.getTenantId());
            csHandledConfiguration.setProjectName(applicationInfo.getAppId());
            csHandledConfiguration.setServerMode(AliCloudServerMode.EDAS);
            System.setProperty("configserver.client.port", "8000");
            System.setProperty("address.server.domain", secureToken.getAddressServerHost());
        } else {
            csHandledConfiguration.setServerList(csConfiguration.getServerList());
            csHandledConfiguration.setServerPort(csConfiguration.getServerPort());
            csHandledConfiguration.setServerMode(AliCloudServerMode.LOCAL);
        }
        if (null != csHandledConfiguration.getServerPort()) {
            System.setProperty("configserver.client.port", csHandledConfiguration.getServerPort());
        }
        return csHandledConfiguration;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy