package extnet

import (
	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
)

func dataSourceExtnetDefaultSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"extnet_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
	}
}

func dataSourceExtnetListSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"account_id": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Find by account ID",
		},
		"by_id": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Find by ID",
		},
		"name": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "Find by name",
		},
		"network": {
			Type:     schema.TypeString,
			Optional: true,
		},
		"vlan_id": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Find by VLAN ID",
		},
		"vnfdev_id": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Find by VnfDEV ID",
		},
		"status": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "Find by status",
		},
		"sort_by": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "sort by one of supported fields, format +|-(field)",
		},
		"page": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Page number",
		},
		"size": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Page size",
		},
		"zone_id": {
			Type:        schema.TypeInt,
			Optional:    true,
			Description: "Zone ID",
		},
		"items": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"ckey": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"meta": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Schema{
							Type: schema.TypeString,
						},
						Description: "meta",
					},
					"default": {
						Type:     schema.TypeBool,
						Computed: true,
					},
					"zone_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"default_qos": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Resource{
							Schema: map[string]*schema.Schema{
								"e_rate": {
									Type:     schema.TypeInt,
									Computed: true,
								},
								"guid": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"in_burst": {
									Type:     schema.TypeInt,
									Computed: true,
								},
								"in_rate": {
									Type:     schema.TypeInt,
									Computed: true,
								},
							},
						},
					},
					"desc": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"free_ips": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"gid": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"guid": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"enable_secgroups": {
						Type:     schema.TypeBool,
						Computed: true,
					},
					"extnet_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"ipcidr": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"milestones": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"network_ids": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Resource{
							Schema: map[string]*schema.Schema{
								"primary": {
									Type:     schema.TypeInt,
									Computed: true,
								},
								"secondary": {
									Type:     schema.TypeInt,
									Computed: true,
								},
							},
						},
					},
					"ovs_bridge": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"pre_reservations_num": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"pri_vnfdev_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"shared_with": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Schema{
							Type: schema.TypeInt,
						},
					},
					"status": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vlan_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"vnfs": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Resource{
							Schema: map[string]*schema.Schema{
								"dhcp": {
									Type:     schema.TypeInt,
									Computed: true,
								},
							},
						},
					},
					"check_ips": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Schema{
							Type: schema.TypeString,
						},
					},
					"redundant": {
						Type:     schema.TypeBool,
						Computed: true,
					},
					"sec_vnfdev_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"mtu": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"entry_count": {
			Type:     schema.TypeInt,
			Computed: true,
		},
	}
}

func dataSourceStaticRouteListSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"extnet_id": {
			Type:        schema.TypeInt,
			Required:    true,
			Description: "ID of ExtNet",
		},
		"items": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"compute_ids": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Schema{
							Type: schema.TypeInt,
						},
					},
					"destination": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"gateway": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"guid": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"netmask": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"route_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"entry_count": {
			Type:     schema.TypeInt,
			Computed: true,
		},
	}
}

func dataSourceStaticRouteSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"extnet_id": {
			Type:        schema.TypeInt,
			Required:    true,
			Description: "Unique ID of the ExtNet",
		},
		"route_id": {
			Type:        schema.TypeInt,
			Required:    true,
			Description: "Unique ID of the static route",
		},
		"compute_ids": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeInt,
			},
		},
		"destination": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"gateway": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"guid": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"netmask": {
			Type:     schema.TypeString,
			Computed: true,
		},
	}
}

func dataSourceExtnetSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"extnet_id": {
			Type:     schema.TypeInt,
			Required: true,
		},
		"ckey": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"meta": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "meta",
		},
		"default": {
			Type:     schema.TypeBool,
			Computed: true,
		},
		"default_qos": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"e_rate": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"guid": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"in_burst": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"in_rate": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"desc": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"free_ips": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"gid": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"guid": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"zone_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"ipcidr": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"milestones": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"name": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"network_ids": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"primary": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"secondary": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"ovs_bridge": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"pre_reservations_num": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"pri_vnfdev_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"shared_with": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeInt,
			},
		},
		"status": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"vlan_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"vnfs": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"dhcp": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"check_ips": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
		},
		"dns": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
		},
		"excluded": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"client_type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"desc": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"domain_name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"hostname": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"ip": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"mac": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vm_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"gateway": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"network": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"prefix": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"reservations": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"account_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"client_type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"domain_name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"hostname": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"desc": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"ip": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"mac": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vm_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"ntp": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
		},
		"redundant": {
			Type:     schema.TypeBool,
			Computed: true,
		},
		"sec_vnfdev_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"mtu": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"pre_reservations": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"account_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"client_type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"domain_name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"hostname": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"desc": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"ip": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"mac": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vm_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
	}
}

func resourceStaticRouteSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"extnet_id": {
			Type:        schema.TypeInt,
			Required:    true,
			Description: "Unique ID of the ExtNet",
		},
		"route_id": {
			Type:        schema.TypeInt,
			Computed:    true,
			Description: "Unique ID of the static route",
		},
		"compute_ids": {
			Type:     schema.TypeSet,
			Optional: true,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeInt,
			},
		},
		"destination": {
			Type:     schema.TypeString,
			Required: true,
		},
		"gateway": {
			Type:     schema.TypeString,
			Required: true,
		},
		"guid": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"netmask": {
			Type:     schema.TypeString,
			Required: true,
		},
	}
}

func resourceExtnetSchemaMake() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"name": {
			Type:        schema.TypeString,
			Required:    true,
			Description: "External network name",
		},
		"gid": {
			Type:        schema.TypeInt,
			Required:    true,
			Description: "Grid (platform) ID",
		},
		"ipcidr": {
			Type:     schema.TypeString,
			Required: true,
			// ForceNew:    true,
			Description: "IP network CIDR",
		},
		"vlan_id": {
			Type:     schema.TypeInt,
			Required: true,
			// ForceNew:    true,
			Description: "VLAN ID",
		},
		"gateway": {
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
			Description: "External network gateway IP address",
		},
		"zone_id": {
			Type:     schema.TypeInt,
			Optional: true,
			Computed: true,
		},
		"enable_secgroups": {
			Type:        schema.TypeBool,
			Optional:    true,
			Default:     false,
			Description: "enable security groups",
		},
		"dns": {
			Type:     schema.TypeList,
			Optional: true,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "List of DNS addresses",
		},
		"ntp": {
			Type:     schema.TypeList,
			Optional: true,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "List of NTP addresses",
		},
		"check_ips": {
			Type:     schema.TypeList,
			Optional: true,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "IPs to check network availability",
		},
		"virtual": {
			Type:        schema.TypeBool,
			Optional:    true,
			Description: "If true - platform DHCP server will not be created",
		},
		"desc": {
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
			Description: "Optional description",
		},
		"start_ip": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "Start of IP range to be explicitly included",
		},
		"end_ip": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "End of IP range to be explicitly included",
		},
		"vnfdev_ip": {
			Type:        schema.TypeString,
			Optional:    true,
			Description: "IP to create VNFDev with",
		},
		"pre_reservations_num": {
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
			Description: "Number of pre created reservations",
		},
		"ovs_bridge": {
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
			Description: "OpenvSwith bridge name for ExtNet connection",
		},
		"enable": {
			Type:        schema.TypeBool,
			Optional:    true,
			Default:     true,
			Description: "Disable/Enable extnet",
		},
		"set_default": {
			Type:        schema.TypeBool,
			Optional:    true,
			Default:     false,
			Description: "Set current extnet as default (can not be undone)",
		},
		"excluded_ips": {
			Type:     schema.TypeSet,
			Optional: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "IPs to exclude in current extnet pool",
		},
		"excluded_ips_range": {
			Type:     schema.TypeSet,
			Optional: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"ip_start": {
						Type:     schema.TypeString,
						Required: true,
					},
					"ip_end": {
						Type:     schema.TypeString,
						Required: true,
					},
				},
			},
			Description: "Range of IPs to exclude in current extnet pool",
		},
		"default_qos": {
			Type:     schema.TypeList,
			MaxItems: 1,
			Optional: true,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"e_rate": {
						Type:     schema.TypeInt,
						Optional: true,
						Computed: true,
					},
					"guid": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"in_burst": {
						Type:     schema.TypeInt,
						Optional: true,
						Computed: true,
					},
					"in_rate": {
						Type:     schema.TypeInt,
						Optional: true,
						Computed: true,
					},
				},
			},
		},
		"restart": {
			Type:        schema.TypeBool,
			Optional:    true,
			Description: "restart extnet vnf device",
		},
		"migrate": {
			Type:     schema.TypeInt,
			Optional: true,
		},
		"shared_with": {
			Type:     schema.TypeSet,
			Computed: true,
			Optional: true,
			Elem: &schema.Schema{
				Type: schema.TypeInt,
			},
		},
		"reserved_ip": {
			Type:     schema.TypeSet,
			Optional: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"account_id": {
						Type:     schema.TypeInt,
						Required: true,
					},
					"ip_count": {
						Type:         schema.TypeInt,
						Optional:     true,
						ValidateFunc: validation.IntBetween(1, 255),
					},
					"ips": {
						Type:     schema.TypeSet,
						Optional: true,
						Elem: &schema.Schema{
							Type: schema.TypeString,
						},
					},
				},
			},
		},
		"highly_available": {
			Type:     schema.TypeBool,
			Optional: true,
			Computed: true,
		},
		"sec_vnfdev_ip": {
			Type:     schema.TypeString,
			Optional: true,
			Computed: true,
		},
		"mtu": {
			Type:     schema.TypeInt,
			Optional: true,
			Computed: true,
		},
		"ckey": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"meta": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Schema{
				Type: schema.TypeString,
			},
			Description: "meta",
		},
		"default": {
			Type:     schema.TypeBool,
			Computed: true,
		},
		"free_ips": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"guid": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"extnet_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"milestones": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"network_ids": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"primary": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"secondary": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"pri_vnfdev_id": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"status": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"vnfs": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"dhcp": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"excluded": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"client_type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"domain_name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"hostname": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"ip": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"mac": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vm_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"network": {
			Type:     schema.TypeString,
			Computed: true,
		},
		"prefix": {
			Type:     schema.TypeInt,
			Computed: true,
		},
		"routes": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"compute_ids": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Schema{
							Type: schema.TypeInt,
						},
					},
					"destination": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"gateway": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"guid": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"netmask": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"route_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
		"reservations": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"account_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"client_type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"domain_name": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"hostname": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"desc": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"ip": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"mac": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"type": {
						Type:     schema.TypeString,
						Computed: true,
					},
					"vm_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
				},
			},
		},
	}
}

func dataSourceExtnetReservedIpSchemaMake() map[string]*schema.Schema {
	res := map[string]*schema.Schema{
		"account_id": {
			Type:     schema.TypeInt,
			Required: true,
		},
		"extnet_id": {
			Type:     schema.TypeInt,
			Optional: true,
		},
		"items": {
			Type:     schema.TypeList,
			Computed: true,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"extnet_id": {
						Type:     schema.TypeInt,
						Computed: true,
					},
					"reservations": {
						Type:     schema.TypeList,
						Computed: true,
						Elem: &schema.Resource{
							Schema: map[string]*schema.Schema{
								"account_id": {
									Type:     schema.TypeInt,
									Computed: true,
								},
								"client_type": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"domain_name": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"hostname": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"ip": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"mac": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"type": {
									Type:     schema.TypeString,
									Computed: true,
								},
								"vm_id": {
									Type:     schema.TypeInt,
									Computed: true,
								},
							},
						},
					},
				},
			},
		},
	}
	return res
}
