package flips

// List of floating ips
type FloatingIPsList struct {
	Objects []RecordFloatingIP
}

// Main info about a floating ip
type RecordFloatingIP struct {
	// Access group ID
	AccessGroupID string `json:"access_group_id"`

	// Access group name
	AccessGroupName string `json:"access_group_name"`

	// Created at
	CreatedAt string `json:"created_at"`

	// Details of an external network port
	ExternalNetworkPort ExternalNetworkPort `json:"external_network_port"`

	// ID of a floating IP
	ID string `json:"id"`

	// Details of a logical port
	LogicalPort LogicalPort `json:"logical_port"`

	// Details of a router
	Router Router `json:"router"`

	// Updated at
	UpdatedAt string `json:"updated_at"`

	// Version ID
	VersionID uint64 `json:"version_id"`
}

// Info about a router
type Router struct {
	// Access group ID
	AccessGroupID string `json:"access_group_id"`

	// Access group name
	AccessGroupName string `json:"access_group_name"`

	// Created at
	CreatedAt string `json:"created_at"`

	// Description
	Description string `json:"description"`

	// Display name
	DisplayName string `json:"display_name"`

	// Is a security policy enabled
	Enabled bool `json:"enabled"`

	// ID
	ID string `json:"id"`

	// Updated at
	UpdatedAt string `json:"updated_at"`

	// Version ID
	VersionID uint64 `json:"version_id"`
}

// Info about a logical port
type LogicalPort struct {

	// ID
	ID string `json:"id"`

	// Access group ID
	AccessGroupID string `json:"access_group_id"`

	// Access group name
	AccessGroupName string `json:"access_group_name"`

	// Adapter MAC
	AdapterMAC string `json:"adapter_mac"`

	// Is address detected
	AddressDetection bool `json:"address_detection"`

	// Description
	Description string `json:"description"`

	// Created at
	CreatedAt string `json:"created_at"`

	// Display name
	DisplayName string `json:"display_name"`

	// Is a logical port enabled
	Enabled bool `json:"enabled"`

	// Hypervisor
	Hypervisor string `json:"hypervisor"`

	// Hypervisor display name
	HypervisorDisplayName string `json:"hypervisor_display_name"`

	// Unique identifier
	UniqueIdentifier string `json:"unique_identifier"`

	// Updated at
	UpdatedAt string `json:"updated_at"`

	// Version ID
	VersionID uint64 `json:"version_id"`
}

// Details of external network ports
type ExternalNetworkPort struct {
	// Access group ID
	AccessGroupID string `json:"access_group_id"`

	// Access group name
	AccessGroupName string `json:"access_group_name"`

	// Comment
	Comment string `json:"comment"`

	// Display name
	DisplayName string `json:"display_name"`

	// Is a security policy enabled
	Enabled bool `json:"enabled"`

	// External network ID
	ExternalNetworkID string `json:"external_network_id"`

	// ID
	ID string `json:"id"`

	// IP v4
	IPv4 string `json:"ipv4"`

	// MAC
	MAC string `json:"mac"`

	// Version ID
	VersionID uint64 `json:"version_id"`
}
