初始提交:OCI 面板后端(含 GenAI 网关一期)

This commit is contained in:
Wang Defa
2026-07-09 15:31:04 +08:00
commit b9a3e97e84
168 changed files with 31794 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
package oci
import (
_ "embed"
"encoding/json"
"fmt"
"sort"
"strings"
"sync"
)
// regionsJSON 是本地维护的 OCI 区域表。官方 APIListRegions、
// ListRegionSubscriptions 等)只返回 key 和 name,控制台风格的
// 友好名称(alias)官方不提供查询接口,因此在此文件旁的
// regions.json 中单独维护,新增区域时直接编辑该文件。
//
//go:embed regions.json
var regionsJSON []byte
// RegionInfo 描述一个 OCI 区域。
type RegionInfo struct {
Alias string `json:"alias"`
Key string `json:"key"`
Name string `json:"name"`
}
var loadRegions = sync.OnceValues(func() ([]RegionInfo, error) {
var regions []RegionInfo
if err := json.Unmarshal(regionsJSON, &regions); err != nil {
return nil, fmt.Errorf("parse embedded regions.json: %w", err)
}
// 全局统一按友好名排序,维护 regions.json 时无需关心条目顺序
sort.SliceStable(regions, func(i, j int) bool { return regions[i].Alias < regions[j].Alias })
return regions, nil
})
// AllRegions 返回本地维护的完整区域表。
func AllRegions() ([]RegionInfo, error) {
return loadRegions()
}
// RegionByKey 按三字码(如 FRA)查找区域,大小写不敏感。
func RegionByKey(key string) (RegionInfo, bool) {
regions, err := loadRegions()
if err != nil {
return RegionInfo{}, false
}
for _, r := range regions {
if strings.EqualFold(r.Key, key) {
return r, true
}
}
return RegionInfo{}, false
}