// Copyright (c) 2022 Alibaba Group Holding Ltd.
//  
// 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.

syntax = "proto3";

import "google/api/field_behavior.proto";

// $schema: higress.networking.v1.McpBridge
// $title: McpBridge
// $description: Configuration affecting service discovery from multi registries
// $mode: none

package higress.networking.v1;

option go_package = "github.com/alibaba/higress/api/networking/v1";

// <!-- crd generation tags
// +cue-gen:McpBridge:groupName:networking.higress.io
// +cue-gen:McpBridge:version:v1
// +cue-gen:McpBridge:storageVersion
// +cue-gen:McpBridge:annotations:helm.sh/resource-policy=keep
// +cue-gen:McpBridge:subresource:status
// +cue-gen:McpBridge:scope:Namespaced
// +cue-gen:McpBridge:resource:categories=higress-io,plural=mcpbridges
// +cue-gen:McpBridge:preserveUnknownFields:false
// -->
//
// <!-- go code generation tags
// +kubetype-gen
// +kubetype-gen:groupVersion=networking.higress.io/v1
// +genclient
// +k8s:deepcopy-gen=true
// -->
message McpBridge {
  repeated RegistryConfig registries = 1;
}

message RegistryConfig {
  string type = 1 [(google.api.field_behavior) = REQUIRED]; 
  string name = 2;
  string domain = 3 [(google.api.field_behavior) = REQUIRED];
  uint32 port = 4 [(google.api.field_behavior) = REQUIRED];
  string nacosAddressServer = 5;
  string nacosAccessKey = 6;
  string nacosSecretKey = 7;
  string nacosNamespaceId = 8;
  string nacosNamespace = 9;
  repeated string nacosGroups = 10;
  int64 nacosRefreshInterval = 11;
  string consulNamespace = 12;
  repeated string zkServicesPath = 13;
}
