@@ -64,6 +64,12 @@ type TencentCloudAccessConfig struct {
6464 Zone string `mapstructure:"zone" required:"true"`
6565 // Do not check region and zone when validate.
6666 SkipValidation bool `mapstructure:"skip_region_validation" required:"false"`
67+ // The endpoint you want to reach the cloud endpoint,
68+ // if tce cloud you should set a tce cvm endpoint.
69+ CvmEndpoint string `mapstructure:"cvm_endpoint" required:"false"`
70+ // The endpoint you want to reach the cloud endpoint,
71+ // if tce cloud you should set a tce vpc endpoint.
72+ VpcEndpoint string `mapstructure:"vpc_endpoint" required:"false"`
6773}
6874
6975func (cf * TencentCloudAccessConfig ) Client () (* cvm.Client , * vpc.Client , error ) {
@@ -82,11 +88,11 @@ func (cf *TencentCloudAccessConfig) Client() (*cvm.Client, *vpc.Client, error) {
8288 return nil , nil , fmt .Errorf ("parameter zone must be set" )
8389 }
8490
85- if cvm_client , err = NewCvmClient (cf .SecretId , cf .SecretKey , cf .Region ); err != nil {
91+ if cvm_client , err = NewCvmClient (cf .SecretId , cf .SecretKey , cf .Region , cf . CvmEndpoint ); err != nil {
8692 return nil , nil , err
8793 }
8894
89- if vpc_client , err = NewVpcClient (cf .SecretId , cf .SecretKey , cf .Region ); err != nil {
95+ if vpc_client , err = NewVpcClient (cf .SecretId , cf .SecretKey , cf .Region , cf . VpcEndpoint ); err != nil {
9096 return nil , nil , err
9197 }
9298
@@ -116,6 +122,11 @@ func (cf *TencentCloudAccessConfig) Prepare(ctx *interpolate.Context) []error {
116122 errs = append (errs , err )
117123 }
118124
125+ if (cf .CvmEndpoint != "" && cf .VpcEndpoint == "" ) ||
126+ (cf .CvmEndpoint == "" && cf .VpcEndpoint != "" ) {
127+ errs = append (errs , fmt .Errorf ("parameter cvm_endpoint and vpc_endpoint must be set simultaneously" ))
128+ }
129+
119130 if cf .Region == "" {
120131 errs = append (errs , fmt .Errorf ("parameter region must be set" ))
121132 } else if ! cf .SkipValidation {
@@ -148,6 +159,10 @@ func (cf *TencentCloudAccessConfig) Config() error {
148159}
149160
150161func (cf * TencentCloudAccessConfig ) validateRegion () error {
162+ // if set cvm endpoint, do not validate region
163+ if cf .CvmEndpoint != "" {
164+ return nil
165+ }
151166 return validRegion (cf .Region )
152167}
153168
0 commit comments