History | View | Annotate | Download (18.5 kB)
cyclades: snf-manage floating-ip-release <address>
cyclades: Add snf-manage port-remove command
cyclades: snf-manage port-create
cyclades: Fix getting value from pool
If an address is specified, check that the value belong to the pool,else raise InvalidValue.
cyclades: Refactor code for allocating IPs
Refactor code that was used for allocating IP addresses and creatingNetworkInterfaces. The new code is more suitable to the new DB schemawhere each network may have many IPv4 subnets and each subnet mayhave many IP pools. Also, the new functions are using prefetch related...
cyclades: Optimize DB queries of /servers API
Use 'prefetch_related' attribute of Django queryset to prefetch theNetworkInterface and IPaddress objects that are related with aVirtualMachine object. Also, modify functions that operate on serverNICs and IPs, to to use only the prefetched objects, which means that...
cyclades: Fix code for networks logic and API
cyclades: Fix indentation, PEP8 and wrong imports
Integrate /networks API call
cyclades: Add /ports api call
cyclades: Make API server tests pass
Refactor Cyclades code so that it follows the new models for Networks,Subnets and IPAddresses. This refactor is not complete. Instead is thenecessary refactor for making tests for server API calls succeed.
cyclades: Replace FloatingIP with IPAddress
This commit just replaces all references to FloatingIP objects withreferences to IPAddress object, in order to be able to just load thecode. But the code is left unchanged, so all tests will fail.
cyclades: Use NIC UUID in firewall tags
Use NICs UUID instead of index to generate firewall tags. Make the'set_firewall_profile' action to take the NICs ID as argument. Also,update the firewall settings.
cyclades: Change format of 'attachment' attribute
Change the format of the 'attachment' attribute. Until now, eachattachment had an identifier of the form 'nic-$vm_id-$nic_id'. Thiscommit changes the identifier to just '$nic_id', since from now onis unique for the lifetime of a NIC.
cyclades: Use Ganeti NIC UUIDs
Since Ganeti 2.8, it is supported to refer to devices (NICs and Disks)not only by their index but also by their name or UUID. This commitupdates Synnefo to refer to devices by their name. Synnefo will set thename of the devices which will be a UUID. We do not use Ganeti's UUIDs...
Pass hashmap instead of location to snf-image
Update Cyclades, to pass as 'img_id' the hashmap('checksum') of theimage, instead of the location URL. In that way, snf-image does not anyaccess to the Pithos database.
cyclades: Move code for validating network values
Move code for network parameters validation from 'api' module to 'logic'.
cyclades: Exclude FIP pools from IP allocation
Do not include the floating IP pools, to the available public networkswhen allocating an IPv4 address, when 'SNF:ANY_PUBLIC' option is used.
cyclades: Support IPv6 only networks
Make Cyclades support IPv6 only networks. Such networks will havethe 'subnet' attribute set to None, in the same way that IPv4 onlynetworks have the 'subnet6' attribute set to None.
Because currently Ganeti does not support IPv6 only networks, we create the...
PEP8 fixes
cyclades: Remove PUBLIC_USE_POOL setting
Remove PUBLIC_USE_POOL setting, since in order to use floating IPs, thecyclades must be responsible for managing all IP pools.
cyclades: Various fixes regarding floating IPs
Fix some issues regarding floating ips introduced by rebasing branch.
cyclades: Auto allocate a floating IP
Make 'pool' attribute of POST /os-floating-ips request optional. Ifattribute is missing, the server will allocate a floating IP from one ofthe available public networks.
cyclades: Major refactor to api and logic apps
Major refactor to cyclades api and logic apps that removes most codefrom the api views and moves it to logic app, so that the same logiccode can be used by different apps (e.g. EC2 API). Code is moved into...
cyclades: Handle 'EmptyPool' in util method
Refactor cyclades code to handle 'EmptyPool' exception in'get_network_free_address' function.
cyclades: Fix typo in links
cyclades: Add 'links' to compute endpoints
Add 'links' attribute to API responses for servers, networks, flavorsand images endpoints.
cyclades: Remove userdata api from ui prefix
- Individualize userdata api by placing module under synnefo namespace and urs under it's own USERDATA_PREFIX
cyclades: Add 'drained' flag to Network
Extend Network model with the 'drained' attribute, to indicate whether anetwork should be used in public IP allocation when creating servers.This option is only useful for public networks.
cyclades: Move common code to seperate function
Move common between API method and management command for creating aserver to a separate function.
cyclades: Fix stale 'DeletedError' exception
Fix deadlock when creating server
Fix deadlock when creating a server that was introduced by commit501053a. Allocating the public IP in the same transaction with creatingthe server resulted in a deadlock with backend allocator, becauseinserting the new VM in the database waits on an exclusive lock of the...
plankton: Cleanup and improve code
Move astakos lib from snf-common to snf-django-lib
Remove VM/Network DeletedError and BuildingError
Handle these errors explicitly in the code instead of the "api_method" decorator.
Remove ImageBackend NotAllowedError
Refs #3359
Use common 'api_method' decorator to cyclades api
Update Cyclades API methods to use the new common 'api_method'decorator. Also, update all the relevant tests.
Remove dead code
Move cloud faults to 'snf_django.lib.api.faults'
Gather all faults from all synnefo projects into common'snf_django.lib.api.faults'.
Validate all network-create parameters
Fix bug: Detect malformed network subnet
Fix bug in Cyclades network API. API should raise BadRequest ifspecified network subnet is invalid. Also, do not allow subnets withhost bits set (like 10.0.0.1/28).
pep8 fixes
Fix image 'backend_id' for archipelago
Archipelago needs as disk origin, the hashmap of the imageinstead of its url in the backend.
Helper api method to retrieve existing userids
Introduce network flavors to replace network types
Add tags and mode to network db model. Replace existing type withflavor. Introduce 4 different flavors. Each flavor has mode, link,mac_prefix, tags. Supported flavors are CUSTOM, IP_LESS_ROUTED,MAC_FILTERED, PHYSICAL_VLAN and are hardcoded in db models....
Fix typos
Merge handling of ext_<provider> disk templates
Use helper function for verifying personalities
Merge branch 'origin/devel-0.13' into quota
Conflicts: snf-cyclades-app/synnefo/api/servers.py
Fix wrong setting
PUBLIC_ROUTED_USE_POOL has been renamed to PUBLIC_USE_POOL
Refactor some code to API create_server method
Handle Pithos NotAllowedError
Use select_for_update for VirtualMachines
Use select_for_update method when accessing VM objects to preventrace conditions. Also move start_action from logic to api.
Fix HTTP response code when refusing action
Return Forbidden(403) instead of Unauthorized(401) when refusing arequested action, because the VM is suspended or the resource is public.Unauthorized should be used only when authentication is required and has...
Return the VM!
Do not allow any API action on suspended VMs
Do not allow any modification of any administratively suspended VM through theAPI.
Include deleted networks in get_flavor_info
Do not allow actions to deleted networks
Block create instance api call with deleted flavor
Do not allow creation of instances with deleted flavorsRefs #2481
Fix GET networks API response for public networks
Log 5xx API faults
Perform allocations in separate transactions
Add ForUpdateManager to the Backend model, in order to guaranteeexclusive order when allocating a VM.
Use manual transactions when allocating Backend and public IP for a newVM, since these allocations need exclusive access (SELECT..FOR UPDATE)...
Fix race conditions when updating network objects
Use for_update() object manager in order to exclude race conditionswhen updating network objects.
Refactor IP pools
Treat IP pool the same way as bridge and mac-prefix pools. The pool isremoved from the Network table and moved to an IPPoolTable containing theIP pools for all networks. Also added support for external reservations.
Migration files for transfering the pool to the new tables are included....
Unique mac-prefix only for mac-filtered networks
Refactor bridge and mac-prefix pool tables
Redesign the implementation of pools and map mac-prefix and bridge poolsto that design.
Each pool type is mapped to a table in the database, and each row ofthat table is a pool of that type. All pool tables must contain the...
Implement multiple public networks
Implement multiple public networks in order to support:- different public networks per backend- non-consecutive IP ranges in each backend
To support this, public networks are treated different from privateones. Namely, they are correlated with one backend (and so have...
Do not allow creation of two big/small networks
- Networks smaller than /29 are not supported in Ganeti.- Big networks will result in degraded performance in Ganetiand DB due to the big reservation map.
Implement MAC Prefix Management
In order to guarantee uniqueness of MAC address accross all backends,synnefo assignes a unique mac prefix to each network in each backend.
A mac-prefix of 20 bits, which is picked from the MacPrefixPool, isassigned to each Network. The mac-prefix of the network in each...
New management command for creating a network
Create a management command for creating networks. Also removethe initial_data.json, since it is currently not necessary.
Update servers/networks responses for new API
- Reponses for servers and netowrks details (list or solo) are nowconsistent to recent backend changes.- Methods get_nic_from_index and construct_nic_id have been created- Syntax for nic removal from network/vm has been adjusted
Simple per user quota mechanism for networks/vms
- New dict setting VMS_USER_QUOTA to allow setting per user quota (overrides MAX_VMS_PER_USER setting)- Private networks quota mechanism (based on MAX_NETWORKS_PER_USER and NETWORKS_USER_QUOTA settings)...
Use lib.astakos instead of our own middleware
Switch to the logging middleware
Merge remote-tracking branch 'origin/master' into astakos-integration
Conflicts: runtests.sh snf-cyclades-app/synnefo/aai/__init__.py snf-cyclades-app/synnefo/aai/fixtures/auth_test_data.json snf-cyclades-app/synnefo/aai/middleware.py snf-cyclades-app/synnefo/aai/models.py...
Renamed snf-app to snf-cyclades-app