Reference For: developers

gRPC: ippool

Services, methods, messages and enums of ippool.proto.

Public IP pools, address allocation bound to VM NICs, reverse DNS and monthly traffic (decision L-127, docs/network/DESIGN.md section 11.2 to 11.5). Pools themselves are created and changed through REST (/v1/ip-pools); this service carries the calls a portal or the tenancy module makes per server.

IpPoolService

Public IP pools, their allocations and traffic.

MethodRequestResponseDescription
ListPoolsEmptyListPoolsResponse

Every IP pool.

ListAllocationsListAllocationsRequestListAllocationsResponse

The allocations of one pool.

AllocateAddressAllocateAddressRequestAllocation

Allocates one IPv4 address (or a /64 with family "ipv6") and binds it to a VM NIC.

FreeAddressFreeAddressRequestEmpty

Returns an address or "prefix/64" to the pool (quarantine) and deletes its PTR record.

SetPtrSetPtrRequestEmpty

Sets the PTR name of an allocated address; an empty name removes it.

AllocateForServerAllocateForServerRequestServerAddresses

The server-create hook: primary IPv4 address and, when the pool has IPv6, a /64.

ReleaseForServerReleaseForServerRequestReleaseForServerResponse

The server-delete hook: every address of the VM back to its pool.

GetTrafficGetTrafficRequestTrafficReport

Monthly traffic per VM and tenant.

Messages

IpPool

An IP pool with its counts.

FieldNumberTypeDescription
id1string

Id of the pool.

name2string

Name.

network3string

Id of the host-bridge network of the pool.

prefix_len4uint32

IPv4 prefix length of the subnet.

ranges5repeated string

"start-end" per range.

gateway6string

IPv4 gateway.

dns_servers7repeated string

DNS servers handed to the guests.

ipv6_prefix8string

"prefix/len", empty without IPv6.

capacity9uint64

IPv4 addresses the pool can hand out.

allocated10uint64

Addresses allocated.

quarantined11uint64

Addresses in quarantine after a release.

free12uint64

Addresses free now.

ipv6_server_prefix_len13uint32

Length of the IPv6 block per server (64 to 128); 0 without IPv6.

addresses14repeated string

Explicit IPv4 addresses handed out besides the ranges.

ListPoolsResponse

The IP pools.

FieldNumberTypeDescription
items1repeated IpPool

Every pool.

ListAllocationsRequest

Lists the allocations of a pool.

FieldNumberTypeDescription
pool_id1string

Id of the pool.

Allocation

An address of a pool and who has it.

FieldNumberTypeDescription
address1string

IPv4 address or "prefix/64".

family2string

"ipv4" or "ipv6".

status3string

"allocated" or "quarantined".

role4string

"primary" or "extra" (IPv4).

vm_id5string

Id of the virtual machine.

mac6string

MAC address of the network adapter.

tenant7string

Id of the tenant; empty without one.

ptr8string

Reverse DNS name; empty without one.

allocated_at9string

Time of the allocation, RFC 3339.

quarantined_until10string

End of the quarantine of a released address, RFC 3339; empty otherwise.

ListAllocationsResponse

The allocations.

FieldNumberTypeDescription
items1repeated Allocation

Allocations of the pool.

AllocateAddressRequest

Allocates an address.

FieldNumberTypeDescription
pool_id1string

Id of the pool.

vm_id2string

Empty: reserved for the tenant, not bound.

mac3string

Empty: the VM's first NIC on the pool's network.

address4string

Empty: the lowest free address.

role5string

"primary" (default) or "extra".

family6string

"ipv4" (default) or "ipv6".

tenant7string

Id of the tenant the address is for.

reference8string

Free text kept with the allocation (an order number).

FreeAddressRequest

Releases an address.

FieldNumberTypeDescription
pool_id1string

Id of the pool.

address2string

The address, or the IPv6 block as prefix/64.

SetPtrRequest

Sets the reverse DNS name of an address.

FieldNumberTypeDescription
pool_id1string

Id of the pool.

address2string

The address.

ptr3string

Host name; empty removes it.

AllocateForServerRequest

Allocates the addresses of a new server.

FieldNumberTypeDescription
vm_id1string

Id of the virtual machine.

pool_id2string

Id of the pool; empty for the first pool on the server's networks.

tenant3string

Id of the tenant.

no_ipv64bool

No IPv6 block, even when the pool has a prefix.

reference5string

Free text kept with the allocation.

ServerAddresses

The addresses of a server.

FieldNumberTypeDescription
pool_id1string

Id of the pool.

mac2string

MAC address of the network adapter.

ipv43string

IPv4 address.

prefix_len4uint32

IPv4 prefix length.

gateway5string

IPv4 gateway.

dns_servers6repeated string

DNS servers.

ipv6_prefix7string

IPv6 block of the server.

ipv6_address8string

IPv6 address of the server in its block.

ipv6_gateway9string

IPv6 gateway.

ipv6_onlink_len10uint32

Prefix length the guest configures on ipv6_address (on-link, at least 64).

ReleaseForServerRequest

Releases the addresses of a deleted server.

FieldNumberTypeDescription
vm_id1string

Id of the virtual machine.

ReleaseForServerResponse

No fields.

FieldNumberTypeDescription
addresses1repeated string

Addresses or "prefix" of the released /64s.

GetTrafficRequest

Asks for the monthly traffic.

FieldNumberTypeDescription
tenant1string

Only the virtual machines of this tenant.

vm_id2string

Only this virtual machine.

month3string

"YYYY-MM"; empty: the current period.

VmTraffic

Traffic of one virtual machine in the period.

FieldNumberTypeDescription
vm_id1string

Id of the virtual machine.

name2string

Name of the virtual machine.

tenant3string

Id of its tenant; empty without one.

in_bytes4uint64

Bytes received.

out_bytes5uint64

Bytes sent.

billable_bytes6uint64

Bytes that count toward the limit.

TrafficReport

Traffic of the period.

FieldNumberTypeDescription
period_start1string

Start of the period, RFC 3339.

period_end2string

End of the period, RFC 3339.

billable3string

"out", "in_out" or "max".

vms4repeated VmTraffic

One line per virtual machine.

Version 0.1.