diff --git a/pkg/compute/models/vpcs.go b/pkg/compute/models/vpcs.go index de6e1f3f75..a0d5d98652 100644 --- a/pkg/compute/models/vpcs.go +++ b/pkg/compute/models/vpcs.go @@ -614,7 +614,7 @@ func (manager *SVpcManager) ValidateCreateData(ctx context.Context, userCred mcc } data.Add(jsonutils.NewString(managerObj.GetId()), "manager_id") } else { - return nil, httperrors.NewNotImplementedError("Cannot create VPC in private cloud") + data.Set("status", jsonutils.NewString(api.VPC_STATUS_AVAILABLE)) } cidrBlock, _ := data.GetString("cidr_block") diff --git a/pkg/compute/regiondrivers/kvm.go b/pkg/compute/regiondrivers/kvm.go index 4185598b99..0722a21788 100644 --- a/pkg/compute/regiondrivers/kvm.go +++ b/pkg/compute/regiondrivers/kvm.go @@ -32,6 +32,7 @@ import ( "yunion.io/x/onecloud/pkg/compute/options" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/util/choices" "yunion.io/x/onecloud/pkg/util/rand" ) @@ -785,6 +786,11 @@ func (self *SKVMRegionDriver) RequestDeleteLoadbalancerListenerRule(ctx context. } func (self *SKVMRegionDriver) ValidateCreateVpcData(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) { + cidrChoices := choices.NewChoices("192.168.0.0/16", "10.0.0.0/8", "172.16.0.0/12") + cidrV := validators.NewStringChoicesValidator("cidr_block", cidrChoices) + if err := cidrV.Validate(data); err != nil { + return nil, err + } return data, nil }