Files

197 lines
6.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package service
import (
"context"
"fmt"
"oci-portal/internal/oci"
)
// Shapes 列出租户在目标区域可用的实例规格。
func (s *OciConfigService) Shapes(ctx context.Context, id uint, region, availabilityDomain string) ([]oci.ComputeShape, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return nil, err
}
return s.client.ListShapes(ctx, cred, region, availabilityDomain)
}
// Images 列出可用的实例镜像。
func (s *OciConfigService) Images(ctx context.Context, id uint, q oci.ImagesQuery) ([]oci.Image, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return nil, err
}
return s.client.ListImages(ctx, cred, q)
}
// Image 查询单个镜像。
func (s *OciConfigService) Image(ctx context.Context, id uint, region, imageID string) (oci.Image, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.Image{}, err
}
return s.client.GetImage(ctx, cred, region, imageID)
}
// VCNs 列出 VCNcompartmentID 为空表示租户根。
func (s *OciConfigService) VCNs(ctx context.Context, id uint, region, compartmentID string) ([]oci.VCN, error) {
cred, err := s.credentialsInCompartment(ctx, id, compartmentID)
if err != nil {
return nil, err
}
return s.client.ListVCNs(ctx, cred, region)
}
// CreateVCN 创建 VCNin.CompartmentID 为空时建在租户根。
func (s *OciConfigService) CreateVCN(ctx context.Context, id uint, in oci.CreateVCNInput) (oci.VCN, error) {
if in.DisplayName == "" || in.CidrBlock == "" {
return oci.VCN{}, fmt.Errorf("create vcn: displayName and cidrBlock are required")
}
cred, err := s.credentialsInCompartment(ctx, id, in.CompartmentID)
if err != nil {
return oci.VCN{}, err
}
return s.client.CreateVCN(ctx, cred, in)
}
// VCN 查询单个 VCN。
func (s *OciConfigService) VCN(ctx context.Context, id uint, region, vcnID string) (oci.VCN, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.VCN{}, err
}
return s.client.GetVCN(ctx, cred, region, vcnID)
}
// UpdateVCN 重命名 VCN。
func (s *OciConfigService) UpdateVCN(ctx context.Context, id uint, region, vcnID, displayName string) (oci.VCN, error) {
if displayName == "" {
return oci.VCN{}, fmt.Errorf("update vcn: displayName is required")
}
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.VCN{}, err
}
return s.client.UpdateVCN(ctx, cred, region, vcnID, displayName)
}
// DeleteVCN 删除 VCN。
func (s *OciConfigService) DeleteVCN(ctx context.Context, id uint, region, vcnID string) error {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return err
}
return s.client.DeleteVCN(ctx, cred, region, vcnID)
}
// EnableVCNIPv6 为 VCN 一键启用 IPv6,返回逐步执行报告。
func (s *OciConfigService) EnableVCNIPv6(ctx context.Context, id uint, region, vcnID string) ([]oci.IPv6Step, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return nil, err
}
return s.client.EnableVCNIPv6(ctx, cred, region, vcnID)
}
// Subnets 列出子网;vcnID 非空时按其所在 compartment 查询,
// 否则 compartmentID 为空表示租户根。
func (s *OciConfigService) Subnets(ctx context.Context, id uint, region, vcnID, compartmentID string) ([]oci.Subnet, error) {
cred, err := s.credentialsInCompartment(ctx, id, compartmentID)
if err != nil {
return nil, err
}
return s.client.ListSubnets(ctx, cred, region, vcnID)
}
// CreateSubnet 创建子网。
func (s *OciConfigService) CreateSubnet(ctx context.Context, id uint, in oci.CreateSubnetInput) (oci.Subnet, error) {
if in.VcnID == "" || in.DisplayName == "" || in.CidrBlock == "" {
return oci.Subnet{}, fmt.Errorf("create subnet: vcnId, displayName and cidrBlock are required")
}
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.Subnet{}, err
}
return s.client.CreateSubnet(ctx, cred, in)
}
// Subnet 查询单个子网。
func (s *OciConfigService) Subnet(ctx context.Context, id uint, region, subnetID string) (oci.Subnet, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.Subnet{}, err
}
return s.client.GetSubnet(ctx, cred, region, subnetID)
}
// UpdateSubnet 重命名子网。
func (s *OciConfigService) UpdateSubnet(ctx context.Context, id uint, region, subnetID, displayName string) (oci.Subnet, error) {
if displayName == "" {
return oci.Subnet{}, fmt.Errorf("update subnet: displayName is required")
}
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.Subnet{}, err
}
return s.client.UpdateSubnet(ctx, cred, region, subnetID, displayName)
}
// DeleteSubnet 删除子网。
func (s *OciConfigService) DeleteSubnet(ctx context.Context, id uint, region, subnetID string) error {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return err
}
return s.client.DeleteSubnet(ctx, cred, region, subnetID)
}
// SecurityLists 列出安全列表;vcnID 非空时按其所在 compartment 查询,
// 否则 compartmentID 为空表示租户根。
func (s *OciConfigService) SecurityLists(ctx context.Context, id uint, region, vcnID, compartmentID string) ([]oci.SecurityList, error) {
cred, err := s.credentialsInCompartment(ctx, id, compartmentID)
if err != nil {
return nil, err
}
return s.client.ListSecurityLists(ctx, cred, region, vcnID)
}
// CreateSecurityList 创建安全列表。
func (s *OciConfigService) CreateSecurityList(ctx context.Context, id uint, in oci.CreateSecurityListInput) (oci.SecurityList, error) {
if in.VcnID == "" || in.DisplayName == "" {
return oci.SecurityList{}, fmt.Errorf("create security list: vcnId and displayName are required")
}
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.SecurityList{}, err
}
return s.client.CreateSecurityList(ctx, cred, in)
}
// SecurityList 查询单个安全列表。
func (s *OciConfigService) SecurityList(ctx context.Context, id uint, region, securityListID string) (oci.SecurityList, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.SecurityList{}, err
}
return s.client.GetSecurityList(ctx, cred, region, securityListID)
}
// UpdateSecurityList 更新安全列表;规则字段一经提供即整体替换。
func (s *OciConfigService) UpdateSecurityList(ctx context.Context, id uint, securityListID string, in oci.UpdateSecurityListInput) (oci.SecurityList, error) {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return oci.SecurityList{}, err
}
return s.client.UpdateSecurityList(ctx, cred, securityListID, in)
}
// DeleteSecurityList 删除安全列表。
func (s *OciConfigService) DeleteSecurityList(ctx context.Context, id uint, region, securityListID string) error {
cred, err := s.credentialsByID(ctx, id)
if err != nil {
return err
}
return s.client.DeleteSecurityList(ctx, cred, region, securityListID)
}