Commit Graph

313 Commits

Author SHA1 Message Date
nvazquez e8e4cd70af Fix metalink urls issue 2018-02-27 19:34:07 -03:00
nvazquez cdf9ac4679 Fix metalink download, checksum retry logic and metalink SSVM downloader 2018-02-14 19:40:16 +01:00
nvazquez 8e4cec1d87 Metalink downloader rework, retrying logic and refactoring 2018-02-06 15:04:28 -03:00
nvazquez ced27374a8 HTTPS downloader fix 2018-01-23 16:02:00 -03:00
Daan Hoogland e3ec10b826 fr16 checksum in java instead of script to be more platform independent, hopefully 2018-01-12 17:31:15 +01:00
Daan Hoogland ec05530ba1 unused import removed 2018-01-09 15:21:50 +01:00
Daan Hoogland 23b1c4ddf6 backport of master fixes 2018-01-09 15:10:09 +01:00
nvazquez a5c90400d3 CLOUDSTACK-10146: Bypass Secondary Storage 2018-01-05 03:36:51 -03:00
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
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
Likitha Shetty d466ecaf7a CLOUDSTACK-5485. Cannot process more than 5 concurrent snapshots.
Number of threads on SSVM agent for connection with MS (Agent->NioClient) should be configurable using global config 'workers'.

(cherry picked from commit bc235ed5eb)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-02-02 14:46:58 +05:30
Edison Su 893eed9863 There are few cases that mgt server won't reponse agent's pingcommand timely, or in KVM's case, libvirt won't repsonse in few mintues, which will cause agent reconnect to mgt server, then all the on going tasks on host will fail 2014-11-06 15:27:24 -08:00
Edison Su 8b834171b6 Revert "There are few cases that mgt server won't reponse agent's pingcommand timely, or in KVM's case, libvirt won't repsonse in few mintues, which will cause agent reconnect to mgt server, then all the on going tasks on host will fail"
This reverts commit f3e91bf26a.
2014-10-21 10:17:11 -07:00
Edison Su f3e91bf26a There are few cases that mgt server won't reponse agent's pingcommand timely, or in KVM's case, libvirt won't repsonse in few mintues, which will cause agent reconnect to mgt server, then all the on going tasks on host will fail 2014-10-16 16:59:32 -07:00
Santhosh Edukulla 4825017cc7 Fixed coveirty defects for concurrency, variable comparison etc
Signed-off-by: Santhosh Edukulla <santhosh.edukulla@gmail.com>
2014-08-14 21:54:46 +05:30
Santhosh Edukulla 5efded3ae9 Fixed few coverity issues reported 2014-08-11 17:52:32 +05:30
Santhosh Edukulla f9e11540c7 Fixed few coverity issues 2014-08-11 16:02:19 +05:30
Santhosh Edukulla 6bccf5ff41 Fixed coverity reported concurrency issues 2014-08-06 17:28:49 +05:30
Wido den Hollander 74862fada5 CLOUDSTACK-7121: Make IPv6 preference over IPv4 configurable
Also set the logging to info instead of debug
2014-07-30 16:26:09 +02:00
Anthony Xu 330c4ba578 completed the new vmsync TODOs in the code.
removed old vmsync logic
2014-07-28 12:51:37 -07:00
Wido den Hollander 5091d0f5c5 CLOUDSTACK-7121: agent: Make IPv4/IPv6 preference configurable
This allows us to have the Agent connect to the Management Server
over IPv6 if that is listening on :::8250

With this patch it is possible to deploy a IPv6-only KVM Agent where
IPv4 traffic is still forwarded over the bridges, but the KVM Agent
itself does not have IPv4 connectivity.
2014-07-27 12:00:44 +02:00
Alex Huang be5e5cc641 All Checkstyle problems corrected 2013-12-12 12:26:07 -08:00
wilderrodrigues 2774b62d64 Fixing bugs from Coverity related to Dereferenced Null after check and as return value.
Signed-off-by: Daan Hoogland <daan@onecht.net>
2013-11-27 11:18:00 +01:00
Alex Huang 170f32f171 Broke up some long strings 2013-11-21 07:25:01 -08:00
Alex Huang d620df2bdd Reformatted all of the code. 2013-11-21 06:15:26 -08:00
Alex Huang 224f479974 Removed trailing spaces 2013-11-21 04:08:01 -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
Hugo Trippaers a5caa102a8 Get rid of several warnings and errors in the agent sources 2013-11-04 20:01:13 +01:00
Laszlo Hornyak 5e1ea1a3e4 InputStream use fix in PorpoertiesStorage
- Properties object polulation using PropertiesUtil.loadFromFile
- test added
- the separate FileNotFoundException handling block was removed as the next IOException block is catching it and it is only logging

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-26 17:47:33 +02:00
Laszlo Hornyak eb798d3198 Test for AgentShell.loadProperties
- stream closed after properties load (with commons io)
- test added

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-22 23:35:09 +02:00
Laszlo Hornyak 8d67e15365 Test for AgentShell.parseCommand
- minor cleanups on the method body
  - java 1.5 for loop
  - paramName and paramValue to make the code more readable
  - NumbersUtil replaced by NumberUtils
- Test case for the parseCommand

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-22 23:35:09 +02:00
Laszlo Hornyak a98e038620 removed unused import
just an unused import, nothing extraordinary

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-22 23:35:09 +02:00
Laszlo Hornyak 5d5acadc8b removed unused static field
- s_httpClientManager was not used

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-22 23:35:09 +02:00
Laszlo Hornyak 826c69fd29 ConstantTimeBackoff test and cleanup
- javadoc changed - the old one was copy-pasted from AgentShell
- start and stop method removed - they did the same as the overridden methods
- _counter removed as it was only written, but never read
- remove from _asleep map was moved to a finally block, to make sure it is removed even in case of the thread gets interrupted
- Tests created for the above scenarios.

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2013-10-04 11:24:43 -07:00
Darren Shepherd aed5e9dc2a Add Manage Context framework
The managed context framework provides a simple way to add logic
to ACS at the various entry points of the system.  As threads are
launched and ran listeners can be registered for onEntry or onLeave
of the managed context.  This framework will be used specifically
to handle DB transaction checking and setting up the CallContext.
This framework is need to transition away from ACS custom AOP to
Spring AOP.
2013-10-02 13:09:52 -07:00
Kelven Yang 5820b071b8 CLOUDSTACK-4659: Add the missing feature back for GC VMware worker VMs 2013-09-17 14:06:52 -07:00
Wido den Hollander 4c92c78e2e agent: Remove some more dead code around the Agent upgrade 2013-07-12 14:46:33 +02:00
Wido den Hollander b9972e587c agent: Remove the UpgradeCommand and Answer
This isn't used and handled by the DEB and RPM packaging.
2013-07-12 14:24:40 +02:00
Donal Lafferty 4361418e41 Removed Dead Code from Management Server Hyper-V 2012 Support
Update ImageFormat enum to include VHDX format introduced with Hyper-V
Server 2012.
Remove existing Hyper-V plugin, because it does not work and is dead
code.
Remove references to existing Hyper-V plugin from config files.
Remove Hypervisor.HypervisorType.Hyperv special cases from manager code
that are unused or unsupported.
Specifically, there is no CIFS secondary storage class
"CifsSecondaryStorageResource".  Also, the Hyper-V plugin's
ServerResource is contacted by the management server and not the other
way around.
Add Hyperv-V support to ListHypervisorsCmd API call

Signed-off-by: Edison Su <sudison@gmail.com>
2013-06-27 11:46:02 -07:00
Edison Su a715eb8121 clean up storage related code, and add lru replacement algorithm for cache storage 2013-06-14 15:55:59 -07:00
Hugo Trippaers abb049bc0b Remove some dead code 2013-05-13 17:05:40 +02:00
Hugo Trippaers dcc288c8be Make the classes that get started by jsvc implement Daemon.
Set the daemon version centrally in the pom
2013-05-13 16:53:27 +02:00
Chiradeep Vittal 2e6c65fd34 QuickCloud: sanitize logs for normal running of agents outside systemvm 2013-04-09 14:45:27 -07:00
Chiradeep Vittal e7983b25cc QuickCloud: Enable secondary storage daemon to run outside the system vm 2013-04-09 14:45:25 -07:00
Kelven Yang c235d029ce CLOUDSTACK-1267: Configure log4j in proper place so that it can be initialized correctly in KVM and system VM environment 2013-03-11 19:13:32 -07:00
Wido den Hollander a4521551a3 agent: Log4j should not be initialized in the main method
Since we use JSVC we don't execute the main method, but it is still
there for manually running the Agent.

Initializing log4j in the start method makes sure it also works with JSVC
2013-03-06 16:42:38 +01:00
Kelven Yang 3f2b771e07 CLOUDSTACK-1173: fix the regression caused by life-cycle management changes 2013-03-05 19:03:30 -05:00
Min Chen 0f3a3a9a6d Enable logging in systemvm. 2013-02-20 10:58:18 -08:00
Kelven Yang 176523254e Improve component lifecycle management with system run-level concept 2013-01-30 15:21:02 -08:00