Commit Graph

152 Commits

Author SHA1 Message Date
Rohit Yadav 0f0e7f2011 FR12 (CLOUDSTACK-9993): Secure Agent Communications
This introduces a new certificate authority framework that allows
pluggable CA provider implementations to handle certificate operations
around issuance, revocation and propagation. The framework injects
itself to `NioServer` to handle agent connections securely. The
framework adds assumptions in `NioClient` that a keystore if available
with known name `cloud.jks` will be used for SSL negotiations and
handshake.

This includes a default 'root' CA provider plugin which creates its own
self-signed root certificate authority on first run and uses it for
issuance and provisioning of certificate to CloudStack agents such as
the KVM, CPVM and SSVM agents and also for the management server for
peer clustering.

Additional changes and notes:
- Comma separate list of management server IPs can be set to the 'host'
  global setting. Newly provisioned agents (KVM/CPVM/SSVM etc) will get
  radomized comma separated list to which they will attempt connection
  or reconnection in provided order. This removes need of a TCP LB on
  port 8250 (default) of the management server(s).
- All fresh deployment will enforce two-way SSL authentication where
  connecting agents will be required to present certificates issued
  by the 'root' CA plugin.
- Existing environment on upgrade will continue to use one-way SSL
  authentication and connecting agents will not be required to present
  certificates.
- A script `keystore-setup` is responsible for initial keystore setup
  and CSR generation on the agent/hosts.
- A script `keystore-cert-import` is responsible for import provided
  certificate payload to the java keystore file.
- Agent security (keystore, certificates etc) are setup initially using
  SSH, and later provisioning is handled via an existing agent connection
  using command-answers. The supported clients and agents are limited to
  CPVM, SSVM, and KVM agents, and clustered management server (peering).
- Certificate revocation does not revoke an existing agent-mgmt server
  connection, however rejects a revoked certificate used during SSL
  handshake.
- Older `cloudstackmanagement.keystore` is deprecated and will no longer
  be used by mgmt server(s) for SSL negotiations and handshake. New
  keystores will be named `cloud.jks`, any additional SSL certificates
  should not be imported in it for use with tomcat etc. The `cloud.jks`
  keystore is stricly used for agent-server communications.
- Management server keystore are validated and renewed on start up only,
  the validity of them are same as the CA certificates.

New APIs:
- listCaProviders: lists all available CA provider plugins
- listCaCertificate: lists the CA certificate(s)
- issueCertificate: issues X509 client certificate with/without a CSR
- provisionCertificate: provisions certificate to a host
- revokeCertificate: revokes a client certificate using its serial

Global settings for the CA framework:
- ca.framework.provider.plugin: The configured CA provider plugin
- ca.framework.cert.keysize: The key size for certificate generation
- ca.framework.cert.signature.algorithm: The certificate signature algorithm
- ca.framework.cert.validity.period: Certificate validity in days
- ca.framework.cert.automatic.renewal: Certificate auto-renewal setting
- ca.framework.background.task.delay: CA background task delay/interval
- ca.framework.cert.expiry.alert.period: Days to check and alert expiring certificates

Global settings for the default 'root' CA provider:
- ca.plugin.root.private.key: (hidden/encrypted) CA private key
- ca.plugin.root.public.key: (hidden/encrypted) CA public key
- ca.plugin.root.ca.certificate: (hidden/encrypted) CA certificate
- ca.plugin.root.issuer.dn: The CA issue distinguished name
- ca.plugin.root.auth.strictness: Are clients required to present certificates
- ca.plugin.root.allow.expired.cert: Are clients with expired certificates allowed

UI changes:
- Button to download/save the CA certificates.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2017-08-23 12:42:59 +02:00
Abhinandan Prateek 775e73c38e CLOUDSTACK-9182: Some running VMs turned off on manual migration when auto migration failed while host preparing for maintenance. 2017-04-18 11:25:24 +05:30
Abhinandan Prateek c21aa89a47 CLOUDSTACK-8491: Host maintenance fails if a vm on it is running a custom service offering VM 2015-05-21 10:40:59 +05:30
Likitha Shetty e1db982d6b CLOUDSTACK-8410. ESXi host stuck disconnects frequently.
During ping task, while scanning and updating status of all VMs on the host that are stuck in a transitional state
and are missing from the power report, do so only for VMs that are not removed.

(cherry picked from commit de7173a0ed)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-29 16:50:40 +02:00
Santhosh Edukulla 86943da26e Fixed few coverity issues
Signed-off-by: Santhosh Edukulla <santhosh.edukulla@gmail.com>
(cherry picked from commit 0a9742f914)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-27 14:43:48 +02:00
Rohit Yadav 43db75c319 CLOUDSTACK-7593: allow nic type to be fetched from vm's details
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-13 15:44:09 +05:30
Santhosh Edukulla c25263ba81 Fixed Coverity Issues 2015-02-05 15:59:29 +05:30
Kishan Kavala 0c1172ffe9 Network offering usage event should be logged for UserVms only
(cherry picked from commit 42cecbb000)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 14:27:24 +05:30
Likitha Shetty 294f5bf331 CLOUDSTACK-8114. Ensure VM stop and then start updates the volume path correctly in the DB.
(cherry picked from commit 521258bafb)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 14:27:04 +05:30
Likitha Shetty bcbfe3bdee CLOUDSTACK-8129. Cold migration of VM across VMware DCs leaves the VM behind in the source host.
If VM has been cold migrated across different VMware DCs, then unregister the VM from source host.

(cherry picked from commit 15b348632d)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 13:51:47 +05:30
Likitha Shetty 45d32234a6 CLOUDSTACK-8112. CS allows creation of VM's with the same Display name when vm.instancename.flag is set to true.
Before registering a VM check if a different CS VM with same name exists in vCenter.

(cherry picked from commit 33179cce56)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 13:51:22 +05:30
Sanjay Tripathi 8790b84b20 CLOUDSTACK-7940: Exception printed completely on the UI. Not in a readable format.
(cherry picked from commit dda2994936)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-20 11:34:48 +05:30
Kishan Kavala 1e87f3b80b Bug-Id: CLOUDSTACK-3439: Include dynamically created nics in Prepare for migration command in KVM
(cherry picked from commit f767adfe71)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-18 18:19:24 +05:30
Saksham Srivastava a1791cb4a8 CLOUDSTACK-8088: VM scale up is failing in vmware with Unable to execute ScaleVmCommand due to java.lang.NullPointerException
(cherry picked from commit 1df0453d27)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-18 17:28:17 +05:30
Koushik Das 788fe5a273 CLOUDSTACK-8103: Vmsync marks VM as stopped even after failing to stop it in HV
During vmsync if StopCommand (issued as part of PowerOff/PowerMissing report) fails to stop VM (since VM is running on HV),
don't transition VM state to "Stopped" in CS db. Also added a check to throw ConcurrentOperationException if vm state is not
"Running" after start operation.
2014-12-22 12:31:34 +05:30
Prachi Damle a7861aa5fa CLOUDSTACK-8079: If the cluster capacity threshold is reached, HA-enabled VM is not migrated on another host during HA
Changes:
-  When there is HA we try to redeploy the affected vm using regular planners and if that fails we retry using the special planner for HA (which skips checking disable threshold)
Now because of job framework the InsufficientCapacittyException gets masked and the special planners are not called. Job framework needs to be fixed to rethrow the correct exception.
- Also the VM Work Job framework is  not setting the DeploymentPlanner to the VmWorkJob.  So the HA Planner being passed by HAMgr was not getting used.
- Now the job framework sets the planner passed in by any caller of the VM Start operation, to the job
2014-12-17 13:48:24 -08:00
Rohit Yadav d42e3df9cf CLOUDSTACK-7563: Fix potential NPE in checking answer
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-12-02 16:14:29 +05:30
Loic Lambiel 99cb19787e CLOUDSTACK-7404: Failed to start an instance when originating template has been deleted
Signed-off-by: Sebastien Goasguen <runseb@gmail.com>
(cherry picked from commit c1bf7eeeee)
2014-12-01 13:05:12 +01:00
Anthony Xu ab19edf09d CLOUDSTACK-7742:
root cause:
when vmsync reports system VM is down, CCP doesn't release the VM resource before starting it.
fix:
make sure cleanup is called for a VM when it is reported as Stopped
2014-11-19 16:27:51 -08:00
Edison Su d856a2acad CLOUDSTACK-7946:
remove leftover state in volume and snapshot table in case of mgt server
shutdown during storage operation.
Reviewed-by: Min
2014-11-19 16:08:27 -08:00
Koushik Das e25de54b4c CLOUDSTACK-7421
Unnecessary exception in MS logs while removing default NIC from VM. Following changes are made:
1. Changed the exception from CloudRuntimeException to InvalidParameterValueExecption.
2. Moved out validation logic to UserVMManagerImpl from VirtualMachineManagerImpl.
3. Handling InvalidParameterValueException from async API calls so that they are not logged as ERROR in MS logs.
2014-11-08 13:50:15 +05:30
Min Chen 07ba078ee6 CLOUDSTACK-7833: VM Async work jobs log "Was unable to find lock for the key vm_instance" errors as warning 2014-11-03 11:19:06 -08:00
Min Chen 0d6f69b536 CLOUDSTACK-7778: Start VM checkWorkItem loop should also check VM DB state before going into idle waiting to exit faster. 2014-10-23 14:38:56 -07:00
Min Chen e7fa3a2959 CLOUDSTACK-7563: Fix potential NPE from FingBugs. 2014-10-14 11:21:01 -07:00
Edison Su 1c1485e0f0 disable parallel for xenserver. Also for vmware, if full.clone is enabled and migratecommand will have the behavor of start/stop command
(cherry picked from commit d233f39c82)
2014-10-13 00:39:33 -04:00
Min Chen 1b15efb5f0 CLOUDSTACK-7563: ClassCastException in VirtualMachineManagerImpl in
handling various Agent command answer.
2014-09-16 12:12:17 -07:00
Nitin Mehta 0a4ab3251a CLOUDSTACK-7513: listServiceOfferings API when called with VM's id also returns offerings to which it cant be upgraded. Adding the logic that when vmid is passed it looks for compatible offerngs using the storage type (local/shares), storage tags and also compute (cpu,speed, memory) in case the vm is running.
Also changed the scaleVm API to upgrade only when the destination offering has storage tags as a subset of current offering tags.
2014-09-15 11:02:34 -07:00
Bharat Kumar 2b7b837b28 CLOUDSTACK-6099 live migration is failing for vm deployed using dynaic compute offerings with NPE 2014-09-10 13:26:24 +02:00
Kishan Kavala 6f7c4863a2 CLOUDSTACK-7473: Vm migration is not supported for LXC. When host is put in maintenance mode, stop the Vms instead of migrating 2014-09-04 20:59:19 +05:30
Anthony Xu 330c4ba578 completed the new vmsync TODOs in the code.
removed old vmsync logic
2014-07-28 12:51:37 -07:00
Hugo Trippaers cd0ef09344 Fix typo and add the right exception to the error map. 2014-06-25 15:51:28 +02:00
Anshul Gangwar 450d890942 CLOUDSTACK-6830: Fixed during VM migration, volumes on zone wide primary store
requires storage migration resulting in failure of VM migration. This also improves
the hostsformigration api. Firstly we were trying to list all hosts and then
finding suitable storage pools for all volumes and then we were checking whether
vm migration requires storage migration to that host. Now the process is updated.
We are checking for only those volumes which are not in zone wide primary store.
We are verifying by comparing volumes->poolid->clusterid to host clusterid. If it
uses local or clusterids are different then verifying whether host has suitable
storage pools for the volume of the vm to be migrated too.
2014-06-20 16:32:19 +05:30
Kelven Yang f529823566 Add ReflectionUse annotation for marking up *un-used* methods 2014-06-17 17:31:29 -07:00
Rajani Karuturi b666a1f3a5 Fixed issues reported by coverity NPEs, unwritten field access and self assignment
Signed-off-by: Koushik Das <koushik@apache.org>
2014-06-10 14:34:47 +05:30
Prachi Damle 3b3f4577b0 CLOUDSTACK-6476: Basic Zone with Multiple Pods Setup: DHCP server doesnt get deployed in the pod where the VM gets deployed
Changes:
PodId in which the router should get started was not being saved to the DB due to the VO's setter method not following the setXXX format. So when planner loaded the router from DB, it always got podId as null and that would allow planner to deploy the router in any pod. If the router happens to start in a different pod than the user VM, the Vm fails to start since the Dhcp service check fails.

Fixed the VO's setPodId method, that was causing the DB save operation fail.
2014-06-06 16:15:31 -07:00
Devdeep Singh 245b7f4c39 CLOUDSTACK-6510: Fix gson serialization exception in storage migration. Gson couldn't serialize
a map with volume and storagepool objects for logging. Fixed by using volume and storage pool
ids instead of objects in the map.
2014-05-08 12:23:46 +05:30
Anthony Xu b3491bcbac removed unused command ClusterSyncCommand 2014-05-01 11:45:19 -07:00
Harikrishna Patnala ab39739bd8 CLOUDSTACK-6211: Xenserver - HA - SSVM fails to start due to running out of management Ip ranges when testing host down scenarios
Signed-off-by: Koushik Das <koushik@apache.org>
2014-04-18 17:52:49 +05:30
Prachi Damle 6397f1c82e CLOUDSTACK-6329 [Automation] Changing service offering of VM from medium to small failing with NPE
- The hostAllocators were not getting set
2014-04-17 17:55:17 -07:00
Ding Yuan c031eb7d38 CLOUDSTACK-6242: exception handling improvements
Signed-off-by: Daan Hoogland <daan@onecht.net>
2014-04-15 08:07:15 +02:00
Koushik Das 5e90b75c98 CLOUDSTACK-6402: Fix StopCommand so that VMs are not removed accidentally as part of vmsync
Added a new flag 'checkBeforeCleanup' to StopCommand based on which check is done to see if VM is running in HV host.
If VM is running then in this case it is not stopped and the operation bails out.
Also modified the MS code to call the StopCommand with appropriate value for the flag based on the context.
Currently it is only set to 'true' when called from the new vmsync logic based on powerstate of VM. For rest it
is set to 'false' meaning no change in behaviour.
2014-04-14 16:52:37 +05:30
Kelven Yang cd8801f6f7 Do app-level iteration to avoid mysql deadlocks 2014-04-02 15:46:50 -07:00
Edison Su 504a6cdee2 CLOUDSTACK-5432:sync vm and storage commands on mgt server for kvm
Conflicts:

	engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
	server/src/com/cloud/hypervisor/KVMGuru.java
2014-03-28 16:24:07 -07:00
Anthony Xu 6d103e62fe use correct interval for cleanTask and transitionTask 2014-03-26 14:22:27 -07:00
Anthony Xu e3fc5a4d46 vm meta sync sync xstoolsversion as well 2014-03-24 15:48:21 -07:00
Laszlo Hornyak 2c4ac5e4d3 removed some redundant Boolean isntantiations
Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2014-03-22 18:34:45 +01:00
Kelven Yang ce1e53f451 Fix style-check issue after cherry-picks 2014-03-18 17:00:08 -07:00
Kelven Yang d9506d2a05 Let VMSync be aware of HA take-over on VM state management. 2014-03-18 16:45:45 -07:00
Nitin Mehta 5d19a936a2 CLOUDSTACK-6247: Usage Events - hide them when display flag is off in the context of "Ability to have better control over first class objects in CS" feature
Work done for network offering.
2014-03-18 14:00:55 -07:00
Mike Tutkowski d55c4dd804 CLOUDSTACK-6170 2014-03-14 23:47:20 -06:00