7.7. Networks

Users can create private networks to connect Virtual Machines, and can also manage network-related objects and properties e.i., connection to public networks, IPs and subnets.

In the following we assume that there are two active virtual servers (ids 141 and 142) connected to one public network with id 1 (default set up).

$ kamaki server list
 141 Server 1
 142 Server 1

A look at the current network state:

$ kamaki network list
1 public_network

7.7.1. Create a private network

The new network will be named ‘My Private Net’

$ kamaki network create --name='My Private Net'
 id: 2
 status:      ACTIVE
 router:external: True
 user_id:     s0m3-u53r-1d
 updated:     2013-06-19T13:54:57.672744+00:00
 created:     2013-06-19T13:52:02.268886+00:00
 links: ...
 public:      False
 tenant_id:   s0m3-u53r-1d
 admin_state_up: True
 SNF:floating_ip_pool: False
 subnets:
 type:        MAC_FILTERED

7.7.2. Connect and disconnect

Connect the network to the virtual servers:

$ kamaki network connect 2 --device-id=141 --device-id=142
 Creating a port to connect network 2 with device 141
 11
    status: BUILD
    network_id: 29729
    mac_address: None
    fixed_ips:
    device_id: 141
    ...
 Creating a port to connect network 2 with device 142
 12
    status: BUILD
    network_id: 2
    mac_address: None
    fixed_ips:
    device_id: 142
    ...

Warning

A port between a network and a server takes some time to be created. Use –wait to make “connect” wait for all ports to be created

Note

network connect is a shortcut for port create:

$ kamaki port create --network-id=1 --device-id=141 --wait
$ kamaki port create --network-id=1 --device-id=142 --wait

Check the current network state:

$ kamaki network list -l
1 Public network
 status: ACTIVE
 router:external: True
 user_id: None
 updated: 2013-06-19T13:36:51.932214+00:00
 created: 2013-05-29T17:30:03.040929+00:00
 links: ...
 tenant_id: None
 admin_state_up: True
 SNF:floating_ip_pool: False
 public: True
 subnets:
    53
 type: IP_LESS_ROUTED
2 My Private Net
 status:      ACTIVE
 router:external: True
 user_id:     s0m3-u53r-1d
 updated:     2013-06-19T13:54:57.672744+00:00
 created:     2013-06-19T13:52:02.268886+00:00
 links: ...
 public:      False
 tenant_id:   s0m3-u53r-1d
 admin_state_up: True
 SNF:floating_ip_pool: False
 subnets:
 type:        MAC_FILTERED

Now the servers can communicate with each other through their shared private network.

7.7.3. Manage floating IPs

A floating IP can be created (reserved from a pool) and attached to a device.

$ kamaki ip create --network-id=1
 instance_id: None
 deleted: False
 floating_network_id: 1
 fixed_ip_address: None
 floating_ip_address: 192.168.3.5
 port_id: None
 id: 8
$ kamaki ip attach 8 --server-id=141 --wait
 13
    status: ACTIVE
    network_id: 1
    mac_address: None
    fixed_ips:
        subnet: 21
        ip_address: 192.168.3.5
    device_id: 141
    ...

Note

ip attach is also a shortcut for port create !!!

...
$ kamaki port create \
  --network-id=1 --device-id=141 --ip-address=192.168.3.5 --wait

An attempt to attach a used IP to another virtual server, should fail:

$ kamaki ip attach 8 --server-id=142 --wait
 (409) IP address '192.168.3.5' is already in use

More than one IPs can be created and more than one can be attached on the same virtual server.

$ kamaki ip create --network-id=1
 instance_id: None
 deleted: False
 floating_network_id: 1
 fixed_ip_address: None
 floating_ip_address: 192.168.3.5
 port_id: None
 id: 9
$ kamaki ip attach 9 --server-id=141 --wait
 14
    status: ACTIVE
    network_id: 1
    mac_address: None
    fixed_ips:
        subnet: 22
        ip_address: 192.168.3.6
    device_id: 141
    ...

Since all connections exist as ports, we can monitor everything with “port” commands:

$ kamaki port list -l
 11
    status: ACTIVE
    network_id: 2
    mac_address: None
    fixed_ips:
    device_id: 141
    ...
 12
    status: ACTIVE
    network_id: 2
    mac_address: None
    fixed_ips:
    device_id: 142
 13
    status: ACTIVE
    network_id: 1
    mac_address: None
    fixed_ips:
        subnet: 21
        ip_address: 192.168.3.5
    device_id: 141
    ...
 14
    status: ACTIVE
    network_id: 1
    mac_address: None
    fixed_ips:
        subnet: 22
        ip_address: 192.168.3.6
    device_id: 141
    ...

Virtual server 141 has two IPs while 142 has none. Detach 192.168.3.6 (id: 9) and attach it to server 142:

$ detach 9 --wait
$ attach 9 --server-id=142 --wait
 14
    status: ACTIVE
    network_id: 1
    mac_address: None
    fixed_ips:
        subnet: 22
        ip_address: 192.168.3.6
    device_id: 142
    ...

7.7.4. IP quota limits

It is always a good idea to check the resource quotas:

$ kamaki quota list
 cyclades.disk:
    usage: 80GiB
    limit: 500GiB
    pending: 0B
 cyclades.vm:
    usage: 2
    limit: 2
    pending: 0
 pithos.diskspace:
    usage: 1.43GiB
    limit: 20GiB
    pending: 0B
 cyclades.ram:
    usage: 9GiB
    limit: 40GiB
    pending: 0B
 cyclades.floating_ip:
    usage: 2
    limit: 3
    pending: 0
 cyclades.cpu:
    usage: 4
    limit: 8
    pending: 0
 cyclades.network.private:
    usage: 2
    limit: 5
    pending: 0

According to these results, there is only one IP left. We will attempt to reserve two, and when we fail in the second, and then we will release the first

$ kamaki ip create --network-id=1
 instance_id: None
 deleted: False
 floating_network_id: 1
 fixed_ip_address: None
 floating_ip_address: 192.168.3.7
 port_id: None
 id: 10
$ kamaki ip create --network-id=1
 (413) REQUEST ENTITY TOO LARGE
 |  Limit for resource 'Floating IP address' exceeded for your account.
 |  Available: 0, Requested: 1
$ kamaki ip delete 10

7.7.5. Destroy a private network

Attempt to destroy the public network

$ kamaki network delete 1
(403) Network with id 1 is in use
|  FORBIDDEN forbidden (Can not delete the public network.)

Warning

Public networks cannot be destroyed with API calls

Attempt to destroy the private network

$ kamaki network delete 2
(403) Network with id 2 is in use

The attached virtual servers should be disconnected first

$ kamaki network disconnect 2 --device-id=141 --device-id=142 --wait
$ kamaki network delete 2

Note

network disconnect is a shortcut for port delete

$ kamaki port delete 11 --wait
$ kamaki port delete 12 --wait
$ kamaki network delete 2