cloudstack.git
13 hours agoMerge branch '4.11' master
Rohit Yadav [Fri, 19 Jan 2018 08:16:58 +0000 (13:46 +0530)] 
Merge branch '4.11'

13 hours agoCLOUDSTACK-10233: Use namespace in Libvirt domain metadata. (#2410) 4.11
Frank Maximus [Fri, 19 Jan 2018 08:14:16 +0000 (09:14 +0100)] 
CLOUDSTACK-10233: Use namespace in Libvirt domain metadata. (#2410)

The documentation of Libvirt specifies the requirement of using an XML namespace,
when having metadata in the Domain XML. The Nuage extenstion metadata was not
adhering to this specification, and the lastest Libvirt version ignores it in that case.

13 hours agoCLOUDSTACK-9749: Fix Password server running on internal LB VM (#2409)
Frank Maximus [Fri, 19 Jan 2018 08:11:57 +0000 (09:11 +0100)] 
CLOUDSTACK-9749: Fix Password server running on internal LB VM (#2409)

Fixes code to start password server only on routers.

4 days agoUpdating pom.xml version numbers for master to 4.12.0.0-SNAPSHOT
Rohit Yadav [Mon, 15 Jan 2018 12:03:29 +0000 (17:33 +0530)] 
Updating pom.xml version numbers for master to 4.12.0.0-SNAPSHOT

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
4 days agoCLOUDSTACK-10227: Add delay before reverting VM snapshot (#2407)
Rohit Yadav [Mon, 15 Jan 2018 10:27:48 +0000 (15:57 +0530)] 
CLOUDSTACK-10227: Add delay before reverting VM snapshot (#2407)

As discovered and discussed in #2376, adding some delay after stopping
the VM and reverting VM snapshot passes the
`test_change_service_offering_for_vm_with_snapshots` test case. The
suspect here is userVMDao or background vmsync that may not update
the VM state to PowerOff.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
5 days agoCLOUDSTACK-10227: Stabilization fixes for 4.11.0.0 (#2403)
Rohit Yadav [Sun, 14 Jan 2018 18:38:36 +0000 (00:08 +0530)] 
CLOUDSTACK-10227: Stabilization fixes for 4.11.0.0 (#2403)

This fixes regression failures seen in Trillian, fixes NPEs that cause Travis related failures.
This also removes the aria2 dependency from rpms that require users to enable/install epel-release.
This finally updates the checksums for 4.11 systemvmtemplates in db upgrade path.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
5 days agoCLOUDSTACK-9620: Enhancements for managed storage (#2298)
Mike Tutkowski [Sun, 14 Jan 2018 18:35:52 +0000 (11:35 -0700)] 
CLOUDSTACK-9620: Enhancements for managed storage (#2298)

Allowed zone-wide primary storage based on a custom plug-in to be added via the GUI in a KVM-only environment (previously this only worked for XenServer and VMware)

Added support for root disks on managed storage with KVM

Added support for volume snapshots with managed storage on KVM

Enable creating a template directly from a volume (i.e. without having to go through a volume snapshot) on KVM with managed storage

Only allow the resizing of a volume for managed storage on KVM if the volume in question is either not attached to a VM or is attached to a VM in the Stopped state.

Included support for Reinstall VM on KVM with managed storage

Enabled offline migration on KVM from non-managed storage to managed storage and vice versa

Included support for online storage migration on KVM with managed storage (NFS and Ceph to managed storage)

Added support to download (extract) a managed-storage volume to a QCOW2 file

When uploading a file from outside of CloudStack to CloudStack, set the min and max IOPS, if applicable.

Included support for the KVM auto-convergence feature

The compression flag was actually added in version 1.0.3 (1000003) as opposed to version 1.3.0 (1003000) (changed this to reflect the correct version)

On KVM when using iSCSI-based managed storage, if the user shuts a VM down from the guest OS (as opposed to doing so from CloudStack), we need to pass to the KVM agent a list of applicable iSCSI volumes that need to be disconnected.

Added a new Global Setting: kvm.storage.live.migration.wait

For XenServer, added a check to enforce that only volumes from zone-wide managed storage can be storage motioned from a host in one cluster to a host in another cluster (cannot do so at the time being with volumes from cluster-scoped managed storage)

Don’t allow Storage XenMotion on a VM that has any managed-storage volume with one or more snapshots.

Enabled for managed storage with VMware: Template caching, create snapshot, delete snapshot, create volume from snapshot, and create template from snapshot

Added an SIOC API plug-in to support VMware SIOC

When starting a VM that uses managed storage in a cluster other than the one it last was running in, we need to remove the reference to the iSCSI volume from the original cluster.

Added the ability to revert a volume to a snapshot

Enabled cluster-scoped managed storage

Added support for VMware dynamic discovery

7 days agoCLOUDSTACK-10220: Configure IPv4 alias on VR regardless of IPv6 (#2396)
Wido den Hollander [Fri, 12 Jan 2018 17:57:09 +0000 (18:57 +0100)] 
CLOUDSTACK-10220: Configure IPv4 alias on VR regardless of IPv6 (#2396)

IPv4 and IPv6 are two different protocols and the presence of IPv6
in a network does not mean that IPv4 aliases/multiple subnets should
not be configured or supported by the VR.

This if-statement was written almost 5 years ago in a attempt to
add IPv6 support to CloudStack but was never fully implemented.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
7 days agoCLOUDSTACK-10229: improve xenserver swift logging, removed usued code (#2152)
Pierre-Luc Dion [Fri, 12 Jan 2018 14:23:35 +0000 (09:23 -0500)] 
CLOUDSTACK-10229: improve xenserver swift logging, removed usued code (#2152)

This script is used to upload snapshots to swift and is executed on dom0 of XenServer. The PR make logging from /var/log/cloud/swiftxenserver.log more meaningful as the below example;

2017-06-15 10:26:32    DEBUG [root] #### CLOUD enter  swift ####
2017-06-15 10:26:32    DEBUG [root] #### CLOUD upload begin    S-12522/d841b62a-7f83-4d5d-9e9d-2940115f7fa9.vhd to swift ####
2017-06-15 10:27:13    DEBUG [root] #### CLOUD upload complete S-12522/d841b62a-7f83-4d5d-9e9d-2940115f7fa9.vhd to swift: 0:00:40 @ 45 MB/s ####
2017-06-15 10:27:13    DEBUG [root] #### CLOUD exit   swift ####

7 days agoCLOUDSTACK-9813: Extending Config Drive support (#2097)
Frank Maximus [Fri, 12 Jan 2018 09:44:40 +0000 (10:44 +0100)] 
CLOUDSTACK-9813: Extending Config Drive support (#2097)

Extending Config Drive support

* Added support for VMware
* Build configdrive.iso on ssvm
* Added support for VPC and Isolated Networks
* Moved implementation to new Service Provider
* UI fix: add support for urlencoded userdata
* Add support for building systemvm behind a proxy

Co-Authored-By: Raf Smeets <raf.smeets@nuagenetworks.net>
Co-Authored-By: Frank Maximus <frank.maximus@nuagenetworks.net>
Co-Authored-By: Sigert Goeminne <sigert.goeminne@nuagenetworks.net>
9 days agoCLOUDSTACK-10188 - Resource Accounting for primary storage is Broken when Domains...
Bitworks Software, Ltd [Wed, 10 Jan 2018 16:41:26 +0000 (23:41 +0700)] 
CLOUDSTACK-10188 - Resource Accounting for primary storage is Broken when Domains are in use (#2362)

During storage expunge domain resource statistics for primary storage space resource counter is not updated for domain. This leads to the situation when domain resource statistics for primary storage is overfilled (statistics only increase but not decrease).

Global scheduled task resourcecount.check.interval > 0 provides a workaround but not fixes the problem truly because when accounts inside domains use primary_storage allocation/deallocation intensively it leads to service block of operation.

NB: Unable to implement marvin tests because it (marvin) places in database weird primary storage volume size of 100 when creating VM from template. It might be a sign of opening a new issue for that bug.

9 days agoCLOUDSTACK-4757: Support OVA files with multiple disks for templates (#2146)
Abhinandan Prateek [Wed, 10 Jan 2018 16:40:41 +0000 (22:10 +0530)] 
CLOUDSTACK-4757: Support OVA files with multiple disks for templates (#2146)

CloudStack volumes and templates are one single virtual disk in case of XenServer/XCP and KVM hypervisors since the files used for templates and volumes are virtual disks (VHD, QCOW2). However, VMware volumes and templates are in OVA format, which are archives that can contain a complete VM including multiple VMDKs and other files such as ISOs. And currently, Cloudstack only supports Template creation based on OVA files containing a single disk. If a user creates a template from a OVA file containing more than 1 disk and launches an instance using this template, only the first disk is attached to the new instance and other disks are ignored.
Similarly with uploaded volumes, attaching an uploaded volume that contains multiple disks to a VM will result in only one VMDK to being attached to the VM.

FS: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Support+OVA+files+containing+multiple+disks

This behavior needs to be improved in VMWare to support OVA files with multiple disks for both uploaded volumes and templates. i.e. If a user creates a template from a OVA file containing more than 1 disk and launches an instance using this template, the first disk should be attached to the new instance as the ROOT disk and volumes should be created based on other VMDK disks in the OVA file and should be attached to the instance.

Signed-off-by: Abhinandan Prateek <abhinandan.prateek@shapeblue.com>
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agoCLOUDSTACK-10109: Fix regression from PR #2295 (#2394)
Rohit Yadav [Tue, 9 Jan 2018 19:14:00 +0000 (00:44 +0530)] 
CLOUDSTACK-10109: Fix regression from PR #2295 (#2394)

This fixes regression introduced in PR #2295:
- Pass assign=true to fetch new public IP
- Use wait_until instead of sleep+wait in tests
- Loop through list of public IP ranges to match the systemvm gateway
- Fix potential NPE seen when adding simulator host(s)
- Removes aria2 installation from setup_agent.sh using yum, it's already
  dependency for cloudstack-agent package

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agoCLOUDSTACK-10217: Clean up old MAC addresses from DHCP lease file (#2393)
Wido den Hollander [Tue, 9 Jan 2018 19:11:55 +0000 (20:11 +0100)] 
CLOUDSTACK-10217: Clean up old MAC addresses from DHCP lease file (#2393)

When the IPv4 address of a Instance changes we need to make sure the
old entry is removed from the DHCP lease file on the Virtual Router
otherwise the Instance will still get the old lease.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
10 days agoCLOUDSTACK-10013: Fix systemvmtemplate build failure
Rohit Yadav [Tue, 9 Jan 2018 12:28:02 +0000 (17:58 +0530)] 
CLOUDSTACK-10013: Fix systemvmtemplate build failure

This enables security updates in preseed file and removes purges
old kernel, and increases maximum /boot partition size. Build failures
were found due to insufficient space in /boot. Tested with packer+qemu
on Ubuntu 17.10.

Also silently remove xmas cloudstack cloudmonkey logo without hurting
anyone's sentiments (no monkeys were harmed in this commit ;).

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agoMerge branch '4.10'
Rohit Yadav [Tue, 9 Jan 2018 10:53:43 +0000 (16:23 +0530)] 
Merge branch '4.10'

10 days agoMerge branch '4.9' into 4.10 4.10
Rohit Yadav [Tue, 9 Jan 2018 10:53:06 +0000 (16:23 +0530)] 
Merge branch '4.9' into 4.10

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agosystemvmtemplate: Enable security repos and dist-upgrade when building 4.9
Rohit Yadav [Tue, 9 Jan 2018 10:50:56 +0000 (16:20 +0530)] 
systemvmtemplate: Enable security repos and dist-upgrade when building

This enables Wheezy security repos during systemvmtemplate building,
and does a dist-upgrade to update/upgrade all outstanding packages
especially the Linux kernel.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agoCLOUDSTACK-10013: Enable debian security repos during systemvm building
Rohit Yadav [Tue, 9 Jan 2018 10:43:51 +0000 (16:13 +0530)] 
CLOUDSTACK-10013: Enable debian security repos during systemvm building

Perform a dist-upgrade to upgrade all packages especially the linux
kernel before building the systemvmtemplate.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
10 days agoCloudstack 10170: Fix resource tags security bugs and add account tags support (...
Bitworks Software, Ltd [Tue, 9 Jan 2018 08:25:34 +0000 (15:25 +0700)] 
Cloudstack 10170: Fix resource tags security bugs and add account tags support (#2350)

This PR introduces several features and fixes some bugs:
- account tags feature
- fixed resource tags bugs which happened during tags search (found wrong entries because of mysql string to number translation - see #905, but this PR does more and fixes also resource access - vulnerability during list resource tags)
- some marvin improvements (speed, sanity)

Improved resource tags code:
1. Enhanced listTags security
2. Added support for account tags (account tags are required to support tags common for all users of an account)
3. Improved the tag management code (refactoring and cleanup)

Marvin:
1. Fixed Marvin wait timeout between async pools. To decrease polling interval and improve CI speed.
2. Fixed /tmp/ to /tmp in zone configuration files.
3. Fixed + to os.path.join in log class.
4. Fixed + to os.path.join in deployDataCenter class.
5. Fixed typos in tag tests.
6. Modified Tags base class delete method.

Deploy Datacenter script:
1. Improved deployDatacenter. Added option logdir to specify where script places results of evaluation.

ConfigurationManagerImpl:
1. Added logging to ConfigurationManagerImpl to log when vlan is not found. Added test stubs for tags. Found accidental exception during simulator running after CI.

tests_tags.py:
1. Fixed stale undeleted tags.
2. Changed region:India to scope:TestName.

10 days agoCLOUDSTACK-10212: Update Netmask/Gateway when Changing IPv4 address (#2388)
Wido den Hollander [Tue, 9 Jan 2018 08:23:16 +0000 (09:23 +0100)] 
CLOUDSTACK-10212: Update Netmask/Gateway when Changing IPv4 address (#2388)

This can otherwise cause problems in Basic Networking where multiple
IPv4 ranges are configured in a POD.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
10 days agoCLOUDSTACK-10146: Bypass Secondary Storage for KVM templates (#2379)
Nicolas Vazquez [Tue, 9 Jan 2018 06:52:18 +0000 (03:52 -0300)] 
CLOUDSTACK-10146: Bypass Secondary Storage for KVM templates (#2379)

This feature allows using templates and ISOs avoiding secondary storage as intermediate cache on KVM. The virtual machine deployment process is enhanced to supported bypassed registered templates and ISOs, delegating the work of downloading them to primary storage to the KVM agent instead of the SSVM agent.

Template and ISO registration:
- When hypervisor is KVM, a checkbox is displayed with 'Direct Download' label.
- API methods registerTemplate and registerISO are both extended with this new parameter directdownload.
- On template or ISO registration, no download job is sent to SSVM agent, CloudStack would only persist an entry on template_store_ref indicating that template or ISO has been marked as 'Direct Download' (bypassing Secondary Storage). These entries are persisted as:
template_id = Template or ISO id on vm_template table
store_id NULL
download_state = BYPASSED
state = Ready
(Note: these entries allow users to deploy virtual machine from registered templates or ISOs)
- An URL validation command is sent to a random KVM host to check if template/ISO location can be reached. Metalink are also supported by this feature. In case of a metalink, it is fetched and URL check is performed on each of its URLs.
- Checksum should be provided as indicated on #2246: {ALGORITHM}CHKSUMHASH
- After template or ISO is registered, it would be displayed in the UI

Virtual machine deployment:
When a 'Direct Download' template is selected for deployment, CloudStack would delegate template downloading to destination storage pool via destination host by a new pluggable download manager.
Download manager would handle template downloading depending on URL protocol. In case of HTTP, request headers can be set by the user via vm_template_details. Those details should be persisted as:
Key: HTTP_HEADER
Value: HEADERNAME:HEADERVALUE

In case of HTTPS, a new API method is added uploadTemplateDirectDownloadCertificate to allow user importing a client certificate into all KVM hosts' keystore before deployment.
After template or ISO is downloaded to primary storage, usual entry would be persisted on template_spool_ref indicating the mapping between template/ISO and storage pool.

10 days agoCLOUDSTACK-10213: Allow specify SSH key lengh (#2389)
Dmytro Shevchenko [Tue, 9 Jan 2018 06:46:37 +0000 (08:46 +0200)] 
CLOUDSTACK-10213: Allow specify SSH key lengh (#2389)

SSH keys generated by the ACS are only 1024 bit (RSA). The common standard is now at least 2048 bit.

11 days agoCLOUDSTACK-10215: Excessive log4j debug level in CPVM could lead to FS overflow ...
Bitworks Software, Ltd [Mon, 8 Jan 2018 07:35:56 +0000 (14:35 +0700)] 
CLOUDSTACK-10215: Excessive log4j debug level in CPVM could lead to FS overflow (#2391)

Fixed excessive log levels for systemvm agents.

11 days agoCLOUDSTACK-9921: Fix NPE when storage garbage collector is running (#2139)
jayakarteek [Mon, 8 Jan 2018 07:31:53 +0000 (13:01 +0530)] 
CLOUDSTACK-9921: Fix NPE when storage garbage collector is running (#2139)

Steps to reproduce issue

Deploy a VM
Take snapshot of the root volume
Delete the snapshot
Before the garbage collector has run, shutdown the VM and assign the VM to other user.
When garage collector executes NPE shows in the logs.

12 days agoCLOUDSTACK-9892: Primary storage resource check is broken when using root disk size...
koushik-das [Sun, 7 Jan 2018 10:48:58 +0000 (16:18 +0530)] 
CLOUDSTACK-9892: Primary storage resource check is broken when using root disk size override to deploy VM (#2088)

This happens when the root disk size is overridden. The primary storage limit check should be performed based on overridden size instead of template size. Enabled root disk resize tests to run on simulator as well.

12 days agoCLOUDSTACK-10197: Rename xentools iso for XenServer 7.0+ (#2365)
Khosrow Moossavi [Sun, 7 Jan 2018 10:30:39 +0000 (05:30 -0500)] 
CLOUDSTACK-10197: Rename xentools iso for XenServer 7.0+ (#2365)

The xentools iso has been renamed from xs-tools to guest-tools
starting from XenServer 7.0.

12 days agoCLOUDSTACK-9896: listDedicatedXXX should respect pagination (#2073)
Marc-Aurèle Brothier [Sun, 7 Jan 2018 10:13:27 +0000 (11:13 +0100)] 
CLOUDSTACK-9896: listDedicatedXXX should respect pagination (#2073)

Fixes listDedicatedxxx APIs to respect pagination options.

13 days agoCLOUDSTACK-9632: Upgrade bountycastle to v1.59 (#2386)
Rohit Yadav [Sat, 6 Jan 2018 18:32:22 +0000 (00:02 +0530)] 
CLOUDSTACK-9632: Upgrade bountycastle to v1.59 (#2386)

Upgrades bountycastle to v1.59.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
13 days agoCLOUDSTACK-10109: Enable dedication of public IPs to SSVM and CPVM (#2295)
Nicolas Vazquez [Sat, 6 Jan 2018 17:44:30 +0000 (14:44 -0300)] 
CLOUDSTACK-10109: Enable dedication of public IPs to SSVM and CPVM (#2295)

This feature allow admins to dedicate a range of public IP addresses to the SSVM and CPVM, such that they can be subject to specific external firewall rules. The option to dedicate a public IP range to the System VMs (SSVM & CPVM) is added to the createVlanIpRange API method and the UI.

Solution:
Global setting 'system.vm.public.ip.reservation.mode.strictness' is added to determine if the use of the system VM reservation is strict (when true) or preferred (false), false by default.
When a range has been dedicated to System VMs, CloudStack should apply IPs from that range to
the public interfaces of the CPVM and the SSVM depending on global setting's value:

If the global setting is set to false: then CloudStack will use any unused and unreserved public IP
addresses for system VMs only when the pool of reserved IPs has been exhausted
If the global setting is set to true: then CloudStack will fail to deploy the system VM when the pool
of reserved IPs has been exhausted, citing the lack of available IPs.
UI Changes
Under Infrastructure -> Zone -> Physical Network -> Public -> IP Ranges, button 'Account' label is refactored to 'Set reservation'.

When that button is clicked, dialog displayed is also refactored, including a new checkbox 'System VMs' which indicates if range should be dedicated for CPVM and SSVM, and a note indicating its usage.

When clicking on button for any created range, UI dialog displayed indicates whether IP range is dedicated for system vms or not.

13 days agoCLOUDSTACK-10117: Account ldap binding (#2381)
dahn [Sat, 6 Jan 2018 17:28:28 +0000 (18:28 +0100)] 
CLOUDSTACK-10117: Account ldap binding (#2381)

Map an ldap group to an account. Ldap related settings on a domain level.

13 days ago[CLOUDSTACK-9025][CLOUDSTACK-10128] solve problems of templates created based on...
Rafael Weingärtner [Sat, 6 Jan 2018 08:55:29 +0000 (06:55 -0200)] 
[CLOUDSTACK-9025][CLOUDSTACK-10128] solve problems of templates created based on snapshots (#2315)

The first PR(#1176) intended to solve #CLOUDSTACK-9025 was only tackling the problem for CloudStack deployments that use single hypervisor types (restricted to XenServer). Additionally, the lack of information regarding that solution (poor documentation, test cases and description in PRs and Jira ticket) led the code to be removed in #1124 after a long discussion and analysis in #1056. That piece of code seemed logicless (and it was!).  It would receive a hostId and then change that hostId for other hostId of the zone without doing any check; it was not even checking the hypervisor and storage in which the host was plugged into.

The problem reported in #CLOUDSTACK-9025 is caused by partial snapshots that are taken in XenServer. This means, we do not take a complete snapshot, but a partial one that contains only the modified data. This requires rebuilding the VHD hierarchy when creating a template out of the snapshot. The point is that the first hostId received is not a hostId, but a system VM ID(SSVM). That is why the code in #1176 fixed the problem for some deployment scenarios, but would cause problems for scenarios where we have multiple hypervisors in the same zone. We need to execute the creation of the VHD that represents the template in the hypervisor, so the VHD chain can be built using the parent links.

This commit changes the method com.cloud.hypervisor.XenServerGuru.getCommandHostDelegation(long, Command). From now on we replace the hostId that is intended to execute the “copy command” that will create the VHD of the template according to some conditions that were already in place. The idea is that starting with XenServer 6.2.0 hotFix ESP1004 we need to execute the command in the hypervisor host and not from the SSVM. Moreover, the method was improved making it readable and understandable; it was also created test cases assuring that from XenServer 6.2.0 hotFix ESP1004 and upward versions we change the hostId that will be used to execute the “copy command”.

Furthermore, we are not selecting a random host from a zone anymore. A new method was introduced in the HostDao called “findHostConnectedToSnapshotStoragePoolToExecuteCommand”, using this method we look for a host that is in the cluster that is using the storage pool where the volume from which the Snaphost is taken of. By doing this, we guarantee that the host that is connected to the primary storage where all of the snapshots parent VHDs are stored is used to create the template.

Consider using Disabled hosts when no Enabled hosts are found

This also closes #2317

2 weeks agoCLOUDSTACK-10096 Can't reset integration.api.port and usage.sanity.check.interval...
SudharmaJain [Fri, 5 Jan 2018 16:22:59 +0000 (21:52 +0530)] 
CLOUDSTACK-10096 Can't reset integration.api.port and usage.sanity.check.interval (#2274)

Fix for CLOUDSTACK-7931 enforces a valid integer value to be configured for integration.api.port and usage.sanity.check.interval. These global configs can't be reset back to null(default).

2 weeks agoCLOUDSTACK-10104: Optimize database transactions in ListDomain API to improve perform...
PranaliM [Fri, 5 Jan 2018 16:21:46 +0000 (21:51 +0530)] 
CLOUDSTACK-10104: Optimize database transactions in ListDomain API to improve performance (#2282)

While creating the response object for the 'listDomain' API, several database calls are triggered to fetch details like parent domain, project limit, IP limit, etc. These database calls are triggered for each record found in the main fetch query, which is causing the response to slow down.

Fix:
The database transactions are reduced to improve response of the Listdomain API

2 weeks agoCLOUDSTACK-10126: Separate Subnet for SSVM and CPVM (#2368)
Nicolas Vazquez [Fri, 5 Jan 2018 07:49:03 +0000 (04:49 -0300)] 
CLOUDSTACK-10126: Separate Subnet for SSVM and CPVM (#2368)

This extends work presented on #2048 on which the ability to extend the management range is provided.

Aim
This PR allows separating the management network subnet on which SSVM and CPVM are from the virtual routers management subnet.

Detailed use case
PCI compliance requires that network elements are defined as ‘in scope’ or ‘out of scope’, for compliance purposes. The SSVM and CPVM are both in scope as they allow public HTTP or HTTPS connections. The virtual routers have been defined as out of scope as they have been placed entirely in a firewalled network's segment. However, all of the system VM types share management network. As SSVM and CPVM are both in scope this would bring the virtual routers into scope as well, requiring individual audits of every virtual router. As this is not practical, the ‘management network’ which the SSVM and CPVM are on, and the management network which the virtual routers are on, must be separated by a firewall.

Description
By this feature it is possible to dedicate a created range for SSVM and CPVM (system vms) and provide a VLAN ID for its range.

A new boolean global configuration is added: system.vm.management.ip.reservation.mode.strictness. If enabled, the use of System VMs management IP reservation is strict, preferred if not. Default value is false (preferred).

Strict reservation: System VMs should try to get a private IP from a range marked for system vms. If not available, deployment fails
Preferred reservation: System VMS will try to get a private IP from a range marked for system vms. If not available, IP for range not marked for system vms is taken.

2 weeks agoCLOUDSTACK-10211: Fixed test_nuage_public_sharednetwork_userdata tests (#2385)
Raf Smeets [Fri, 5 Jan 2018 06:26:13 +0000 (07:26 +0100)] 
CLOUDSTACK-10211: Fixed test_nuage_public_sharednetwork_userdata tests (#2385)

2 weeks agoCLOUDSTACK-10065: Optimize SQL queries in listTemplate API to improve performance...
PranaliM [Fri, 5 Jan 2018 05:57:41 +0000 (11:27 +0530)] 
CLOUDSTACK-10065: Optimize SQL queries in listTemplate API to improve performance (#2260)

The db queries in listTemplateAPI could be optimized to get unique results from the database which could help in reducing the listTemplate API response time.

2 weeks agoCLOUDSTACK-10108: ConfigKey based approach for reading 'ping' configuaration (#2292)
mrunalinikankariya [Fri, 5 Jan 2018 05:53:42 +0000 (11:23 +0530)] 
CLOUDSTACK-10108: ConfigKey based approach for reading 'ping' configuaration (#2292)

In CLOUDSTACK-9886, we are reading ping.interval and ping.timeout using configdao which involves direct reading of DB. So, replaced it with ConfigKey based approach.

2 weeks ago CLOUDSTACK-9572: Snapshot on primary storage not cleaned up after Storage migration...
subhash yedugundla [Fri, 5 Jan 2018 05:49:56 +0000 (11:19 +0530)] 
 CLOUDSTACK-9572: Snapshot on primary storage not cleaned up after Storage migration (#1740)

Snapshot on primary storage not cleaned up after Storage migration. This happens in the following scenario:

Steps To Reproduce
Create an instance on the local storage on any host
Create a scheduled snapshot of the volume:
Wait until ACS created the snapshot. ACS is creating a snapshot on local storage and is transferring this snapshot to secondary storage. But the latest snapshot on local storage will stay there. This is as expected.
Migrate the instance to another XenServer host with ACS UI and Storage Live Migration
The Snapshot on the old host on local storage will not be cleaned up and is staying on local storage. So local storage will fill up with unneeded snapshots.

2 weeks agoCLOUDSTACK-9908: Primary Storage allocated capacity goes very high after VM snapshot...
jayakarteek [Fri, 5 Jan 2018 05:49:01 +0000 (11:19 +0530)] 
CLOUDSTACK-9908: Primary Storage allocated capacity goes very high after VM snapshot (#2104)

Added '-' chracter while reading Filenames so that filename match exactly with VM name.

2 weeks agoCLOUDSTACK-10210: cleanup testfile (#2384)
dahn [Thu, 4 Jan 2018 11:46:28 +0000 (12:46 +0100)] 
CLOUDSTACK-10210: cleanup testfile (#2384)

Removes a test file created as part of the unit test.

2 weeks agoCLOUDSTACK-10205: LinkDomainToLdap returns UUID instead of internal id (#2378)
dahn [Thu, 4 Jan 2018 07:56:21 +0000 (08:56 +0100)] 
CLOUDSTACK-10205: LinkDomainToLdap returns UUID instead of internal id (#2378)

The internal id is not usefull to the user. It is a bug to return it instead of a uuid.
In the process of fixing the above "name" was deprecated in favour of "ldap_domain".

2 weeks agoCLOUDSTACK-9599: isdynamicallyscalable field missing in updateTemplate Response ...
ernjvr [Thu, 4 Jan 2018 05:33:05 +0000 (07:33 +0200)] 
CLOUDSTACK-9599: isdynamicallyscalable field missing in updateTemplate Response (#2383)

Using cloudmonkey, when invoking the update template api call, it does not display the isdynamicallyscalable field as part of its template response.
fix done:
org.apache.cloudstack.api.response.TemplateResponse isdynamicallyscalable field is now populated in the server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java.newUpdateResponse method.
Unit test:
the Unit test server/test/com/cloud/api/query/dao/TemplateJoinDaoImplTest.java testNewUpdateResponse() verifies that the TemplateResponse is populated correctly.
Marvin test:
the Marvin nosetest integration/smoke/test_templates.py test_02_edit_template(self) confirms that the template_response.isdynamicallyscalable field gets populated with the correct user data.
Test scenario:
Using cloudmonkey, when invoking the 'update template' API call, it should now display the isdynamicallyscalable field as part of its template response.

2 weeks agoCLOUDSTACK-9607: Preventing template deletion when template is in use (#1773)
Mowgli [Thu, 4 Jan 2018 05:29:39 +0000 (10:59 +0530)] 
CLOUDSTACK-9607: Preventing template deletion when template is in use (#1773)

Consider this scenario:
1. User launches a VM from Template and keep it running
2. Admin logins and deleted that template [CloudPlatform does not check existing / running VM etc. while the deletion is done]
3. User resets the VM
4. CloudPlatform fails to star the VM as it cannot find the corresponding template.

It throws error as
java.lang.RuntimeException: Job failed due to exception Resource [Host:11] is unreachable: Host 11: Unable to start instance due to can't find ready template: 209 for data center 1
at com.cloud.vm.VmWorkJobDispatcher.runJob(VmWorkJobDispatcher.java:113)
at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:495)

Client is requesting better handing of this scenario. We need to check existing / running VM's when the template is deleted and warn admin about the possible issue that may occur.

REPRO STEPS
==================
1. Launches a VM from Template and keep it running
2. Now delete that template
3. Reset the VM
4. CloudPlatform fails to star the VM as it cannot find the corresponding template.

EXPECTED BEHAVIOR
==================
Cloud platform should throw some warning message while the template is deleted if that template is being used by existing / running VM's

ACTUAL BEHAVIOR
==================
Cloud platform does not throw as waring etc.

2 weeks agoCLOUDSTACK-7958: Add configuration for limit to CIDRs for Admin API calls (#2046)
Wido den Hollander [Thu, 4 Jan 2018 05:26:30 +0000 (06:26 +0100)] 
CLOUDSTACK-7958: Add configuration for limit to CIDRs for Admin API calls (#2046)

* Cleanup and Improve NetUtils

This class had many unused methods, inconsistent names and redundant code.

This commit cleans up code, renames a few methods and constants.

The global/account setting 'api.allowed.source.cidr.list' is set
to 0.0.0.0/0,::/0 by default preserve the current behavior and thus
allow API calls for accounts from all IPv4 and IPv6 subnets.

Users can set it to a comma-separated list of IPv4/IPv6 subnets to
restrict API calls for Admin accounts to certain parts of their network(s).

This is to improve Security. Should an attacker steal the Access/Secret key
of an account he/she still needs to be in a subnet from where accounts are
allowed to perform API calls.

This is a good security measure for APIs which are connected to the public internet.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
2 weeks agoCLOUDSTACK-9932: Snapshot is getting deleted while volume creation from the snapshot...
pavanaravapalli [Thu, 4 Jan 2018 05:24:23 +0000 (10:54 +0530)] 
CLOUDSTACK-9932: Snapshot is getting deleted while volume creation from the snapshot is in progress (#2149)

Added validation to check if any volume(s) are in creating state , before performing delete snapshot.

2 weeks agoCLOUDSTACK-9971: Bugfix/listaccounts parameter consistency (#2156)
Daniel Carbone [Wed, 3 Jan 2018 11:29:54 +0000 (05:29 -0600)] 
CLOUDSTACK-9971: Bugfix/listaccounts parameter consistency (#2156)

Ran into an issue today where we passed both the "id" and "domainid" parameters into "listAccounts" and received a response despite the account id passed not belonging to the domainid passed.

Allow usage of "domainid" AND "id" in "listAccounts"
- Adding "AccountDoa::findActiveAccountById"
- Adding "AccountDaoImpl::findActiveAccountById"
- Removing seemingly pointless "listForDomain" parameter
- Updating "typeNEQ" value from "5" to "Account.ACCOUNT_TYPE_PROJECT"
  (which is "5")
- Only attempt to load domain for "path" query parameter once

"searchForAccountsInternal" input validation logic pseudo-code:
  - If "domainid" set, check immediately
  - If "id" not set:
    - and user is admin and "listall" is true
      - if "domainid" not set, use caller domain id
      - force "isrecursive" true
    - else use caller account id
  - Else if "domainid" and "name" set
    - verify existence of account and that user has access
  - Else:
    - if "domainid" not set, locate account by "id"
    - else, locate account by "id" and "domainid"
    - verify account found and caller has access rights

2 weeks agoCLOUDSTACK-10024: Network Migration (#2374)
Frank Maximus [Wed, 3 Jan 2018 08:20:19 +0000 (09:20 +0100)] 
CLOUDSTACK-10024: Network Migration (#2374)

Handle PR comments

Co-Authored-By: Raf Smeets <raf.smeets@nuagenetworks.net>
Co-Authored-By: Kris Sterckx <kris.sterckx@nuagenetworks.net>
2 weeks agoCLOUDSTACK-10202: createSnapshotPolicy API create multiple entries in DB for same...
niteshsarda [Tue, 2 Jan 2018 03:23:46 +0000 (08:53 +0530)] 
CLOUDSTACK-10202: createSnapshotPolicy API create multiple entries in DB for same volume. (#2373)

createSnapshotPolicy API create multiple entries in DB for same parameters, if multiple threads are executed in parallel.

STEPS TO REPRODUCE :

Created a new machine having root and data disk.
Make sure that no existing snapshot policy is present for the volume.
Execute multiple threads in parallel for createSnapshotPolicy API having all required parameters exactly same.
Verify table snapshot_policy in DB, will get multiple entries for same policy.
Once again execute same multiple threads, by changing any API parameter, will see that existing entries are getting modified in DB and no new entries are added.

2 weeks agoCLOUDSTACK-10163: Component tests sanity (#2344)
Boris Stoyanov - a.k.a Bobby [Mon, 1 Jan 2018 11:14:18 +0000 (13:14 +0200)] 
CLOUDSTACK-10163: Component tests sanity (#2344)

Fixing some component tests and adding them in travis.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2 weeks agoCLOUDSTACK-10121 moveUser (#2301)
dahn [Sat, 30 Dec 2017 11:40:14 +0000 (11:40 +0000)] 
CLOUDSTACK-10121 moveUser (#2301)

* internal service call for moveUser
* expose moveUser as API
* move uuid to external entity

3 weeks agoCLOUDSTACK-9602: Improve resource limits comprehension in listResources (#1554)
Marc-Aurèle Brothier [Thu, 28 Dec 2017 10:16:24 +0000 (11:16 +0100)] 
CLOUDSTACK-9602: Improve resource limits comprehension in listResources (#1554)

Add resource type name in request and response for listResources API call.
This adds in the response a new attribute typename with the String value for the corresponding resource enum.

    {
      "capacitytotal": 0,
      "capacityused": 0,
      "percentused": "0",
      "type": 19,
      "typename": "gpu",
      "zoneid": "381d0a95-ed4a-4ad9-b41c-b97073c1a433",
      "zonename": "ch-dk-2"
    }

Signed-off-by: Marc-Aurèle Brothier <m@brothier.org>
3 weeks agoCLOUDSTACK-9593: userdata: enforce data is a multiple of 4 characters (#1760)
Marc-Aurèle Brothier [Thu, 28 Dec 2017 09:57:33 +0000 (10:57 +0100)] 
CLOUDSTACK-9593: userdata: enforce data is a multiple of 4 characters (#1760)

Python base64 requires that the string is a multiple of 4 characters but
the Apache codec does not. RFC states is not mandatory so the data should
not fail the VR script (vmdata.py).

Signed-off-by: Marc-Aurèle Brothier <m@brothier.org>
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-9867: VM snapshot on primary storage usage metrics (#2035)
Abhinandan Prateek [Thu, 28 Dec 2017 09:27:10 +0000 (14:57 +0530)] 
CLOUDSTACK-9867: VM snapshot on primary storage usage metrics (#2035)

VM snapshot on primary storage usage metrics.

3 weeks agoCLOUDSTACK-10189: Adding nuage VSD managed network support to CloudStack (#2360)
Sigert Goeminne [Thu, 28 Dec 2017 09:25:15 +0000 (10:25 +0100)] 
CLOUDSTACK-10189: Adding nuage VSD managed network support to CloudStack (#2360)

Exposing externalId en domainId field in the UI to CS users.

Co-Authored-By: Sigert Goeminne sigert.goeminne@nuagenetworks.net
Co-Authored-By: Raf Smeets raf.smeets@nuagenetworks.net
3 weeks agoCLOUDSTACK-10175: Prevent VPC list leakage if project=-1 specified on API (#2352)
Khosrow Moossavi [Thu, 28 Dec 2017 09:17:13 +0000 (04:17 -0500)] 
CLOUDSTACK-10175: Prevent VPC list leakage if project=-1 specified on API (#2352)

This PR fixes the issue in which there's a leak when doing API call for listing VPC with domain account and projectId=-1.
Note for reviewers: The code formatting changed so many lines in the commit but the actual change is in line 2467-2471.

3 weeks agoCLOUDSTACK-10208: Fix snmptrap alert bug (#2045)
WingKai Ho [Wed, 27 Dec 2017 07:57:16 +0000 (01:57 -0600)] 
CLOUDSTACK-10208: Fix snmptrap alert bug (#2045)

Fix snmptrap alerts info omit to send the field of SnmpConstants.sysUpTime
Fix SnmpConstants.sysUpTime expression
Remove unused import java.util.Date

3 weeks agoCLOUDSTACK-9772: Perform a HEAD request to check file size from a URL (#1934)
Marc-Aurèle Brothier [Wed, 27 Dec 2017 07:55:12 +0000 (08:55 +0100)] 
CLOUDSTACK-9772: Perform a HEAD request to check file size from a URL (#1934)

For template urls, perform a HEAD request to check file size from a URL.

Signed-off-by: Marc-Aurèle Brothier <m@brothier.org>
3 weeks agoCloudstack 10064: Secondary storage Usage for uploadedVolume is not collected (#2258)
PranaliM [Wed, 27 Dec 2017 07:51:54 +0000 (13:21 +0530)] 
Cloudstack 10064: Secondary storage Usage for uploadedVolume is not collected (#2258)

Description: For Volumes on Secondary Storage, (Uploaded Volume) the usage is not accounted for.

The fix is implemented as follows:

A new Usage Type is added for the Volume on secondary storage : VOLUME_SECONDARY (id=26)
A new storage type, 'Volume' is defined.
When a volume is uploaded and the usage server executes next,entry will be added to the usage_storage helper table for all the volumes uploaded since the Usage server executed last.
When the uploaded volume is attached, the 'deleted' column in the usage_storage table is set to the time-stamp when the volume was deleted
2 entries will be added to the cloud_usage table with usage_type=26 and usage_type=6 (Volume usage on primary). One for the duration the volume was on primary and other for the duration it was on secondary.
Entry is added to the helper table volume_usage for accounting for the primary storage.Next execution of the usage server and on-wards, usage entry for usage_type=6 only will be added.

3 weeks agoCLOUDSTACK-10166: Get accountId and domainId from VPC when tagging a NetworkACL as...
Khosrow Moossavi [Wed, 27 Dec 2017 07:46:04 +0000 (02:46 -0500)] 
CLOUDSTACK-10166: Get accountId and domainId from VPC when tagging a NetworkACL as a user (#2347)

This fixes the issue that a non-root user cannot tag a network ACL item
and after the fix a non-root user still cannot tag a globally defined
ACL item and only the ACLs they have access to.

3 weeks agoCLOUDSTACK-9456: Upgrade spring and misc dependencies (#2375)
Rohit Yadav [Tue, 26 Dec 2017 06:23:48 +0000 (11:53 +0530)] 
CLOUDSTACK-9456: Upgrade spring and misc dependencies (#2375)

Upgrades spring, jetty and misc dependencies

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoMerge pull request #2211 from apache/debian9-systemvmtemplate
Rohit Yadav [Sun, 24 Dec 2017 06:50:54 +0000 (12:20 +0530)] 
Merge pull request #2211 from apache/debian9-systemvmtemplate

CLOUDSTACK-10013: Migrate systemvmtemplate to Debian9

Signed-off-by: Rohit Yadav <rohit@apache.org>
3 weeks agoCLOUDSTACK-10013: Fixes based on code review and test failures 2211/head
Rohit Yadav [Wed, 20 Dec 2017 14:38:17 +0000 (20:08 +0530)] 
CLOUDSTACK-10013: Fixes based on code review and test failures

This includes test related fixes and code review fixes based on
reviews from @rafaelweingartner, @marcaurele, @wido and @DaanHoogland.

This also includes VMware disk-resize limitation bug fix based on comments
from @sateesh-chodapuneedi and @priyankparihar.

This also includes the final changes to systemvmtemplate and fixes to
code based on issues found via test failures.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-9595: Fix another regression introduced in #1762
Rohit Yadav [Fri, 22 Dec 2017 13:29:06 +0000 (18:59 +0530)] 
CLOUDSTACK-9595: Fix another regression introduced in #1762

In a VMware 55u3 environment it was found that CPVM and SSVM would
get the same public IP. After another investigative review of
fetchNewPublicIp method, it was found that it would always pick up the
first IP from the sql query list/result.

The cause was found to be that with the new changes no table/row locks
are done and first item is used without looping through the list of
available free IPs. The previously implementation method that put
IP address in allocating state did not check that it was a free IP.

In this refactoring/fix, the first free IP is first marked as allocating
and if assign is requested that is changed into Allocated state.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10001: Fix incorrect total host memory in responses
Rohit Yadav [Tue, 19 Dec 2017 06:15:24 +0000 (11:45 +0530)] 
CLOUDSTACK-10001: Fix incorrect total host memory in responses

This fixes incorrect total host memory in listHosts and related host
responses, regression introduced in #2120.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Add systemvm 4.11 migration in 4.10->4.11 upgrade path
Rohit Yadav [Tue, 19 Dec 2017 05:36:59 +0000 (11:06 +0530)] 
CLOUDSTACK-10013: Add systemvm 4.11 migration in 4.10->4.11 upgrade path

This moves the systevmtemplate migration logic from previous upgrade path
to 4.10.0.0->4.11.0.0 upgrade path.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10194: Use packer for building systemvmtemplates
Rohit Yadav [Sun, 17 Dec 2017 07:25:26 +0000 (12:55 +0530)] 
CLOUDSTACK-10194: Use packer for building systemvmtemplates

- This migrates the current systemvmtemplate build system from
  veewee/virtualbox to packer and qemu based.
- This also introduces and updates a CentOS7 built-in template.
- Remove old appliance build scripts and files.
- Adds iftop package (CLOUDSTACK-9785)

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10193: Use other64Linux for systemvms on VMware
Rohit Yadav [Sun, 17 Dec 2017 06:56:35 +0000 (12:26 +0530)] 
CLOUDSTACK-10193: Use other64Linux for systemvms on VMware

In default/fresh installations, the guest os type for systemvms with id=15
or Debian 5 (32-bit) can cause memory allocation issues to guest. Using
Other Linux 64-bit as guest OS systemvms get all the allocated RAM. This
avoids OOM related kernel panics for certain VRs such as rVRs, lbvm etc.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Fix VMware related issues and fix misc tests
Rohit Yadav [Tue, 12 Dec 2017 20:12:05 +0000 (01:42 +0530)] 
CLOUDSTACK-10013: Fix VMware related issues and fix misc tests

This fixes test failures around VMware with the new systemvmtemplate.
In addition:

- Does not skip rVR related test cases for VMware
- Removes rc.local
- Processes unprocessed cmd_line.json
- Fixed NPEs around VMware tests/code
- On VMware, use udevadm to reconfigure nic/mac address than rebooting
- Fix proper acpi shutdown script for faster systemvm shutdowns
- Give at least 256MB of swap for VRs to avoid OOM on VMware
- Fixes smoke tests for environment related failures

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-9953: Resize root disk for VMware when full clone is enabled
Rohit Yadav [Sat, 16 Dec 2017 08:49:28 +0000 (14:19 +0530)] 
CLOUDSTACK-9953: Resize root disk for VMware when full clone is enabled

Resize for VMware root disk should only be performed during VM start
when vmware.create.full.clone is true i.e. the disk chain length is one.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-9501: route is not available by default on CentOS7 (#1637)
lmrv [Wed, 13 Dec 2017 19:24:05 +0000 (00:54 +0530)] 
CLOUDSTACK-9501: route is not available by default on CentOS7 (#1637)

This adds the `net-tools` dependency on CentOS cloudstack-agent rpms.
This will provide ifconfig, route and other tools that may be used
by CloudStack scripts and utilities.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10187: Don't delete vifs for VPCs with source nat
Rohit Yadav [Tue, 12 Dec 2017 19:58:18 +0000 (01:28 +0530)] 
CLOUDSTACK-10187: Don't delete vifs for VPCs with source nat

On XenServer, both redundant router's vifs were getting deleted when any
PF rule is removed from any of the acquired public IPs. This fix
ensures that lastIp is set to `false` when processed by hypervisor
resources to avoid removing of VIFs when VPCs have any source nat IP.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10193: Fix smoke tests failures with new systemvmtemplate
Rohit Yadav [Sat, 9 Dec 2017 11:07:31 +0000 (16:37 +0530)] 
CLOUDSTACK-10193: Fix smoke tests failures with new systemvmtemplate

- Several systemvmtemplate optimizations
- Uses new macchinina template for running smoke tests
- Switch to latest Debian 9.3.0 release for systemvmtemplate
- Introduce a new `get_test_template` that uses tiny test template
  such as macchinina as defined test_data.py
- rVR related fixes and improvements

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: SystemVM codebase refactorings and improvements
Rohit Yadav [Sun, 3 Dec 2017 17:02:13 +0000 (22:32 +0530)] 
CLOUDSTACK-10013: SystemVM codebase refactorings and improvements

- Refactors and simplifies systemvm codebase file structures keeping
  the same resultant systemvm.iso packaging
- Password server systemd script and new postinit script that runs
  before sshd starts
- Fixes to keepalived and conntrackd config to make rVRs work again
- New /etc/issue featuring ascii based cloudmonkey logo/message and
  systemvmtemplate version
- SystemVM python codebase linted and tested. Added pylint/pep to
  Travis.
- iptables re-application fixes for non-VR systemvms.
- SystemVM template build fixes.
- Default secondary storage vm service offering boosted to have 2vCPUs
  and RAM equal to console proxy.
- Fixes to several marvin based smoke tests, especially rVR related
  tests. rVR tests to consider 3*advert_int+skew timeout before status
  is checked.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Make the generated VR/json files unique (ports #1470)
Remi Bergsma [Sat, 2 Dec 2017 17:49:14 +0000 (23:19 +0530)] 
CLOUDSTACK-10013: Make the generated VR/json files unique (ports #1470)

This ports PR #1470 by @remibergsma.

Make the generated json files unique to prevent concurrency issues:
The json files now have UUIDs to prevent them from getting overwritten
before they've been executed. Prevents config to be pushed to the wrong
router.

2016-02-25 18:32:23,797 DEBUG [c.c.a.t.Request] (AgentManager-Handler-1:null) (logid:) Seq 2-4684025087442026584: Processing:  { Ans: , MgmtId: 90520732674657, via: 2, Ver: v1, Flags: 10, [{"com.cloud.agent.api.routing.GroupA
nswer":{"results":["null - success: null","null - success: [INFO] update_config.py :: Processing incoming file => vm_dhcp_entry.json.4ea45061-2efb-4467-8eaa-db3d77fb0a7b\n[INFO] Processing JSON file vm_dhcp_entry.json.4ea4506
1-2efb-4467-8eaa-db3d77fb0a7b\n"],"result":true,"wait":0}}] }

On the router:
2016-02-25 18:32:23,416  merge.py __moveFile:298 Processed file written to /var/cache/cloud/processed/vm_dhcp_entry.json.4ea45061-2efb-4467-8eaa-db3d77fb0a7b.gz

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10010: Port marvin test from #2190 by @swill
Will Stevens [Sat, 2 Dec 2017 15:41:40 +0000 (21:11 +0530)] 
CLOUDSTACK-10010: Port marvin test from #2190 by @swill

This ports the S2S config test by @swill from #2190 with additional
changes to make robust and environment agnostic.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Fix ipsec VPN configuration
Rohit Yadav [Fri, 1 Dec 2017 15:28:18 +0000 (20:58 +0530)] 
CLOUDSTACK-10013: Fix ipsec VPN configuration

- Fixes strongswan/ipsec, l2tpd and pppd configs
- Uses auto=route in ipsec configs
- Fixes road-warrior setup
- Fixes site-to-site VPN with automatic connection configuration
- Fixes vpc_vpn tests

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: SystemVM.iso refactoring and cleanups
Rohit Yadav [Sun, 26 Nov 2017 08:02:33 +0000 (13:32 +0530)] 
CLOUDSTACK-10013: SystemVM.iso refactoring and cleanups

- Removes old/dead files
- Refactors file path/location, backward compatible to filepaths in
  systemvm.isoa
- Fixes failures around apache2

3 weeks agoCLOUDSTACK-10129: UX improvements and event timeline
Rohit Yadav [Tue, 28 Nov 2017 13:55:09 +0000 (19:25 +0530)] 
CLOUDSTACK-10129: UX improvements and event timeline

- Fixes timezone issue where dates show up as nvalid in UI
- Introduces new event timeline listing/filtering of events
- Several UI improvements to add columns in list views
- Bulk operations support in instance list view to shutdown and destroy
  multiple-selected VMs (limitation: after operation, redundant entries
  may show up in the list view, refreshing VM list view fixes that)
- Align table thead/tbody to avoid splitting of tables

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-9348: Improve Nio SSH handshake buffers
Rohit Yadav [Thu, 30 Nov 2017 11:21:48 +0000 (16:51 +0530)] 
CLOUDSTACK-9348: Improve Nio SSH handshake buffers

Use a holder class to pass buffers, fixes potential leak.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-7853: Fix ping timeout edge case and refactor code
Rohit Yadav [Sat, 2 Dec 2017 10:20:34 +0000 (15:50 +0530)] 
CLOUDSTACK-7853: Fix ping timeout edge case and refactor code

Refresh InaccurateClock every 10seconds, refactor code to get ping timeout
and ping interval.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Debian9 SystemVM appliance improvements
Rohit Yadav [Fri, 17 Nov 2017 09:23:57 +0000 (14:53 +0530)] 
CLOUDSTACK-10013: Debian9 SystemVM appliance improvements

- Refactor cloud-early-config and make appliance specific scripts
- Make patching work without requiring restart of appliance and remove
  postinit script
- Migrate to systemd, speedup booting/loading
- Takes about 5-15s to boot on KVM, and 10-30seconds for VMware and XenServer
- Appliance boots and works on KVM, VMware, XenServer and HyperV
- Update Debian9 ISO url with sha512 checksum
- Speedup console proxy service launch
- Enable additional kernel modules
- Remove unknown ssh key
- Update vhd-util URL as previous URL was down
- Enable sshd by default
- Use hostnamectl to add hostname
- Disable services by default
- Use existing log4j xml, patching not necessary by cloud-early-config
- Several minor fixes and file refactorings, removed dead code/files
- Removes inserv
- Fix dnsmasq config syntax
- Fix haproxy config syntax
- Fix smoke tests and improve performance
- Fix apache pid file path in cloud.monitoring per the new template

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoCLOUDSTACK-10013: Make Debian9 systemvmtemplates work with systemd
Wido den Hollander [Thu, 10 Aug 2017 11:51:11 +0000 (13:51 +0200)] 
CLOUDSTACK-10013: Make Debian9 systemvmtemplates work with systemd

- Load the nf_conntrack_ipv6 module for IPv6 connection tracking on SSVM
- Move systemd services to /etc and enable services after they have been
  installed
- Disable most services by default and enable in cloud-early-config
- Start services after enabling them using systemd
- In addition remove /etc/init.d/cloud as this is no longer needed and
  done by systemd
- Accept DOS/MBR as file format for ISO images as well

Under Debian 7 the 'file' command would return:

  debian-9.1.0-amd64-netinst.iso: ISO 9660 CD-ROM filesystem data UDF filesystem data

Under Debian 9 however it will return

  debian-9.1.0-amd64-netinst.iso: DOS/MBR boot sector

This would make the HTTPTemplateDownloader in the Secondary Storage VM refuse the ISO as
a valid template because it's not a correct format.

Changes this behavior so that it accepts both.
This allows us to use Debian 9 as a System VM template.

Not sure though if enabling them is enough for systemd to still start them
on first boot

Signed-off-by: Wido den Hollander <wido@widodh.nl>
3 weeks agoCLOUDSTACK-10013: Migrate systemvmtemplate to Debian9
Rohit Yadav [Sun, 23 Jul 2017 16:01:35 +0000 (18:01 +0200)] 
CLOUDSTACK-10013: Migrate systemvmtemplate to Debian9

  SystemVM changes to work on Debian 9
- Migrate away from chkconfig to systemctl
- Remove xenstore-utils override deb pkg
- Fix runlevel in sysv scripts for systemd

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
3 weeks agoMerge branch '4.10'
Rohit Yadav [Sat, 23 Dec 2017 03:50:24 +0000 (09:20 +0530)] 
Merge branch '4.10'

3 weeks agoMerge branch '4.9' into 4.10
Rohit Yadav [Sat, 23 Dec 2017 03:49:01 +0000 (09:19 +0530)] 
Merge branch '4.9' into 4.10

3 weeks agoCLOUDSTACK-10127: For OVS to work use dev/nic id based on mac address for KVM (#2304)
Frank Maximus [Sat, 23 Dec 2017 03:47:45 +0000 (04:47 +0100)] 
CLOUDSTACK-10127: For OVS to work use dev/nic id based on mac address for KVM (#2304)

This uses mac address based referencing for nic/dev id for KVM. This fixes openvswitch (ovs) regression.

4 weeks agoCLOUDSTACK-9542: make listNics and ListUserVms return uniform NIC data (#2208)
dahn [Thu, 21 Dec 2017 12:21:45 +0000 (12:21 +0000)] 
CLOUDSTACK-9542: make listNics and ListUserVms return uniform NIC data (#2208)

Makes listNics and ListUserVms return uniform NICs.

4 weeks agoCLOUDSTACK-10173: Pick network rate from guest offering for VRs (#2351)
Rohit Yadav [Thu, 21 Dec 2017 12:20:40 +0000 (17:50 +0530)] 
CLOUDSTACK-10173: Pick network rate from guest offering for VRs (#2351)

Per the following doc, VR's guest/public nic should pick up network
rate from its network offering:
http://docs.cloudstack.apache.org/projects/cloudstack-administration/en/latest/service_offerings.html#network-throttling

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
4 weeks agoCLOUDSTACK-10024: Network migration support
Sigert Goeminne [Wed, 26 Apr 2017 13:32:31 +0000 (15:32 +0200)] 
CLOUDSTACK-10024: Network migration support

Co-Authored-By: Frank Maximus frank.maximus@nuagenetworks.net
Co-Authored-By: Raf Smeets raf.smeets@nuagenetworks.net
New API’s:

* migrateNetwork
* migrateVpc

4 weeks agoCLOUDSTACK-10200: Fix ACL_INBOUND/OUTBOUND rules for PrivateGateway (#2367)
Igor Voloshanenko [Thu, 21 Dec 2017 09:25:48 +0000 (11:25 +0200)] 
CLOUDSTACK-10200: Fix ACL_INBOUND/OUTBOUND rules for PrivateGateway (#2367)

We found bug in ACL rules for PrivateGateway for VPC

At a glance - rules not applied - switching Allow All or Deny All (default ACL) - showed as completed - but rules missed.
Result - traffic via PrivateGateway blocked by next DROP rule in next chains

How to reproduce:

Enable PrivateGateway for Cloudstack
Create VPC
Provision new PrivateGateway inside VPC with some VLAN
Change ACL (optional step to show that problem not in initial configuration but in config itself)
Expected:
ACL rules applied (inserted) into correspondig ACL_INBOUND/OUTBOUND chanins for PrivateGateway interface (ethX) based on ACL which user choose

Current:
No rules inserted. ACL_INBOUND/OUTBOUND_ethX - empty. Traffic blocked by next DROP rule in FORWARD chain

Affect - all our corporate customers blocked with access to their own nets via PG and vice-versa.

Root cause:
Issue happened because of CsNetFilter.py logic for inserting rules for ACL_INBOUND/OUTBOUND chains.

We choose rule numebr to isnert right before last DROP rule - but forget about fact - that if chain empty - we also return 0 as insert position. Which not true for iptables - numeration started from 0.

So we need very small patch to handle this special case - if number of rules inside chain equal to zero - return 1, else - return count of rules inside chain.

It's found only one - just because be default for PrivateGateway - we didn't insert any "service rules" (if SourceNat for PrivateGteway not ticked) - and we have by default empty ACL_INBOUND/OUTBOUND chains. Because same insert happened for all VPC networks (but when we call this insert - we already have at least 1 rule inside chains - and we successfully can process)

4 weeks agoCLOUDSTACK-9595: Fix regression introduced in #1762 (#2370)
Rohit Yadav [Wed, 20 Dec 2017 19:01:51 +0000 (00:31 +0530)] 
CLOUDSTACK-9595: Fix regression introduced in #1762 (#2370)

The `assignDedicateIpAddress` previously had marked the newly fetched
IP as allocated but now it does not do that. This fails for VPCs
where SNATs IP are retained as allocating and not allocated after
creation.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
4 weeks agoCLOUDSTACK-10168: VR duplicate entries in /etc/hosts when reusing VM name (#2366)
Bitworks Software, Ltd [Wed, 20 Dec 2017 17:49:12 +0000 (00:49 +0700)] 
CLOUDSTACK-10168: VR duplicate entries in /etc/hosts when reusing VM name (#2366)

Bug is fixed. Fixed typo 'adress' to 'address' everywhere which leads to correct generation for agent communication json dhcp command.

4 weeks agoREADME: Happy Holidays, may the cloud be with you in 2018! (#2371)
Rohit Yadav [Wed, 20 Dec 2017 15:38:53 +0000 (21:08 +0530)] 
README: Happy Holidays, may the cloud be with you in 2018! (#2371)

4 weeks agoCLOUDSTACK-9875: Unable to re-apply Explicit dedication to VM (#2042)
harikrishna-patnala [Wed, 20 Dec 2017 11:42:46 +0000 (17:12 +0530)] 
CLOUDSTACK-9875: Unable to re-apply Explicit dedication to VM (#2042)

Problem:
When a VM is deployed with in an Affinity group which has the cluster dedicated to a subdomain (zone is dedicated to parent domain) it is getting successful. We can also stop the vm and remove the affinity group, but if you want to add back the affinity it is failing.

Root cause:
During VM deployment there is clear check on affinity type (account/domain). Here since the acl_type is "domain" it does not expect to be same owner for entities.
But during update of affinity to VM there is no specific check for acl_type "domain".

Solution:
Fix is to make the access check similar to VM deployment where it does not expect to be same owner for entities if the acl_type is "domain".

4 weeks agoCLOUDSTACK-10102: New network type L2 (#2281)
Nicolas Vazquez [Wed, 20 Dec 2017 11:37:39 +0000 (08:37 -0300)] 
CLOUDSTACK-10102: New network type L2 (#2281)

This feature allows CloudStack administrators to create layer 2 networks on CloudStack. As these networks are purely layer 2, they don't require IP addresses or Virtual Router, only VLAN is necessary (provided by administrator or assigned by CloudStack). Also, network services should be handled externally, e.g. DNS, DHCP, as they are not provided by L2 networks.
As a consequence, a new Guest Network type is created within CloudStack: L2

Description:
Network offerings and networks support new guest type: L2.
L2 Network offering creation allows administrator to select Specify VLAN or let CloudStack assign it dynamically.
L2 Network creation allows administrator to specify VLAN tag (if network offerings allows it) or simply create network.
VM deployments on L2 networks:
VMs should not IP addresses or any network service
No Virtual Router deployed on network
If Specify VLAN = true for network offering, network gets implemented using a dynamically assigned VLAN
UI changes

A new button is added on Networks tab, available for admins, to allow L2 networks creation

4 weeks agoCLOUDSTACK-9880: Expansion of Management IP Range. (#2048)
Nitin Kumar Maharana [Wed, 20 Dec 2017 08:36:53 +0000 (14:06 +0530)] 
CLOUDSTACK-9880: Expansion of Management IP Range. (#2048)

At present, The management IP range can only be expanded under the same subnet. According to existing range, either the last IP can be forward extended or the first IP can be backward extended. But we cannot add an entirely different range from the same subnet. So the expansion of range is subnet bound, which is fixed. But when the range gets exhausted and a user wants to deploy more system VMs, then the operation would fail. The purpose of this feature is to expand the range of management network IPs within the existing subnet. It can also delete and list the IP ranges.

Please refer the FS here: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Expansion+of+Management+IP+Range

4 weeks agoCLOUDSTACK-10195: CloudStack MySQL HA problem - No database selected (#2364)
Rafael Weingärtner [Tue, 19 Dec 2017 12:25:13 +0000 (10:25 -0200)] 
CLOUDSTACK-10195: CloudStack MySQL HA problem - No database selected (#2364)

When using CloudStack with database HA configuration user receives warnings constantly saying “No database selected”.

This problem happens at com.cloud.cluster.ClusterManagerImpl.getHeartbeatTask().new ManagedContextRunnable(){...}.runInContext(), line 550. The scheme of the database is not properly set in the transaction when database HA options are enabled.

4 weeks agoCLOUDSTACK-10190: Duplicate public VLAN for two different admin accounts (#2361)
niteshsarda [Tue, 19 Dec 2017 09:09:34 +0000 (14:39 +0530)] 
CLOUDSTACK-10190: Duplicate public VLAN for two different admin accounts (#2361)

ISSUE :
Duplicate public VLAN for two different admin accounts.

STEPS TO REPRODUCE :

Start multiple threads for executing createVlanIpRange API.
Make sure multiple threads run in parallel.
Verify vlan table in DB, duplicate entry for same VLAN and IP address range will be encountered, just id and uuid will be different, rest all fields will have similar value.
Following entry will be observed in vlan table :
`mysql> select * from vlan where vlan_id like 'vlan://77' and removed is null;
+----+--------------------------------------+-----------+--------------+-----------------+---------------------------+----------------+----------------+------------+---------------------+-------------+----------+-----------+---------+---------------------+
| id | uuid | vlan_id | vlan_gateway | vlan_netmask | description | vlan_type | data_center_id | network_id | physical_network_id | ip6_gateway | ip6_cidr | ip6_range | removed | created |
+----+--------------------------------------+-----------+--------------+-----------------+---------------------------+----------------+----------------+------------+---------------------+-------------+----------+-----------+---------+---------------------+
| 15 | 6a205b78-d162-43e3-8da9-86a3ff60f40e | vlan://77 | 10.112.63.65 | 255.255.255.192 | 10.112.63.66-10.112.63.70 | VirtualNetwork | 1 | 200 | 200 | NULL | NULL | NULL | NULL | 2017-12-13 12:55:51 |
| 17 | ff8b5175-b247-45a5-b8d3-feb6a1ca64d0 | vlan://77 | 10.112.63.65 | 255.255.255.192 | 10.112.63.66-10.112.63.70 | VirtualNetwork | 1 | 200 | 200 | NULL | NULL | NULL | NULL | 2017-12-13 12:55:51 |
+----+--------------------------------------+-----------+--------------+-----------------+---------------------------+----------------+----------------+------------+---------------------+-------------+----------+-----------+---------+---------------------+

4 weeks agoCLOUDSTACK-10198: removed unused (#1437)
pedro-martins [Tue, 19 Dec 2017 06:54:25 +0000 (04:54 -0200)] 
CLOUDSTACK-10198: removed unused (#1437)

com.cloud.hypervisor.hyperv.resource.HypervDummyResourceBase
class and change the log message in
com.cloud.hypervisor.hyperv.discoverer.HypervServerDiscoverer