Commit Graph

1627 Commits

Author SHA1 Message Date
Rohit Yadav 366d82e292 FR12 (CLOUDSTACK-9993): Secure Agent Communications (#38)
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-09-26 09:19:31 +05:30
Abhinandan Prateek c5e9e98ab5 FR17-b: Following enhancements are made to FR17
1. Add timeout to the volume stats command
2. When a unknown command is received return a BadCommand from request processor
3. Unit test for checking bad and a good command sent to the agent as json
2017-06-14 08:40:41 +05:30
Abhinandan Prateek 4991d165f3 FR-17: KVM, Xen and VMware support + UI with Marvin test 2017-03-27 09:53:40 +05:30
Rohit Yadav 876fc7434d APPLE-165: Host HA management and HA provider for KVM
Host-HA offers investigation, fencing and recovery mechanisms for host that for
any reason are malfunctioning. It uses Activity and Health checks to determine
current host state based on which it may degrade a host or try to recover it. On
failing to recover it, it may try to fence the host.

The core feature is implemented in a hypervisor agnostic way, with two separate
implementations of the driver/provider for Simulator and KVM hypervisors. The
framework also allows for implementation of other hypervisor specific provider
implementation in future.

The Host-HA provider implementation for KVM hypervisor uses the out-of-band
management sub-system to issue IPMI calls to reset (recover) or poweroff (fence)
a host.

The Host-HA provider implementation for Simulator provides a means of testing
and validating the core framework implementation.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2017-01-18 18:18:53 +05:30
Boris Schrijver decaef6cb4 Added QCOW2 virtual size checking for S3.
- Cleaned up S3TemplateDownloader
- Created static QCOW2 utils class.
- Reformatted some parts of DownloadManagerImpl
2016-01-20 12:54:02 +01:00
Rohit Yadav 0062ff2672 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-19 15:31:37 +05:30
Abhinandan Prateek 258d9b19dd CLOUDSTACK-8250: host cpu memory used reported incorrectly in host stat 2015-05-21 09:24:03 +05:30
Likitha Shetty 55f2e45d14 CLOUDSTACK-8319. For both 'MigrateVolume' and 'MigrateVMWithVolumes, ensure VM's vconfiguration files are migrated along with VM's root volume.
(cherry picked from commit bdd28a45ed)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-04-17 15:42:02 +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
Likitha Shetty bf7013f0ea CLOUDSTACK-8111. NFS secondary storage repetitively mounted on CS server with ESXi hypervisors.
Fix cleanup of NFS mounts on management server during server starup by correcting how mount points are listed for a management server.

(cherry picked from commit 647532376f)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 14:51:53 +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
amoghvk 71c9804165 Fixing possible formatting issue with license header, causing builds to fail. Works well locally 2014-10-14 14:37:38 -07:00
Sanjay Tripathi 176e0d47bb CLOUDSTACK-6650: Reorder Cluster list in deployment planner to protect
GPU enabled hosts from non-GPU VM deployment.
Cluster reordering is based on the number of unique host tags in a cluster,
cluster with most number of unique host tags will put at the end of list.
Hosts with GPU capability will get tagged with implicit tags defined by
global config param 'implicit.host.tags' at the time os host discovery.

Also added FirstFitPlannerTest unit test file.
2014-10-14 17:55:37 +05:30
amoghvk da73d735b2 Revert "CLOUDSTACK-6650: Reorder Cluster list in deployment planner to protect"
This reverts commit d910b4ff14 since it is causing encryption/decryption issues with RPM builds

(cherry picked from commit fbcab01ff0)
2014-10-13 00:37:34 -04:00
Hugo Trippaers 5990ed4610 Move the PrepareKickstartPxeServerCommand to the core api so other
modules can use it.
(cherry picked from commit b6401b04f22b0a5b686c7c477da4c6e0fd18df84)

Conflicts:
	plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartServiceImpl.java
2014-10-13 00:22:50 -04:00
Sanjay Tripathi 47d2a578ee CLOUDSTACK-6650: Reorder Cluster list in deployment planner to protect
GPU enabled hosts from non-GPU VM deployment.
Cluster reordering is based on the number of unique host tags in a cluster,
cluster with most number of unique host tags will put at the end of list.
Hosts with GPU capability will get tagged with implicit tags defined by
global config param 'implicit.host.tags' at the time os host discovery.

Also added FirstFitPlannerTest unit test file.

(cherry picked from commit 39fe766c2b)
2014-10-13 00:15:03 -04:00
Edison Su 9278a6378b fix checkstyle
(cherry picked from commit 8db4f197ef)
2014-10-13 00:12:54 -04:00
Edison Su ae0bf7db5f speed up template download: don't sync io for each write
(cherry picked from commit 6de4dcb10a)
2014-10-13 00:12:36 -04:00
Hugo Trippaers 4ad2734576 CID-1114601 to 1114604 Recommended practice is to test the result of
skip and read for EOF
2014-09-19 14:29:01 +02:00
Hugo Trippaers 90df7cf881 CID-1116300 Prevent potential NPE 2014-09-19 11:55:17 +02:00
Anthony Xu 071004e3e1 removed start/stop VR from queue 2014-09-17 19:04:34 -07:00
Jayapal 86bf33bfab CLOUDSTACK-7540: Fixed NPE in check s2svpn connection status 2014-09-15 14:54:13 +05:30
Devdeep Singh f099732be7 CLOUDSTACK-7359. Make sure timeout value is set for the MigrateVolumeCommand. This will
make sure the agent waits for the resource to complete (success/failure) migration of
volume on the hypervisor.
2014-08-18 11:38:29 +05:30
Hugo Trippaers d2aa1c4aa1 Fix concurrency issues CID-1230585 and CID-1230586 2014-08-13 08:39:40 +02:00
Min Chen e3564658be CLOUDSTACK-6940, CLOUDSTACK-7312, CLOUDSTACK-5512: Template/ISO/Volume
upload rejects some valid URL formats. Also consolidate URL format check
into one util routine.
2014-08-12 11:43:08 -07:00
Kishan Kavala c09888fcb5 CLOUDSTACK-7237 : Added TAR image processor for templates with tar extension 2014-08-06 18:03:02 +05:30
Jayapal 912dc15bc1 CLOUDSTACK-7246: corrected script name of createipalias 2014-08-05 14:20:32 +05:30
Santhosh Edukulla e4d6cd8e6a Fixed coverity reported concurrency issues
Signed-off-by: Santhosh Edukulla <santhosh.edukulla@gmail.com>
2014-08-05 12:16:08 +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 49f60ca744 Fix a coverity issue about unchecked returns and make the code flow a
litle bit more easy to follow.
2014-07-28 14:42:42 +02:00
Sheng Yang f4757a198a Revert "CLOUDSTACK-7124: Fix semicolon caused VPN programming issue"
This reverts commit 809b47e4eb.

Because the fix cause CLOUDSTACK-7163. Would fix it in another way.

Conflicts:
	core/src/com/cloud/agent/resource/virtualnetwork/ConfigHelper.java
2014-07-25 14:10:35 -07:00
Hugo Trippaers 70e68be4f3 Fix string encoding problem reported by coverity 2014-07-22 13:12:47 +02:00
Hugo Trippaers a963fd34b5 CLOUDSTACK-7111 Empty commandlist must return a succes 2014-07-18 09:28:42 +02:00
Hugo Trippaers 5651a13cfd Remove duplicated code 2014-07-18 09:28:42 +02:00
Sheng Yang 809b47e4eb CLOUDSTACK-7124: Fix semicolon caused VPN programming issue
Semicolon can cause trouble in bash, need to be escaped.
2014-07-17 18:40:14 -07:00
Hugo Trippaers dbc7d80329 Aggregate command cleanup is not required for the virtual router as we
already cleanup in the finish.

And consequently dies if somebody tries to test with assertions enabled.
2014-07-16 16:24:54 +02:00
amoghvk 6831ed4026 CLOUDSTACK-6358: Missing patches in master branch 2014-07-14 15:17:58 -07:00
Hugo Trippaers a49bb7e8e3 Cleanup licenses in core with com.mycila:license-maven-plugin:format 2014-07-14 16:28:29 +02:00
Hugo Trippaers 109d129096 Enforce licenses and license format in cloud-core 2014-07-14 16:28:29 +02:00
Hugo Trippaers 1ed554650c One day i'll remember to put the licenses in right away. 2014-07-14 16:04:29 +02:00
Hugo Trippaers c12767908d Refactor VirtualRoutingResource, put the ConfigItems in separate classes and create a separate ConfigHelper 2014-07-14 15:32:31 +02:00
Santhosh Edukulla 97d296bfbd Fixed Coverity reported performance issues like inefficient string concatenations, wrong boxing or unboxing types, inefficent map element retrievals
Signed-off-by: Daan Hoogland <daan@onecht.net>
2014-07-01 22:06:25 +02:00
Damodar Reddy 5cbb182c6d CLOUDSTACK-6636: [Windows] Can not create Template from ROOT snapshot on Windows management server with Xen/NFS storage type. This change is only for XenServer with NFS Storage Server. Will fix remaining when we touch them.
Signed-off-by: Koushik Das <koushik@apache.org>
2014-06-19 09:35:26 +05:30
Mike Tutkowski 42d00cae58 SolidFire (shared-access) Provider 2014-06-16 12:15:29 -06:00
Nitin Mehta 5393387bbd CLOUDSTACK-6599:
1. Adding the missing Template/Volume URLs expiration functionality
2. Improvement - While deleting the volume during expiration use rm -rf as vmware now contains directoy
3. Improvement - Use standard Answer so that the error gets logged in case deletion of expiration link didnt work fine.
4. Improvement - In case of domain change, expire the old urls
2014-05-30 10:48:42 -07:00
Marcus Sorensen 15ac47e47b CLOUDSTACK-6088: Check first bytes of template when downloading to verify format/type 2014-05-28 15:40:57 -06:00
Rajesh Battala cc92f3bbe3 Fixed testSetupGuestNetwork unit test as the SetupGuestnetwork prepare command got changed 2014-05-05 13:45:12 +05:30
Rajesh Battala f9cf2c241b CLOUDSTACK-6518 [Hyper-V] Efficient way of finding the empty nic in VR/VpcVR to configure VPC entities 2014-05-05 12:56:42 +05:30
Rajesh Battala 6cbb9a5b72 CLOUDSTACK-6528 SetupGuestNetwork command is not deleting the guest network configured on the eth device 2014-05-05 12:56:42 +05:30