Commit Graph

77 Commits

Author SHA1 Message Date
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
Rohit Yadav a5de2714e9 CLOUDSTACK-9299: Out-of-band Management for CloudStack
Support access to a host’s out-of-band management interface (e.g. IPMI, iLO,
DRAC, etc.) to manage host power operations (on/off etc.) and querying current
power state in CloudStack.

Given the wide range of out-of-band management interfaces such as iLO and iDRA,
the service implementation allows for development of separate drivers as plugins.
This feature comes with a ipmitool based driver that uses the
ipmitool (http://linux.die.net/man/1/ipmitool) to communicate with any
out-of-band management interface that support IPMI 2.0.

This feature allows following common use-cases:
- Restarting stalled/failed hosts
- Powering off under-utilised hosts
- Powering on hosts for provisioning or to increase capacity
- Allowing system administrators to see the current power state of the host

For testing this feature `ipmisim` can be used:
https://pypi.python.org/pypi/ipmisim

FS:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Out-of-band+Management+for+CloudStack

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2016-05-10 13:16:03 +05:30
Rohit Yadav f30c52a16c CLOUDSTACK-8562: DB-Backed Dynamic Role Based API Access Checker
This feature allows root administrators to define new roles and associate API
permissions to them.

A limited form of role-based access control for the CloudStack management server
API is provided through a properties file, commands.properties, embedded in the
WAR distribution. Therefore, customizing API permissions requires unpacking the
distribution and modifying this file consistently on all servers. The old system
also does not permit the specification of additional roles.

FS:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+Role+Based+API+Access+Checker+for+CloudStack

DB-Backed Dynamic Role Based API Access Checker for CloudStack brings following
changes, features and use-cases:
- Moves the API access definitions from commands.properties to the mgmt server DB
- Allows defining custom roles (such as a read-only ROOT admin) beyond the
  current set of four (4) roles
- All roles will resolve to one of the four known roles types (Admin, Resource
  Admin, Domain Admin and User) which maintains this association by requiring
  all new defined roles to specify a role type.
- Allows changes to roles and API permissions per role at runtime including additions or
  removal of roles and/or modifications of permissions, without the need
  of restarting management server(s)

Upgrade/installation notes:
- The feature will be enabled by default for new installations, existing
  deployments will continue to use the older static role based api access checker
  with an option to enable this feature
- During fresh installation or upgrade, the upgrade paths will add four default
  roles based on the four default role types
- For ease of migration, at the time of upgrade commands.properties will be used
  to add existing set of permissions to the default roles. cloud.account
  will have a new role_id column which will be populated based on default roles
  as well

Dynamic-roles migration tool: scripts/util/migrate-dynamicroles.py
- Allows admins to migrate to the dynamic role based checker at a future date
- Performs a harder one-way migrate and update
- Migrates rules from existing commands.properties file into db and deprecates it
- Enables an internal hidden switch to enable dynamic role based checker feature

Deprecate commands.properties

- Fixes apidocs and marvin to be independent of commands.properties usage
- Removes bundling of commands.properties in deb/rpm packaging
- Removes file references across codebase

Reviewed-by: John Burwell <john.burwell@shapeblue.com>
QA-by: Boris Stoyanov <boris.stoyanov@shapeblue.com>

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2016-04-25 14:52:02 +05:30
Rohit Yadav a4f552d46d cloudstack: set next version to 4.5.3-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-09-14 09:59:40 +05:30
Rohit Yadav 7385441807 Updating pom.xml version numbers for release 4.5.2
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-08-19 14:42:54 +05:30
Rohit Yadav 20ce346f3a CLOUDSTACK-8457: SAML auth plugin improvements for production usage
* Move config options to SAML plugin
  This moves all configuration options from Config.java to SAML auth manager. This
  allows us to use the config framework.
* Make SAML2UserAuthenticator validate SAML token in httprequest
* Make logout API use ConfigKeys defined in saml auth manager
* Before doing SAML auth, cleanup local states and cookies
* Fix configurations in 4.5.1 to 4.5.2 upgrade path
* Fail if idp has no sso URL defined
* Add a default set of SAML SP cert for testing purposes
  Now to enable and use saml, one needs to do a deploydb-saml after doing a deploydb
* UI remembers login selections, IDP server

- CLOUDSTACK-8458:
    * On UI show dropdown list of discovered IdPs
    * Support SAML Federation, where there may be more than one IdP
        - New datastructure to hold metadata of SP or IdP
        - Recursive processing of IdP metadata
        - Fix login/logout APIs to get new interface and metadata data structure
        - Add org/contact information to metadata
        - Add new API: listIdps that returns list of all discovered IdPs
        - Refactor and cleanup code and tests

- CLOUDSTACK-8459:
    * Add HTTP-POST binding to SP metadata
    * Authn requests must use either HTTP POST/Artifact binding

- CLOUDSTACK-8461:
    * Use unspecified x509 cert as a fallback encryption/signing key
      In case a IDP's metadata does not clearly say if their certificates need to be
      used as signing or encryption and we don't find that, fallback to use the
      unspecified key itself.

- CLOUDSTACK-8462:
    * SAML Auth plugin should not do authorization
      This removes logic to create user if they don't exist. This strictly now
      assumes that users have been already created/imported/authorized by admins.
      As per SAML v2.0 spec section 4.1.2, the SP provider should create authn requests using
      either HTTP POST or HTTP Artifact binding to transfer the message through a
      user agent (browser in our case). The use of HTTP Redirect was one of the reasons
      why this plugin failed to work for some IdP servers that enforce this.
    * Add new User Source
      By reusing the source field, we can find if a user has been SAML enabled or not.
      The limitation is that, once say a user is imported by LDAP and then SAML
      enabled - they won't be able to use LDAP for authentication
    * UI should allow users to pass in domain they want to log into, though it is
      optional and needed only when a user has accounts across domains with same
      username and authorized IDP server
    * SAML users need to be authorized before they can authenticate
        - New column entity to track saml entity id for a user
        - Reusing source column to check if user is saml enabled or not
        - Add new source types, saml2 and saml2disabled
        - New table saml_token to solve the issue of multiple users across domains and
          to enforce security by tracking authn token and checking the samlresponse for
          the tokens
        - Implement API: authorizeSamlSso to enable/disable saml authentication for a
          user
        - Stubs to implement saml token flushing/expiry

- CLOUDSTACK-8463:
    * Use username attribute specified in global setting
      Use username attribute defined by admin from a global setting
      In case of encrypted assertion/attributes:
      - Decrypt them
      - Check signature if provided to check authenticity of message using IdP's
        public key and SP's private key
      - Loop through attributes to find the username

- CLOUDSTACK-8538:
    * Add new global config for SAML request sig algorithm

- CLOUDSTACK-8539:
    * Add metadata refresh timer task and token expiring
        - Fix domain path and save it to saml_tokens
        - Expire hour old saml tokens
        - Refresh metadata based on timer task
        - Fix unit tests

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

This closes #489
2015-06-29 12:25:02 +02:00
Rohit Yadav 4ba72a877c Updating pom.xml version numbers for release 4.5.2-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-07 15:33:01 +02:00
Rohit Yadav 0eb4eb2370 Updating pom.xml version numbers for release 4.5.1
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-04 12:17:03 +02:00
Rohit Yadav c198dfdb7a Update pom and version usage to 4.5.1-SNAPSHOT
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-03-12 12:13:18 +05:30
Rohit Yadav 59b2cbafa1 developer: re-add deleted configuration
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-15 20:05:45 +05:30
Rohit Yadav 188924751e CLOUDSTACK-7219: Fix NPE, log warning when config item is missing from scope
- Cherry picked from Daan's fix 63fbd16dd1
- Added another check if configDepot returned null
- Removed developer prefill values

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-01-15 19:13:40 +05:30
Rohit Yadav d276c0faab developer: increase disable thresholds global settings for developers
- Increases the disable thresholds for developers
- Removes the use local storage for systemvms

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit 314e2dacee)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-12-08 21:59:10 +05:30
Rohit Yadav 6379ca4548 CLOUDSTACK-6738: pre-seed expunge delay and interval to 60s
(cherry picked from commit 723eaefdf9)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-09-15 14:48:14 +02:00
Rohit Yadav 3df104e20d developer: enable saml plugin for developers by default
Deploydb with a -P developer profile will run developer-prefill, in that we
enable the SAML plugin by default but only for developers

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-09-12 13:40:20 +02:00
Rohit Yadav 137655d4e1 developer: add commonly used glboal config in developer-prefill.sql
This commit adds three commonly used config that developers usually set
after fresh deployment. The account cleanup timeout is set to 60s to speed up
BVT runs.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
(cherry picked from commit a68d898682)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2014-08-01 16:54:10 +02:00
Hugo Trippaers 4402685e11 Update master to 4.5.0-SNAPSHOT 2014-03-14 14:55:26 +01:00
John Kinsella 7d8d1e9597 Last commit broke developer/pom.xml. fixing that. 2014-02-26 09:33:58 -08:00
John Kinsella c68834635c Fix the developer database simulator deploy procedure so it includes the mysql database driver 2014-02-26 09:04:56 -08:00
Hugo Trippaers e883877c7a Fix the developer database deploy procedure so it includes the mysql database driver 2014-02-25 11:58:02 +01:00
Hugo Trippaers ac00ab0087 Cleanup all mysql dependencies and set all to provided. 2014-02-21 14:55:11 +01:00
Hugo Trippaers cf715ff491 Bump 4.3.0 to 4.4.0 in master 2013-11-21 16:01:15 +01:00
David Grizzanti dfb81ac127 CLOUDSTACK-5080: Hypervisor Capabilities table missing entry for Simulator
Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-11-11 12:11:28 +05:30
Hugo Trippaers 15a97ec412 Cleanup pom.xml in various projects to properly use managed versions and other defaults 2013-09-21 17:21:06 +08:00
Alex Huang 66cca4d9ac Fixed up the pom.xml to use dependencies specified in cloudstack pom 2013-08-02 13:51:47 -07:00
Chip Childers 8225374138 Updating pom.xml version numbers for release 4.3.0-SNAPSHOT
Signed-off-by: Chip Childers <chipchilders@apache.org>
2013-08-01 10:35:00 -04:00
Alex Huang 486e0d02f8 Fixed the applicationcontext.xml because I removed a class. oh kelven oh kelven, when can we get back our java based config for core components...this is so bad for refactoring 2013-07-29 19:13:33 -07:00
Edison Su 58f0007f75 turn on simulator code, only when -Psimulator is used 2013-07-10 14:31:47 -07:00
Prasanna Santhanam f1134da8df Group storage subsystem components for spring
Breaking down storage components among oss, nonoss and simulator
contexts. The default components are loaded by

OSS - applicationContext + componentContext
NonOSS - applicationContext + nonossComponentContext
Simulator - applicationContext + simulatorComponentContext

provider beans are are selectively overridden for simpler configuration.
Where possible beans are loaded by local reference.

<list merge=true> does not unfortunately work perfectly for bean merging
the providers causing a bit of bloat. Explore for later.

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-06-29 13:53:41 +05:30
Min Chen 18aeef3ef1 Merge branch 'master' (up to commit
c30d9be3ce) into object_store.
2013-06-12 11:20:32 -07:00
Prasanna Santhanam 25fac83326 developer pom is for developer environment
Naming the developer project to "Apache CloudStack developer mode"
instead of tools. Tools are cli, marvin, etc

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-06-04 14:26:40 +05:30
Edison Su 4e4112fcec fix attach volume for kvm 2013-05-23 13:51:46 -07:00
Vijayendra Bhamidipati 2dbdc46337 CLOUDSTACK-1734: Make SHA1 default password encoding mechanism
Description:

	Making SHA256SALT the default encoding algorithm to encode
	passwords when creating/updating users.

	Introducing a new configurable list to allow admins to
	separately configure the order of preference for encoding
	and authentication schemes.

	Since passwords are now sent by clients as clear text,
	fixing the Plain text authenticator to check against the
	password passed in rather than its md5 digest.
2013-04-02 17:40:50 -07:00
Prasanna Santhanam 792db8b5cc simulator: removing cyclic dependency from simulator
The database creator caused a cyclic dependecny in the simulator which
is removed with this commit. Additionally the simulator profile is now
merged with developer profile and a test for server health is included

Steps to run:
$ mvn -Pdeveloper clean install
$ mvn -Pdeveloper -pl developer -Ddeploydb
$ mvn -Pdeveloper -pl developer -Ddeploydb-simulator
$ mvn -pl client jetty:run

To deploy an adv. zone and test the server health:
$ mvn -Pdeveloper,marvin -Dmarvin.config=`find . -name simulator.cfg` -pl :cloud-marvin test

Conflicts:
	pom.xml

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-03-20 10:36:43 +05:30
Rohit Yadav a32c6d5c9d db: Fix deploydb, make sure scripts are in path
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-25 11:00:56 +05:30
Rohit Yadav 357b4e63ac Revert "make the create database work"
This reverts commit 1c77ae6237.
2013-02-25 11:00:56 +05:30
Alex Huang 1c77ae6237 make the create database work 2013-02-23 19:07:22 -08:00
Rohit Yadav 80d58b6c73 CLOUDSTACK-1317: Bump CloudStack package version to 4.2.0-SNAPSHOT in all poms
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-20 16:42:56 +05:30
Rohit Yadav 16e81130cc db: Fix developer's deploydb and cloud-setup-databases for rolling update
- Fix developer prefill to use 4.0's schema
- Fix developer/pom.xml and cloud-setup-databases to not run create-schema-view,
  the upgrade path is configured to do a rolling update and set it up

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-16 17:18:42 +05:30
Rohit Yadav f2ae6dcda9 db: Remove and merge 4.1-new-db-schema.sql to schema-40to410.sql
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-16 12:44:45 +05:30
Prasanna Santhanam 05437d0e97 maven pom: put apache cloudstack tools together in umbrella pom
minor pom refactor to put all the tools under one placeholder pom.
Also adds a profile for marvin to run deployDataCenter via mvn options.

$mvn -Pdeveloper,marvin -pl :cloud-marvin -Dmarvin.config=<path/to/config>

OR
$cd tools/marvin
$mvn -Pmarvin -pl :cloud-marvin -Dmarvin.config=path/to/config

will deploy the datacenter using the marvin.config property's value

Signed-off-by: Prasanna Santhanam <tsp@apache.org>
2013-02-15 20:53:41 +05:30
Rohit Yadav 733ec50d46 maven: don't use process-test-resources lifecycles, target are skipped if test are
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-12 12:17:25 +05:30
Rohit Yadav 44287d20c0 CLOUDSTACK-1181: Find by catalina.home property first
The previous commit fails if a person had defined CATALINA_HOME already.
Instead of system env variable, get any passed variable 'catalina.home' and find
the file in that path.

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-11 12:14:46 +05:30
Rohit Yadav 23f7267753 CLOUDSTACK-1181: Fix Environment so db.properties is in classpath
We export CATALINA_HOME to utils/ which is the path which a lot of utils class would
check and read db.properties file. This is exactly what is done in production.
The utils classes (Transaction, Encryption*Checker etc.) would use PropertiesUtil
which tries to find it in CATALINA_HOME.

The only issue is, even if someone defined an override file, the encryption type
would be still read from the db.properties file. For all other params, the override
file would be re read and datastores would be reinitialized

BUG-ID: CLOUDSTACK-1181

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-11 12:00:16 +05:30
Kelven Yang 296c20332d Merge javelin into master 2013-02-01 14:40:45 -08:00
Kishan Kavala fc925022bd Upgrade changes for Region schema. Made region_id not null 2013-02-01 13:49:57 +05:30
Rohit Yadav e70143c1dc maven: Fix developer/pom.xml to use DatabaseCreator
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-18 18:11:42 -08:00
Rohit Yadav b45cdef5d9 DatabaseCreator: Process db props, sql and upgrade classes separately
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-17 18:25:27 -08:00
Rohit Yadav cafe881acb maven: Fix deploydb in developer/pom.xml to pass through DatabaseCreator
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-17 16:10:07 -08:00
Rohit Yadav 1db3a84a03 maven: Fix deploydb in developer/pom.xml
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-16 17:25:55 -08:00
Kelven Yang 727fab71cb Disable StorageProvider, storageType introduced in Javelin new code, temporarily, to make existing code run 2013-01-16 14:16:01 -08:00