28290 Commits

Author SHA1 Message Date
Likitha Shetty
f499281625 CLOUDSTACK-8602. MigrateVirtualMachineWithVolume leaves old chain data for volume. Update chain info of a volume after migration.
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

This closes #548
2015-08-26 15:15:53 +05:30
Likitha Shetty
cb50d1d827 CLOUDSTACK-8610. Unable to attach 7th Disk to Windows Server 2012 R2 instance. During disk attach, while trying to obtain the controller key for SCSI controller, look for device with the generic SCSI controller type i.e. VirtualSCSIController.
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

This closes #554
2015-08-26 15:14:24 +05:30
Rohit Yadav
6e5d4a60da Merge pull request #665 from pritisarap12/CLOUDSTACK-8716-Verify-creation-of-snapshot-from-volume-when-the-task-is-performed-repeatedly-in-zone-wide-primary-Storage
CLOUDSTACK-8716: Verify creation of snapshot from volume when the task is performed repeatedly in zone wide primary StorageOn VMWare with a Zone wide primary storage and more than two clusters verify successful creation of snapshot multiple times.

* pr/665:
  CLOUDSTACK-8716: Verify creation of snapshot from volume when the task is performed repeatedly in zone wide primary Storage

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 15:11:27 +05:30
Rohit Yadav
8252dbd006 Merge pull request #675 from pritisarap12/CLOUDSTACK-8723-Verify-API-call-listUsageRecords-returns-usage-of-new-volume-created-after-restore-VM
CLOUDSTACK-8723: Verify API call "listUsageRecords" returns usage of new volume created after restore VMAfter restoring a running VM current ROOT disk gets destroyed and new ROOT disk gets created.
This testcase is to check if volume usage of this newly created volume is listed in listUsageRecords API.

* pr/675:
  CLOUDSTACK-8723: Verify API call "listUsageRecords" returns usage of new volume created after restore VM

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 15:11:11 +05:30
Remi Bergsma
002296ac4f Merge pull request #736 from ustcweizhou/CLOUDSTACK-8765
CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM

* pr/736:
  CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-26 11:29:25 +02:00
Rohit Yadav
65e9ea9988 Merge pull request #729 from shwetaag/router
CLOUDSTACK-8757:FTP modules are not loaded in VRcheck bug 8757 for more details .

* pr/729:
  CLOUDSTACK-8757:FTP modules are not loaded in VR

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 14:47:19 +05:30
Rohit Yadav
22fad9d515 Merge pull request #725 from koushik-das/CLOUDSTACK-8754
CLOUDSTACK-8754: VM migration triggered by dynamic scaling is failingThis is caused by serialization failure for VmWorkMigrateForScale object. Replaced DeployDestination member present in VmWorkMigrateForScale with serializable types.

Haven't added any unit test as couldn't find a clean way to do it. Simply adding a test to do (de)serialization won't help catch any new member addition to the type which breaks serializability.

* pr/725:
  CLOUDSTACK-8754: VM migration triggered by dynamic scaling is failing This is caused by serialization failure for VmWorkMigrateForScale object. Replaced DeployDestination member present in VmWorkMigrateForScale with serializable types.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 14:24:38 +05:30
Rohit Yadav
5d232ea3d9 Merge pull request #735 from shapeblue/kvm-linkbr-checks-master
CLOUDSTACK-8749: Add checks to prevent malformed/unexpected inputBased on @jburwell's comment on PR #718

* pr/735:
  CLOUDSTACK-8749: Add checks to prevent malformed/unexpected input

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 14:18:40 +05:30
Rohit Yadav
7e455fa2b7 CLOUDSTACK-8749: Add checks to prevent malformed/unexpected input
Based on @jburwell's comment on PR #718

This closes #735

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-26 13:34:21 +05:30
Wei Zhou
858b6c0251 Merge pull request #730 from ustcweizhou/profiler-getDurationInMillis
CLOUDSTACK-8761: Replace some profiler.getDuration with profiler.getDurationInMillis after commit 5557ad55

This closes #730
2015-08-26 08:29:50 +02:00
Remi Bergsma
44ba14d17b Merge pull request #737 from miguelaferreira/feature/mferreira/ncx-follow-redirects-gardened-rebase
CLOUDSTACK-8758: Handle redirects in communication with NXS controller (a.k.a. Nicira NVP)When an NSX controller node is part of a cluster it will redirect API calls to the master controller. Because the ACS management server does not follow such redirects, if there is a change of master within a NSX cluster, the NSX device (a.k.a.  NiciraNvp) needs to be reconfigured (via the management server DB).

The goal of this PR is to enable ACS management server to follow HTTP redirects sent by NSX controllers. However, other changes were made to the cloud-utils module that provides the REST client that the NSX plugin uses.

Cosmetic changes:
* Upgrade maven module structure for cloud-utils and cloud-plugin-netowkr-nvp to comply with maven default
* Several refactorings on both modules to consistently format the code, remove unused code, declare final when possible, remove auto generated comments, etc

Other changes:
* Upgrade HTTP library used in REST client to version 4.5 of Apache HTTP Components
* Implement generic REST client that supports HTTP redirects
* Implement NSX specific REST client
* Simplify NSX api implementation
* Previously existing unit tests for both the REST client and NSX api were either maintained in the same test classes, moved to new test classes (because code under tests also moved), or removed (because code under tests was also removed)
* New Marvin tests for NSX controllers

Testing:
* Ran all unit tests present in the project
* Ran Java Integration tests for NSX api targeting both a master and a slave controller
* Ran new Marvin test for NSX controller
* Manual inspection of logs to confirm redirection is taking place

* pr/737:
  Use NSX specific RestClient in API implementation (NiciraNvpApi)
  Refactor NSX api implementation (NiciraNvpApi)
  Add NSX specific RestClient implementation
  Delegate HTTP protocol activity in RESTServiceConnector to RestClient
  Add basic RestClient implentation based on HTTP Components 4.5
  Code clean up in cloud-plugin-network-nvp project
  Code clean up in cloud-utils project
  Refactor cloud-plugin-network-nvp project into Maven default structure
  Refactor cloud-utils project into Maven default structure
  Fix unit-test library dependencies
  Add Marvin test for Nicira NVP plugin
  Create Nicira NVP devices and enable plugin at deploy

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-25 20:44:52 +02:00
Miguel Ferreira
09f7153378 Use NSX specific RestClient in API implementation (NiciraNvpApi)
- Simplify public API to return Lists instead of NiciraNvpLists
2015-08-25 17:36:17 +02:00
Miguel Ferreira
c6602ee151 Refactor NSX api implementation (NiciraNvpApi)
- Make internal method private
- Remove unused methods
- Refactor type deserialization adapter classes out
2015-08-25 17:36:16 +02:00
Miguel Ferreira
18e6b9ba78 Add NSX specific RestClient implementation
- Add -noverify JVM arg to surefire plugin, to allow Powermockito to
  de-encapsulate private methods
- Add dependency on cloud-utils test-jar to use custom HttpRequest
  matchers
2015-08-25 17:36:15 +02:00
Miguel Ferreira
de63b94f2d Delegate HTTP protocol activity in RESTServiceConnector to RestClient
- All HTTP protocol activities are now handled by RestClient
- This service is now only responsible for creating requests, and
  dispatching them to the client
- Provides a Simple API for creating, updating, retrieving and deleting
  objects
2015-08-25 17:36:14 +02:00
Miguel Ferreira
8a93bb8d2d Add basic RestClient implentation based on HTTP Components 4.5
- Upgrade version of HTTP Components to 4.5
- Add helper class to create Http clients
- Add helper class to build http requests
- Add enum with the different Http Methods
- Add constants class for HTTP related values
2015-08-25 17:36:13 +02:00
Miguel Ferreira
6e74ef8e40 Code clean up in cloud-plugin-network-nvp project
- Code formatting
- Declare final where possible
- Remove unused methods
- Remove throws declarations where not needed
- Remove generated comments (e.g. "TODO Auto-generated method stub")
2015-08-25 17:36:12 +02:00
Miguel Ferreira
5fc953eda2 Code clean up in cloud-utils project
- Code formatting
- Remove unused methods
2015-08-25 17:36:11 +02:00
Miguel Ferreira
93b0989dea Refactor cloud-plugin-network-nvp project into Maven default structure 2015-08-25 17:36:10 +02:00
Miguel Ferreira
83fd8f60f3 Refactor cloud-utils project into Maven default structure 2015-08-25 14:50:33 +02:00
Miguel Ferreira
3d27e9ed12 Fix unit-test library dependencies
- XML formatting
- Fix license header

- Reorder hamcrest, junit, mockito and powermock dependencies
  * Since several libraries include a subset of hamcrest classes,
    hamcrest should be declared first in the pom, inorder for its
    classes to be loaded first by the JVM
- Depdend on hamcrest-all and exclude hamcrest classes from other
  libraries
2015-08-25 14:50:31 +02:00
Miguel Ferreira
98dd771702 Add Marvin test for Nicira NVP plugin 2015-08-25 14:50:30 +02:00
Miguel Ferreira
abb824e3db Create Nicira NVP devices and enable plugin at deploy 2015-08-25 14:50:29 +02:00
Remi Bergsma
2772e4da82 Merge pull request #738 from michaelandersen/vpc_defaultroute_fix
CLOUDSTACK-8685: Fix for missing defaultroute on VPC router https://issues.apache.org/jira/browse/CLOUDSTACK-8685

Refactored CsRoute and CsAddress to:
 - add methods to add and verify the defaultroute
 - renamed methods flush, add, and routeTable to flush_table, add_route, add_table respectively.

Added some suboptimal unit tests to TestCsRoutes

* pr/738:
  Fixed defaultroute on VPC routers in CsRoute and CsAddress Refactored CsRoute
  pep8 cleanup

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-25 10:37:27 +02:00
Remi Bergsma
c0fde9a12b Merge pull request #731 from remibergsma/centos7-kvm
CLOUDSTACK-8443: Support CentOS 7 as KVM hypervisorThis adds support for CentOS 7 as a KVM hypervisor. As discussed in the Jira issue, the root cause of the issue was the `cloudstack-setup-agent` script that added this line to `/etc/libvirt/qemu.conf`:

`cgroup_controllers=["cpu"]`

On CentOS 6 this 'works', but since by default no cgroups are mounted, this setting is ignored by `libvirtd`. On CentOS 7 is does not work, because the `cpu` and `cpuacct` are 'co-mounted'. This simpy means you cannot use one without the order. The config line above instructs `libvirtd` to only use the `cpu` cgroup, which it can't.

There was code added to make sure the `cpu` cgroup was not co-mounted. It did this with a shell script, but after a reboot it was gone. It wasn't reliable and not even a solution at all. I went ahead and removed the code, because the co-mounted cgroups work fine. The real issue was the config line we put in `/etc/libvirt/qemu.conf` so much better to fix that instead.

The default for `libvirtd` is to use only cgroups that are mounted. When you remove the 'cgroup_controllers' line, the default kicks in. According to the `qemu.conf` file, the default is:

`cgroup_controllers = ["cpu", "devices", "memory", "blkio", "cpuacct", "net_cls"]`

Then again, if it's not mounted, it's not used. So, that's a nice way to control it.
This works just fine for both RHEL/CentOS 6 and RHEL/CentOS 7.

Along the debugging, I came across some small issues here and there which I also fixed in this PR.

If you test this, be sure to build RPMs from this branch and install those on the KVM hypervisor.

At Schuberg Philis we run KVM hypervisors on CentOS 7 for months with these fixes. Now I took the time to fix the issues in CloudStack, rather than work around them.

@bhaisaab @karuturi could you please review this? Thanks!

Please note:
The next step is to fix CLOUDSTACK-8625 (Systemd profile for KVM Agent) as currently a sysvinit script is still used. Although it works, we do not have any systemd benefits. As it is a separate issue, I'll try to address it in a separate PR.

* pr/731:
  CLOUDSTACK-8443: detect CentOS 7.x as RHEL 7 alike
  CLOUDSTACK-8443: mention the correct logfile
  CLOUDSTACK-8443: display the right hypervisor type
  CLOUDSTACK-8443: don't try to fix co-mounted cgroups

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-25 10:32:27 +02:00
Remi Bergsma
a527d27299 Merge pull request #734 from remibergsma/git-pr-errormsg
Git PR merge script improvementsProcessed feedback from @bhaisaab and (a colleague of) @karuturi

- make the help message better (I also updated Confluence)
- make sure we can use it on other repo's as well (Documentation and such)

Tested it and works fine for me.

* pr/734:
  fixed hardcoded merge message location
  fix bug where the countdown would be on multiple lines
  make it work with any Apache repository mirrored on GitHub
  Improve error/help message in case of missing git remote

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-24 22:15:36 +02:00
Remi Bergsma
1e6df1b775 fixed hardcoded merge message location
This would be empty if run from another directory, resulting
in a merge message with only a 'signed-off by' line.
2015-08-24 16:16:16 +02:00
Remi Bergsma
9a24109f95 fix bug where the countdown would be on multiple lines
Example of problem:

ATTENTION: Merging pull request #731 from remibergsma/centos7-kvm into 'master' branch in 5 seconds. CTRL+c to abort..
-n 5
-n 4
-n 3
-n 2
-n 1
-n 0

Should be compatible with more environments if printf is used instead.
2015-08-24 16:00:48 +02:00
Remi Bergsma
fed5c2b06a make it work with any Apache repository mirrored on GitHub 2015-08-24 16:00:30 +02:00
Remi Bergsma
0a320c18d4 CLOUDSTACK-8443: detect CentOS 7.x as RHEL 7 alike 2015-08-24 15:51:14 +02:00
Remi Bergsma
b29ffa2cfe CLOUDSTACK-8443: mention the correct logfile 2015-08-24 15:51:14 +02:00
Remi Bergsma
778b828af0 CLOUDSTACK-8443: display the right hypervisor type 2015-08-24 15:51:13 +02:00
Remi Bergsma
87fdb521f0 CLOUDSTACK-8443: don't try to fix co-mounted cgroups
This setting works on CentOS 6 / RHEL 6 but does nothing, as
"cpu" cgroup is not mounted. On CentOS 7 / RHEL 7 systemd does
mount cgroups and "cpu" is co-mounted with "cpuacc". Hence, if
we specify "cpu" then this results in an error because it can
only use them both, or none.

By removing the setting, we rely on the default of qemu, which
is:
cgroup_controllers = ["cpu", "devices", "memory", "blkio", "cpuacct", "net_cls"]

Only if they are really mounted, they will be used. So, this will
work on both version 6 and 7.

The 'fix script' didn't work well, as after a reboot you'd still have qemu
throwing errors. Now we can handle the co-mountedcgroups.
2015-08-24 15:49:40 +02:00
Wei Zhou
bb8f7c652e CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM 2015-08-24 14:28:13 +02:00
Michael Andersen
a9eb4ba5c9 Fixed defaultroute on VPC routers in CsRoute and CsAddress
Refactored CsRoute
2015-08-24 13:35:29 +02:00
Michael Andersen
bb93a61ee7 pep8 cleanup 2015-08-24 13:35:01 +02:00
Remi Bergsma
23b9365996 Improve error/help message in case of missing git remote 2015-08-24 11:52:03 +02:00
Miguel Ferreira
82df5b156b Add UUIDs to constructors (fixing syntax error from 2a6c7f3)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

This closes #722
2015-08-24 14:12:49 +05:30
Miguel Ferreira
20be6c24f7 Formatting class CitrixRequestWrapperTest
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-24 14:12:49 +05:30
Rohit Yadav
38c9dea9c1 CLOUDSTACK-8748: VM UUID accessible in CreateVMSnapshotCommand and RevertToVMSnapshotCommand
This patch makes it possible to expose VM UUID to subsystems, this can be
useful for implementing VM Snapshots for KVM in future.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-24 14:12:49 +05:30
Koushik Das
e7ddbd4980 Signed-off-by: Koushik Das <koushik@apache.org> 2015-08-24 10:10:19 +05:30
Remi Bergsma
6d57a86cb9 Merge pull request #726 from borisroman/NicVORegression
Fix for the NicVO.java regression.Renamed set*() methods to correct naming.

* pr/726:
  Fix for the NicVO.java regression.

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-21 23:16:42 +02:00
shweta agarwal
cc308050b8 CLOUDSTACK-8757:FTP modules are not loaded in VR 2015-08-21 18:04:19 +05:30
Rajani Karuturi
aea9d4b2af Merge pull request #723 from radu-stefanache/typo_fixes
More typosSome more typos that I've found .

* pr/723:
  More typos

Signed-off-by: Rajani Karuturi <rajanikaruturi@gmail.com>
2015-08-21 17:56:02 +05:30
Boris Schrijver
4b88eabef1 Fix for the NicVO.java regression.
Renamed set*() methods to correct naming.
2015-08-21 14:03:00 +02:00
Wei Zhou
662b478d45 Replace some profiler.getDuration with profiler.getDurationInMillis after commit 5557ad55 2015-08-21 13:36:27 +02:00
Koushik Das
3be2b63103 CLOUDSTACK-8754: VM migration triggered by dynamic scaling is failing
This is caused by serialization failure for VmWorkMigrateForScale object. Replaced DeployDestination member
present in VmWorkMigrateForScale with serializable types.
2015-08-21 16:31:44 +05:30
radu-stefanache
c7a3ad4dc0 More typos 2015-08-20 13:04:29 +01:00
Remi Bergsma
614ee494ee Merge pull request #700 from rafaelweingartner/master-lrg-cs-hackday-001
Removed duplicate code in CitrixResourceBase and its subclassesRemoved unnecessary duplicated code by having the body of the getPatchFiles method only in the CitrixResourceBase superclass. Given that all of its implementations consisted of the same code except for the path which contains the necessary file for that implementation. An abstract method getPatchFilePath was created in the CitrixResourceBase superclass so that each implementation may return the path containing the specific file needed by that implementation.

Test cases were created for each implementation, simple as they may be. One assert is made to verify that the path returned by each implementation corresponds to the path that was previously specified on each getPatchFiles implementation.

* pr/700:
  Removed duplicate code in CitrixResourceBase.getPatchFiles

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-20 11:20:00 +02:00
Remi Bergsma
9229f35942 Merge pull request #721 from miguelaferreira/git-merge-scripts
Add scripts to merge PRs and release fixes forwardAs it is now, additions to CloudStack need to go through a GitHub PR and, if accepted, merged to the Apache remote (not in GitHub). This means that merging a PR for CloudStack is a bit more involved than merging a normal GitHub PR. In addition to that, a PR that fixes something in an older release needs to be merged against a release branch, and then forward merged up to master (if applicable).

To help with these two kinds of merges, @remibergsma, @karuturi, @DaanHoogland and myself, have created two scripts (contributed in this PR).

One script (**git-pr**) helps in merging a PR from GitHub to the Apache remote. The script will read the PR info using GitHub's API and will create a merge commit that contains the same commit message a normal GitHub PR merge commit, plus, as extra info, a list of commits that are being merged.

The other script (**git-fwd-merge**) will create a specific merge commit message that indicates a forward merge, and lists the commits being merged.

This Apache wiki [page](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=61311655) describes how to use these two scripts, and points to an even more detailed [page](https://github.com/schubergphilis/cloudstack-git-tree-manipulation/wiki) that explains the merge scenarios step-by-step.

By the way, beacause both scripts follow the naming convention for git tools, as long as they are in your "path" you can execute them as simply as "git pr" and "git fwd-merge". But be aware that, in order to use these scripts, you should make sure to remove any aliases that can cause a name clash.

* pr/721:
  Add git merge scripts

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-20 07:32:10 +02:00