- 20 Nov, 2012 23 commits
-
-
Dimitris Aragiorgis authored
Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Support: - gnt-network add --tags. - gnt-network list-tags/add-tags/remove-tags/. - gnt-network list -o +tags Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
If a nic has a network field then encapsulate a network object in netinfo slot for every rpc. This is needed to pass network info to scripts managing nics (kvm-vif-bridge). Introduce _BuildNetworkEnv(). Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Modify existing GenerateMAC so that it takes network as an argument. Substitute _GenerateOneMAC with a decorator _GenerateMACPrefix that chooses the prefix (network's or cluster's) and wraps _GenerateMACSuffix that generates the three remaining bytes. Check mac prefix validity when adding/modifing a network. Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Support: - GetNetwork(s) - CreateNetwork - ConnectNetwork - DisconnectNetwork - RemoveNetwork Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Apollon Oikonomopoulos authored
Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
gnt-network is used to manipulate and handle networks that currently provides the following operations: * Add a new network: gnt-network add --network=1.2.3.0/28 --gateway=1.2.3.1 --add-reserved-ips=1.2.3.4,1.2.3.5 testnet * Remove an existing network: gnt-network remove testnet * Modify an existing network: gnt-network modify --gateway=1.2.3.6 --network-type=private --network6=2001:648::/64 --gateway6=none testnet --add-reserved-ips=1.2.3.10,1.2.3.10, --remove-reserved-ips=1.2.3.20 testnet * Connect an existing network to a nodegroup: gnt-network connect testnet default bridged br100 gnt-network connect testnet <nodegroup> <mode> <link> (pass all for <nodegroup> to connect to all nodegroups) * Disconnect an existing network from a nodegroup: gnt-network disconnect testnet <nodegroup> (pass all for <nodegroup> to disconnect from all nodegroups) * List available networks: gnt-network list * Show network info: gnt-network info [testnet] Introduce new option NOCONFLICTSCHECK_OPT for not checking for conflicting IPs. Using this might cause data inconsistency. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Apollon Oikonomopoulos authored
Add --no-conflicts-check option. Modify instance query methods to return nic's network info. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Apollon Oikonomopoulos authored
Specifically: * export a new environment variable for the gnt-os-interface * export a new environment variable for KVM specific scripts * ovf support for networks Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Keep backwards compatibility just like LUInstanceCreate() and support network parameter for NIC object. Add ec_id argument in Update() to be able to commit temporary IPs that were previously reserved. Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Release any IPs held the instance before actually removing. Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Implement backend support, to export the IP pool management functionality to the clients. When the new NIC parameter 'network' is given, the ippool management system is triggered. If a NIC belongs to a network, it inherits the netparams (mode, link) as its nicparams. If a network is requested, then no 'mode' or 'link' should be specified. Backwards compatibility is preserved, if 'network' parameter is omitted. Examples for IP pool management system: --net 0:network=net1 for an IPless NIC in a network --net 0:ip=pool,network=net1 for automatically generated IP inside the network --net 0:ip=1.2.3.4,network=net1 for specific IP inside the network --net 0:network=none for IPless NIC with default nicparams Examples for traditional assignment: --net 0:ip=1.2.3.4,link=br100,mode=bridged --net 0:ip=none,link=rt2,mode=routed --net 0 Check for conflicting IPs to ensure IP uniqueness inside nodegroups. IAllocator should be extended to become network aware. If an instance has a NIC inside a network, then IAllocator must pick a node that its nodegroup is already connected with that network. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Use TemporaryReservationManager for IP handling to ensure config data consistency. Implement: - methods for reserving/releasing IPs - _UnlockedCommitTemporaryIps() - CheckIPInNodeGroup() used for conflicting IPs - GetGroupNetParams() used for inheriting netparams. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
LUNetworkConnect() connects a network to a nodegroup and defines its netparams (mode and link). Specifically: * Check if network already exists * Check if netparams are valid * Check if already connected to the same nodegroup * Produce errors if any conflicting IPs found * Update the 'networks' slot in NodeGroup config object with the network UUID and netparams requested. E.g. nodegroup_uuid { networks { network_uuid: {mode: 'bridged', link: 'br100'} } } LUNetworkDisconnect() unmaps a network from a nodegroup: * Produce errors if an instance has a NIC with IP inside the network * Remove corresponding entry in 'networks' slot of NodeGroup object Check for conflicting ips can be avoided with corresponding option. Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Support modifying all network parameters except for network (ip range). Cannot modify gateway and reserved ips at the same time. Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Apollon Oikonomopoulos authored
Summarily list all existing networks Supply detailed info for every existing network - List used/free IPs - List instances with NICs assigned to the corresponding network - List NIC index and IP for the above instances Implement complementary config methods for retrieving networks. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Implement LUs for corresponding opcodes: * LUNetworkAdd: - Check for IP validity - Reserves all necessary IPs - Create new Network config object * LUNetworkRemove: - Checks if connected to any nodegroup - Remove a Network config object Implement basic config methods: * LookupNetwork() - Given the network name return the network UUID * AddNetwork() - Add a new network to the config * RemoveNetwork() - Remove a network from the config Add new locking level: LEVEL_NETWORK Add various useful config methods for retrieving network info. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Apollon Oikonomopoulos authored
Add new library module lib/network.py. Introduce new class: AddressPool. AddressPool implements all operations needed for managing IPs inside the IP pool. Given a Network config object (nobj), the class: * initializes the corresponding IP pool object via network.AddressPool.InitializeNetwork(nobj) * obtains the corresponding IP pool object via network.AddressPool(nobj) * manipulates IPs inside the pool Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Dimitris Aragiorgis authored
Config objects: * Introduce L{Network} with - IPv4 network field (mandatory) - IPv4 gateway, IPv6 (network/gateway), mac prefix, type (optional) * Modify existing config objects to support networks: - Add new slot 'network' to L{NIC} config object - Add new slot 'networks' to L{NodeGroup} config object Opcodes: * Introduce new opcodes for networks - add/remove/modify/query/connect/disconnect. * In InstanceCreate/InstanceSetParams add conflicts_check option Constants: * INIC_PARAM 'INIC_NETWORK' * NIC_IP_POOL for automaticaly obtain an IP from a pool * NETWORK_TYPE_PUBLIC/PRIVATE for network types Checking of network_type handled by the opcode parameter validation. Introduce _CheckCIDR*Notation() functions for network parameters validation. Signed-off-by:
Apollon Oikonomopoulos <apollon@noc.grnet.gr> Signed-off-by:
Dimitris Aragiorgis <dimara@grnet.gr> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Iustin Pop authored
When given an empty string as value to a parameter that doesn't accept empty strings, the error message was confusing, since it was showing just as a double space. Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Adeodato Simo <dato@google.com>
-
Iustin Pop authored
Currently, ht.py uses a bad terminology for positive/non-negative numbers. Per http://en.wikipedia.org/wiki/Positive_number , this is the correct terminology: - A number is positive if it is greater than zero. - A number is negative if it is less than zero. - A number is non-negative if it is greater than or equal to zero. - A number is non-positive if it is less than or equal to zero. So this patch renames things as follows: - TPositiveInt ⇒ TNonNegativeInt - TStrictPositiveInt ⇒ TPositiveInt - TMaybePositiveInt ⇒ dropped, not used anywhere - TMaybeStrictPositiveInt ⇒ TMaybePositiveInt - TPositiveFloat ⇒ TNonNegativeFloat - TStrictNegativeInt ⇒ TNegativeInt Signed-off-by:
Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
-
- 19 Nov, 2012 4 commits
-
-
Michael Hanselmann authored
Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Michael Hanselmann authored
The opcode doesn't pay attention to the build-time flag to enable or disable restricted commands. In a cluster different nodes could have different settings. Node locks are acquired in shared mode by default, but the use of an exclusive lock can be forced using the “use_locking” parameter. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
Expose the functionality to run restricted commands remotely via RPC. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
Scheduling a pending acquisition is relatively expensive and lot of code is involved. Unless there is already one, a new pipe needs to be opened. Data structures need to be updated as well, only to be undone shortly after. This patch adds a small condition to return straight away if the timeout is shorter than 1ms and the lock couldn't be acquired right away. Blocking acquisitions are not affected, as are acquisitions with longer timeouts. While I tried hard, I could not find a way of writing a test specifically for this case which wouldn't have involved making significant other modifications. Other tests already exercise the new code, though. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 16 Nov, 2012 3 commits
-
-
Michael Hanselmann authored
As per design document (doc/design-remote-commands.rst), a number of rather strict tests is applied to any incoming request, a delay is inserted upon errors and returned error messages are very generic (unless it's the actual command that failed). There are unit tests for all of the newly added code. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
By default remote commands are disabled and need to be explicitely enabled at build time. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
This was requested in issue 301. Before this patch, requests to “/2/query/*” and “/2/instances/*/console” would require authentication with a user with write access. Since that is not strictly necessary, a new user option named “read” is added. Console information can also be retrieved as a normal query, therefore the change applies there too. This was the first user option to be added after “write”, therefore quite a few changes were necessary. Documentation, including NEWS, is updated as well. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 15 Nov, 2012 1 commit
-
-
Michael Hanselmann authored
This allows the option to be re-used in other places. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
- 14 Nov, 2012 3 commits
-
-
Michael Hanselmann authored
Without this change, invalid lines or values would be silently ignored. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Guido Trotter <ultrotter@google.com>
-
Michael Hanselmann authored
Also add tests to ensure it's never allowed as a file storage path. A constant for the lock file is also added. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
- 13 Nov, 2012 6 commits
-
-
Michael Hanselmann authored
This can be used to change the priority of a pending or running job (the latter only if there are unprocessed opcodes). Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com>
-
Michael Hanselmann authored
A new LUXI request is added, in both Python and Haskell. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com> Reviewed-by:
Iustin Pop <iustin@google.com>
-
Michael Hanselmann authored
This is due to a feature request. Sometimes one wants to change the priority of a job after it has been submitted, e.g. after submitting an important job only to later notice many other pending jobs which will be processed first. Priority changes only take effect at the next lock acquisition or when the job is re-scheduled. The design is very similar to how jobs are cancelled. Unit tests for “_QueuedJob.ChangePriority” are included. Also rename “TestQueuedJob.test” to “TestQueuedJob.testError”. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com>
-
Michael Hanselmann authored
The job ID is re-used as the task ID, as job IDs are unique. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com>
-
Michael Hanselmann authored
When a task is deferred it should receive the same task ID upon being returned to the pool. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com>
-
Michael Hanselmann authored
Using the task ID a pending task's priority can be changed. This will be used to change the priority of jobs in the workerpool. Signed-off-by:
Michael Hanselmann <hansmi@google.com> Reviewed-by:
Bernardo Dal Seno <bdalseno@google.com>
-