Commit Graph

113 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
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
Daan Hoogland 06de2d6292 backport of CLOUDSTACK-8197 create MinVRVersion config item
Conflicts:
  api/src/com/cloud/network/VirtualNetworkApplianceService.java
  engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>

This closes #244
2015-05-13 09:33:16 +02:00
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 3fc392abf8 CLOUDSTACK-7960: [Automation] Creation of Volume from Snapshot fails due to StringIndexOutOfBoundsException
Fixed the appropriate CopyCommand handler in simulator plugin
2014-11-26 16:00:54 +05:30
Koushik Das d55059dd5d CLOUDSTACK-7973: Proper handler for FenceCommand in simulator
Added a proper handler for FenceCommand in simulator
2014-11-26 15:58:47 +05:30
Anthony Xu b5c132582a vmsync returns PowerState for simulator 2014-07-31 10:37:13 -07:00
Anthony Xu 521b2840b2 new vmsync for simulator 2014-07-30 15:10:51 -07:00
Anthony Xu 680d4202de CLOUDSTACK-7204:
fixed build for simulator
2014-07-30 10:59:00 -07:00
Anthony Xu 330c4ba578 completed the new vmsync TODOs in the code.
removed old vmsync logic
2014-07-28 12:51:37 -07:00
Koushik Das e85d1f911c Some minor fixes in simulator code 2014-07-09 13:20:28 +05:30
Koushik Das a413536f90 Added a simulator based test for VM sync 2014-07-07 12:57:55 +05:30
Koushik Das 4f5df54d5c Some fixes in the simulator
1. Fixed JSON response deserialization. While creating a mock a JSON can be passed which will be deserialized into a response object and returned from agent layer.
For e.g. for a mock corresponding to StopCommand, a response like "{"com.cloud.agent.api.StopAnswer":{"result":false,"wait":0}}" can be passed.
2. Ability to mock PingCommand (returned as part of getCurrentStatus() agent method). As a part of this a mocked VM state report can be returned.
For e.g. {"com.cloud.agent.api.PingRoutingWithNwGroupsCommand":{"newGroupStates":{},"newStates":{},"_hostVmStateReport":{"v-2-VM":{"state":"PowerOn","host":"SimulatedAgent.e6df7732-69b2-429b-9b6a-3e24dddfa2e0"},"i-2-5-VM":{"state":"PowerOff","host":"SimulatedAgent.e6df7732-69b2-429b-9b6a-3e24dddfa2e0"}},"_gatewayAccessible":true,"_vnetAccessible":true,"hostType":"Routing","hostId":3,"contextMap":{},"wait":0}}
2014-07-01 15:26:12 +05:30
Santhosh Edukulla b2283d7a28 Fixed few resource leaks and added secstoragefirewallcfg command support to simulator
Signed-off-by: Daan Hoogland <daan@onecht.net>
2014-06-24 23:19:47 +02:00
Girish chaudhari 591148c464 CLOUDSTACK-5150 - set the template size from source
Signed-off-by: Daan Hoogland <daan@onecht.net>
(cherry picked from commit 883d8f1119)
2014-06-17 13:44:04 +02:00
Koushik Das c9a09f548c CLOUDSTACK-6579: used_bytes column of storage_pool table is no longer used and should be removed
For now correctly setting used_bytes. Also fixed the corresponding simulator code
2014-05-06 20:27:41 +05:30
Anthony Xu b3491bcbac removed unused command ClusterSyncCommand 2014-05-01 11:45:19 -07:00
Koushik Das 8d92d00c87 CLOUDSTACK-4371: [Performance Testing] Basic zone with 20K Hosts, management server restart leaves the hosts in disconnected state for very long time
Fixed simulator code to handle local storage during host reconnect
2014-04-29 11:11:25 +05:30
Koushik Das bcc640d138 Changed mode from 755 to 644 for simulator related files 2014-04-21 13:41:05 +05:30
Koushik Das b088821c61 CLOUDSTACK-6445: Simulator enhancements
Refer FS - https://cwiki.apache.org/confluence/display/CLOUDSTACK/Simulator+enhancements
2014-04-18 16:44:21 +05:30
Chris Suich 6d18654958 CLOUDSTACK-6422: Fixed errors with simulator VM snapshot delete and revert 2014-04-15 17:23:28 -04:00
Koushik Das 5f53dced5e CLOUDSTACK-6363: [Automation] jetty server is going OOM for simulator 2014-04-14 09:39:51 +05:30
Harikrishna Patnala ecc71518a9 CLOUDSTACK-6253: Optimizing VR alerts getting algorithm In addition to this a new configuration parameter is added router.alerts.check.interval defaulted to 30minutes to check for alerts in Virtual Router 2014-04-09 18:12:20 +05:30
Koushik Das af1eba2708 CLOUDSTACK-6286: [Automation] VM deployment is failing in simulator
Added AggregationContolCommand to simulator
2014-04-03 11:45:53 +05:30
Abhinandan Prateek 228aa07153 Revert "CLOUDSTACK-6286: added FinishAggregationCommand and StartAggregationCommand to simulator"
This reverts commit 1586f419dc. Reverting as the commit that includes the two classes is missing.
2014-04-03 10:21:16 +05:30
Abhinandan Prateek 9ddfbe1128 CLOUDSTACK-6286: added FinishAggregationCommand and StartAggregationCommand to simulator 2014-04-02 20:38:19 +05:30
Santhosh Edukulla 3060f884ab Added fix for CLOUDSTACK-6269
Added fix for CLOUDSTACK-6269.More details inside the bug

Signed-off-by: Santhosh Edukulla <Santhosh.Edukulla@citrix.com>
2014-03-27 14:53:43 +05:30
Rajani Karuturi 07365c3dab simulator manager impl changes to handle SetMonitorServiceCommand This fixes some of the test cases in the integration test test_assign_vm.py when run against a simulator
Signed-off-by: Koushik Das <koushik@apache.org>
2014-03-20 14:44:23 +05:30
Alena Prokharchyk 6c23e201ad 1) More fixes for the problems found by findBugs
2) Corrected some logging in  MidoNetPublicNetworkGuru - removed .toString method call on the objects in the log body as toString is called on the object by default when use log4j
2014-03-13 16:05:45 -07:00
Anthony Xu ab1d3af460 Use seperate path to sync VM metadata for XS
VM status sync only does VM status sync
2014-03-05 15:44:50 -08:00
Mike Tutkowski b06e66c50a CLOUDSTACK-6170 2014-03-05 13:55:12 -07:00
Rajani Karuturi 9be51e1961 added mock handlers for VpnUsersCfgCommand and RemoteAccessVpnCfgCommand in the simulator
Signed-off-by: Koushik Das <koushik@apache.org>
2014-03-04 14:31:03 +05:30
Rajani Karuturi 8e2c4c8105 added delete iso api to the simulator in the smoke tests, this will fix test_03_delete_iso when run against a simulator
Signed-off-by: Koushik Das <koushik@apache.org>
2014-03-04 14:12:30 +05:30
Mandar Barve b0c6d47347 - Updated APICommand annotation to add new flags that indicate if API request or response carry sensitive info - Updated all API classes with the new annotation flag values as per the API's sensitivity - Updated server code to check response annotation before audit logging
Signed-off-by: Daan Hoogland <daan@onecht.net>
(cherry picked from commit df270d6387c362b960064ee5123c14782e767a19)
Signed-off-by: Daan Hoogland <daan@onecht.net>
2014-02-25 22:59:10 +01:00
Sheng Yang 6bde675f87 Remove SetupGuestNetworkAnswer
It's unnecessary and not different from Answer itself.
2014-02-14 18:10:05 -08:00
Santhosh Edukulla f999a01837 Added Fix for CLOUDSTACK-5875
Added fix for exception and listing. Mentioned details under bug.
Post the fix, simulator works fine.

Signed-off-by: Santhosh Edukulla <Santhosh.Edukulla@citrix.com>
Signed-off-by: Koushik Das <koushik@apache.org>
2014-01-23 17:11:33 +05:30
Alex Huang be5e5cc641 All Checkstyle problems corrected 2013-12-12 12:26:07 -08:00
Alex Huang d620df2bdd Reformatted all of the code. 2013-11-21 06:15:26 -08:00
Alex Huang 8d62744681 Reformat all source code. Added checkstyle to check the source code 2013-11-20 07:26:53 -08:00
Kelven Yang fc9adec72e CLOUDSTACK-669: Add host level side-by-side VM state report for graceful sync model migration 2013-11-12 18:32:51 -08:00
Prasanna Santhanam 951336c3e4 CLOUDSTACK-5124: Adopt GetDomRVersionAnswer to VR upgradability
While VRs upgrade, cloudstack should still be able to work with older
/newer version of the scripts within VRs. To allow this, the simulator
needs to send the version strings for the domr version response or the
VR start is interrupted.

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-11-11 13:49:55 +05:30
Min Chen 6eecb0b3b5 CLOUDSTACK-5017: If SSVM is unavailable DownloadCommands will be routed
to mgmt server.
2013-11-01 18:07:00 -07:00
Min Chen 6be228a438 CLOUDSTACK-4024:Provide a way to upgrade from existing NFS secondary
storage to S3.
2013-10-28 21:01:31 -07:00
Darren Shepherd c9101966e0 Added StorageStrategyFactory to centralize and deduplicate some logic 2013-10-23 12:40:41 -07:00
Darren Shepherd e3280bdba2 Merge remote-tracking branch 'origin/spring-modularization'
Conflicts:
	client/tomcatconf/applicationContext.xml.in
	client/tomcatconf/nonossComponentContext.xml.in
	client/tomcatconf/simulatorComponentContext.xml.in
	framework/db/src/com/cloud/utils/db/Transaction.java
	plugins/hypervisors/simulator/src/com/cloud/agent/manager/MockAgentManagerImpl.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/storage/snapshot/SnapshotManagerImpl.java
2013-10-23 11:14:42 -07:00
Darren Shepherd 205a77a5bb Merge remote-tracking branch 'origin/txn-refactor'
Conflicts:
	engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
	server/src/com/cloud/configuration/ConfigurationManagerImpl.java
	server/src/com/cloud/metadata/ResourceMetaDataManagerImpl.java
	server/src/com/cloud/vm/UserVmManagerImpl.java
2013-10-23 10:40:44 -07:00
Anthony Xu e33ae74067 CLOUDSTACK-4649:
xs 6.1/6.2 introduce the new virtual platform, so there are two virtual platforms, windows PV driver version must match virtual platforms,
this patch tracks PV driver versions in vm details and template details.

Anthony
2013-10-22 17:54:51 -07:00
Darren Shepherd 9cbb309d6b Refactor missed classes 2013-10-17 16:00:11 -07:00
Chris Suich aad1cda7e0 Added categorized sorting to SnapshotStrategy and DataMotionStrategy 2013-10-14 15:20:42 -07:00
Chris Suich 180cfa19e8 Refactor Storage Related Resource Code
These changes are a joint effort between Edison and I to refactor some
of the code around snapshotting VM volumes and creating
templates/volumes from VM volume snapshots. In general, we were working
towards allowing PrimaryDataStoreDrivers to create snapshots on primary
storage and not requiring the snapshots to be transferred to secondary
storage.

High level changes:
-Added uuid to NfsTO, SwiftTO & S3TO to cut down on the requirement of
PrimaryDataStoreTO and ImageStoreTO which don't really serve much of a
purpose
-Initial work towards enable reverting VM volume from snapshots
-Added hypervisor commands for introducing and forgetting new hypervisor
objects (snapshots, templates & volumes)

Signed-off-by: Edison Su <sudison@gmail.com>
2013-10-04 13:06:42 -07:00