1.0.0
This commit is contained in:
127
internal/service/cloudapi/vins/models/model_resource_vins.go
Normal file
127
internal/service/cloudapi/vins/models/model_resource_vins.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/attr"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
|
||||
)
|
||||
|
||||
type ResourceVINSModel struct {
|
||||
// required fields
|
||||
Name types.String `tfsdk:"name"`
|
||||
RGID types.Int64 `tfsdk:"rg_id"`
|
||||
AccountID types.Int64 `tfsdk:"account_id"`
|
||||
|
||||
// optional fields
|
||||
IPCIDR types.String `tfsdk:"ipcidr"`
|
||||
PreReservationsNum types.Int64 `tfsdk:"pre_reservations_num"`
|
||||
Description types.String `tfsdk:"desc"`
|
||||
GID types.Int64 `tfsdk:"gid"`
|
||||
DNS types.Set `tfsdk:"dns"`
|
||||
|
||||
Enable types.Bool `tfsdk:"enable"`
|
||||
Permanently types.Bool `tfsdk:"permanently"`
|
||||
Force types.Bool `tfsdk:"force"`
|
||||
Restore types.Bool `tfsdk:"restore"`
|
||||
VnfdevRestart types.Bool `tfsdk:"vnfdev_restart"`
|
||||
VnfdevRedeploy types.Bool `tfsdk:"vnfdev_redeploy"`
|
||||
|
||||
ExtNet types.Object `tfsdk:"ext_net"`
|
||||
IP types.List `tfsdk:"ip"`
|
||||
NatRule types.List `tfsdk:"nat_rule"`
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
// response fields
|
||||
VinsID types.Int64 `tfsdk:"vins_id"`
|
||||
Id types.String `tfsdk:"id"`
|
||||
LastUpdated types.String `tfsdk:"last_updated"`
|
||||
VNFDev types.Object `tfsdk:"vnf_dev"`
|
||||
AccountName types.String `tfsdk:"account_name"`
|
||||
Computes types.List `tfsdk:"computes"`
|
||||
CreatedBy types.String `tfsdk:"created_by"`
|
||||
CreatedTime types.Int64 `tfsdk:"created_time"`
|
||||
DefaultGW types.String `tfsdk:"default_gw"`
|
||||
DefaultQOS types.Object `tfsdk:"default_qos"`
|
||||
DeletedBy types.String `tfsdk:"deleted_by"`
|
||||
DeletedTime types.Int64 `tfsdk:"deleted_time"`
|
||||
GUID types.Int64 `tfsdk:"guid"`
|
||||
LockStatus types.String `tfsdk:"lock_status"`
|
||||
ManagerID types.Int64 `tfsdk:"manager_id"`
|
||||
ManagerType types.String `tfsdk:"manager_type"`
|
||||
Milestones types.Int64 `tfsdk:"milestones"`
|
||||
NetMask types.Int64 `tfsdk:"net_mask"`
|
||||
Network types.String `tfsdk:"network"`
|
||||
Redundant types.Bool `tfsdk:"redundant"`
|
||||
RGName types.String `tfsdk:"rg_name"`
|
||||
SecVNFDevID types.Int64 `tfsdk:"sec_vnf_dev_id"`
|
||||
Status types.String `tfsdk:"status"`
|
||||
UpdatedBy types.String `tfsdk:"updated_by"`
|
||||
UpdatedTime types.Int64 `tfsdk:"updated_time"`
|
||||
UserManaged types.Bool `tfsdk:"user_managed"`
|
||||
VNFs types.Object `tfsdk:"vnfs"`
|
||||
VXLANID types.Int64 `tfsdk:"vxlan_id"`
|
||||
}
|
||||
|
||||
type ExtNetModel struct {
|
||||
ExtNetID types.Int64 `tfsdk:"ext_net_id"`
|
||||
ExtNetIP types.String `tfsdk:"ext_net_ip"`
|
||||
}
|
||||
|
||||
type IPModel struct {
|
||||
Type types.String `tfsdk:"type"`
|
||||
IPAddr types.String `tfsdk:"ip_addr"`
|
||||
MacAddr types.String `tfsdk:"mac_addr"`
|
||||
ComputeID types.Int64 `tfsdk:"compute_id"`
|
||||
}
|
||||
|
||||
type NatRuleResourceModel struct {
|
||||
IntIP types.String `tfsdk:"int_ip"`
|
||||
IntPort types.Int64 `tfsdk:"int_port"`
|
||||
ExtPortStart types.Int64 `tfsdk:"ext_port_start"`
|
||||
ExtPortEnd types.Int64 `tfsdk:"ext_port_end"`
|
||||
Proto types.String `tfsdk:"proto"`
|
||||
RuleID types.Int64 `tfsdk:"rule_id"`
|
||||
}
|
||||
|
||||
var ItemNatRuleResource = map[string]attr.Type{
|
||||
"int_ip": types.StringType,
|
||||
"int_port": types.Int64Type,
|
||||
"ext_port_start": types.Int64Type,
|
||||
"ext_port_end": types.Int64Type,
|
||||
"proto": types.StringType,
|
||||
"rule_id": types.Int64Type,
|
||||
}
|
||||
|
||||
// Contains returns true if NatRuleResourceModel contains n as an element. Otherwise it returns false.
|
||||
func (n *NatRuleResourceModel) Contains(natRuleList []NatRuleResourceModel) bool {
|
||||
for _, natRuleElem := range natRuleList {
|
||||
if n.IntIP.Equal(natRuleElem.IntIP) &&
|
||||
n.IntPort.Equal(natRuleElem.IntPort) &&
|
||||
n.ExtPortStart.Equal(natRuleElem.ExtPortStart) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetNatRule returns nat_rule from the platform equivalent to NatRuleResourceModel. If the rule doesn't exist it returns nil.
|
||||
func (n *NatRuleResourceModel) GetNatRule(rules vins.ListNATRulesConfig) *vins.ItemNATRule {
|
||||
for _, rule := range rules {
|
||||
if n.IntIP.Equal(types.StringValue(rule.LocalIP)) &&
|
||||
n.ExtPortStart.Equal(types.Int64Value(int64(rule.PublicPortStart))) {
|
||||
return &rule
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Contains returns true if IPModel contains i as an element. Otherwise it returns false.
|
||||
func (i *IPModel) Contains(ipList []IPModel) bool {
|
||||
for _, ipElem := range ipList {
|
||||
if i.IPAddr.Equal(ipElem.IPAddr) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user