We are happy to announce the release of: senlin 3.0.0: OpenStack Clustering This release is part of the ocata release series. Download the package from: https://tarballs.openstack.org/senlin/ Please report issues through launchpad: https://bugs.launchpad.net/senlin For more details, please see below. 3.0.0 ^^^^^ New Features ************ * A new API "cluster-op" is introduced to trigger a profile type specific operation on all nodes in a cluster. This API is available since API micro-version 1.4. * Docker container profile now supports operations like restart, pause and unpause. * A new, optional parameter "destroy_after_deletion" is added to the cluster-del-nodes request since API micro-version 1.4. * The health manager is improved to use dynamic timers instead of fix interval timers when polling cluster's status. * Error messages returned from API requests are now unified. All parameter validation failures of the same reason returns a similar message. * A configuration option "exclude_derived_actions" is introduced into the "dispatchers" group for controlling whether derived actions should lead into event notifications and/or DB records. * A event_purge subcommand is added to senlin-manage tool for purging events generated in a specific project. * Health policy recovery actions now contains a list of dictionaries instead of a list of simple names. This is to make room for workflow invocations. * Many new operations are added to os.nova.server profile type. These operations can be shown using the "profile-type-ops" API. * Added new *node-operation* API for performing profile type supported operations on a node. * New API "node-op" is introduced for triggering profile type specific operations on a node. This is available since API micro- version 1.4. * Event notifications (versioned) are added to enable senlin-engine to send out messaging events when configured. The old event repo is adapted to follow the same design. * Versioned request support in API, RPC and engine layers. * Basic support for event/notification. * Enables osprofiler support. * Rally plugin for cluster scaling in. * Batch policy support for cluster actions. * Integration test for message receiver. * A new API "profile-type-ops" is introduced to expose the profile type specific operations' schema to end users. * Integrated OSProfiler into Senlin, support using OSProfiler to measure performance of Senlin. * Profile type list and policy type list now returns the support status for each type since API micro-version 1.5. * RPC requests from the API service to the engine service are fully managed using versioned objects now. This will enable a smooth upgrade for the service in future. Upgrade Notes ************* * For resources which has a user, a project and a domain property, the lengths of these columns are increased from 32 chars to 64 chars for a better conformance with Keystone. * New setup configuration items are provided to enable the "message" and/or "database" event generation. Critical Issues *************** * The problem of having clusters or nodes still locked by actions executed by a dead engine is fixed. Security Issues *************** * Multi-tenancy is enhanced so that an admin role user has to respect project isolation unless explicitly asking for an exception. Bug Fixes ********* * Fixed the problem that health manager related configuration options were not properly exposed. * Removed LB_STATUS_POLLING from health policy since LBaaS still cannot provide reliable node status update. * The health policy recovery actions is designed to be a list but the current implementation can only handle one action. This is now explicitly checked. * Fixed the problem that the "updated_at" timestamp of a node was not correctly updated. * The notifications of profile type specific operations were not properly reporting the operation's name. This has been fixed. * Fixed the notification logic so that it uses the proper transport obtained from oslo.messaging. * Fixed bug related to cluster-collect API where the path parameter is None. * When attaching a policy (especially a health policy) to a cluster, users may choose to keep the policy disabled. This has to be considered in the health manager and other places. This issue is fixed. * A nova server, if booted from volume, will not return a valid image ID. This situation is now taken care of. Other Notes *********** * The retrieval of some resources such as actions and policies are optimized to avoid object instantiation. Changes in senlin 2.0.0.0b3..3.0.0 ---------------------------------- 6c484a0 Release notes for final RC of Ocata a7dcfdf Fix start checking condition 651ebcd Fix receiver reference documentation dc2e77d Support 'enabled' in attach callback 54effec Rename get_service_context to get_service_credentials 9a36b10 Fix node show detail image id error 9de60c4 Add db purge in senlin manage 5814299 User reference doc for deletion policy 6c821d6 User reference documentation for zone policy 6dfb47b User reference documentation for region policy 660826e User reference documentation for LB policy (1) 2db4532 Improve params check when resize 9970034 Revise 'cluster_check' RPC fail log 5d1b9ae Tutorial for autoscaling 0813d8a User reference for affinity policy aa2ded7 Use dynamic timer for cluster status polling c9c34bf Update API-REF for the cluster-del-node API f0e5b58 Fix node deletion logic 8b5e5d0 Fixing enabling order for OSProfiler plugins cb670fc Update UPPER_CONSTRAINTS_FILE for stable/ocata b6d8b09 Update .gitreview for stable/ocata a0ed0da Move 'to_dict' to cluster object 25c356a Remove 'load_all' from cluster_policy module 39c8e92 Make room from heat event listener cd119ea Rename 'VM_LIFECYCLE_EVENTS' to 'LIFECYCLE_EVENTS' 33f5e62 Move 'to_dict' to node object 6d6fd5a Driver for glance v2 cde0407 Add 'server_create_image' operation for nova driver 0442035 Revise UUID field checking bd57130 Remove 'load_all' from profile/policy base 3736077 Ensure server zone is updated properly cc3e528 Remove 'load_all' from receiver and action base 907a85d Decision to keep our copy of NonNegativeInteger 4235334 Remove unused notification_sample method 7064036 Add more nova server operations c65d22b Enforce context validation for profiles 321c872 Make rebuild an operation for nova server 1f7813d Revise TODO list and FEATURE list based on meetup 4c9fa8b Updated from global requirements 72021a3 Ensure cluster recovery is triggered after polling e5a65f7 Fix cluster health registry creating issue 9fee8ff Fix cluster health policy attach fail aca026f Typo fix: exisiting => existing b9861bd revise tempest api test for policy 2 b903c35 revise tempest api test for profile/policy types 6338a3c revise tempest api test for node 2 9d4854b revise tempest api test for events 503ba3e revise tempest api test for policy 1 61ec7c8 revise tempest api test for profile 2 40889bf Fix health check enable/disable problem 339cb9f revise tempest api test for profile 1 30693e8 Add 'enabled' column to health registry 8583987 revise versioned objects' exception message 998127d Add developer doc for health policy 0b41c90 Return support status in policy type show 8f29239 Fix typo in policy-type-list related code 8989e76 revise tempest api test for node 1 c5ed386 Return support status in profile type show 9ebd4be revise tempest api test for cluster 5 fa78792 Fix log issue in do cluster check action b5afb16 Add floating ip operations to neutron driver d5d5d5b Promote unit test coverage for ClusterAction.do_recover 0e15e0b Updated from global requirements dfe86f4 Release notes backlog for ocata-3 6a7ed0f Fix receiver create parameter checking 21af422 Perform action check when attach health policy 76d93fa revise tempest api for cluster 4 d3147c7 Remove LB_STATUS_POLLING from health detection type 42ec822 revise tempest api for cluster 3 52953fa Add security_group_find to neutron driver f8129c6 Fix various problems in doc tree 748bc46 revise tempest api for cluster 2 2de93ce Add port_create/port_delete to neutron driver 5c580e4 unify exceptions' message 14cc2d0 revise BadRequest exception message 7117121 Fix cluster-list failed of ResourceNotFound problem c5e4c50 Updated from global requirements 24fc2d1 Fix _add_listener cannot get project ed9f088 improve tempest api for action show c2f0a3f improve tempest test for action list fcc7f28 revise tempest api test for cluster policy 7717991 revise tempest api test for cluster-1 c594da3 Replaced e.message with str(e) 26fc50b Fix cluster-check cannot work problem 8926f2b Revise health policy example cf1de30 Fix user, project, domain columns in sqlalchemy 440b417 Updated from global requirements b535d8b Bump API micro-version to 1.5 c17500a Return support status in profile/policy type list 3bf1136 Revise Profile.from_object name b972215 Revise workflow intergation spec with new recover design b9fd782 Documentation on API changes b7b0e6a Add 'VERSIONS' to all profile/policy types 913d04e Trivial: add the missing comment in do_scale_in 968ec36 Revise cluster action class names d9fecb2 Api support for "destroy_after_deletion" in cluster del nodes e9ebeed Fix bug in ClusterAction._delete_nodes 6ae5836 Revise issue in do_del_nodes cc2ad9c Update api history.rst about destroy_after_deletion 72297dc Replace the definition about action cause in action with it in consts 0d1afa8 Revise Log.Warning in leave operation 1491372 Revise history.rst format for rendering aef2d11 Unit test for ClusterAction.do_update 4836171 Remove conditional "if child:" in _create_nodes c36fda7 Explicitly state that 406 will be raised 475da20 API test for node-operation call 51e15b5 Fix operation handler invocation in node 590a1ec Bump max micro-version for V1 API to 1.4 6ac37be Revise navigation level of "6.3 Reviewing Patches" 6af4709 Split API tests for node actions ec73344 API test for cluster-collect 4de8b2b Split API tests for cluster actions 8f6e6dc Explicitly spell out cloud backend choices a4d44f0 Api-ref update for filter "user_id" in receiver list 625546d Fix coverage test failed problem 7fb2a98 Remove unnecessary coding format in files ae931ed Hook service clean up to lock breaker eac0a93 Api support for filter "user_id" in receiver list 8270e47 Revise webhook middleware 1322a01 Engine support for filter "user_id" in receiver list 4e050f1 Objects support for filter "user_id" in receiver list 4d70b88 Enforce project_safe checking for admin users f7c1084 Extend Senlin to support mistral workflow service d9d0700 Remove NotificationAction field type 398f7e5 Updated from global requirements 32baad1 Trivial: fix typos about stringify 626d7ce DB API for cleaning mess left by dead engine 7599602 Split the unit tests for cluster_action f8765f5 Use call to repleace call2 a569e3c Remove call method in rpc client c67163c Delete python bytecode file 341a6f2 Prepare for removing call method 337c17d Revise FEATURES pipeline 9961b30 Some operations for container profile aecafe2 Additional operations for docker driver bffc1ee Add IntegerParam data type in schema 0521fe6 Remove the temporary flag "rpc_use_object" in config.py 1c3083b Documentation for node-operation API ff26e22 API layer support for node-operation 62d9fe9 Exclude derived actions by default in events dc866f0 Enable healthmgr related opts ab72c5b Add validation to health policy be23d87 Trivial: Revise TODO comments 02cee38 Improve event logging for x_OPERATION actions ab4858b Revise health policy to add action params 64f7137 Add additional description to message config c81e431 API-REF for the cluster-operations API 64b66bc Optimize notification to use its own transport 6d4440f Fix sample health policy yaml files 12e1787 Bumping the version of ClusterDelNodeRequest d25f76f Revise parameter description in config.py d4058b5 Revise the event.rst ec27e2b Trivial: modify the description of node op d9da610 Cover event dispatchers related opts in senlin.conf.sample fc382cc API layer support to cluster-operation API 624b0db Engine support to cluster-operation call dc647fd Action support to CLUSTER_OPERATION c649b5f Replace profile_type_xyz2 with profile_type_xyz d3d4e62 Replace profile_xyz2 with profile_xyz 74e556c revise event notification doc c221b4a Replace webhook_trigger2 with webhook_trigger a051b0c Use policy_* to replace policy_*2 cb730b8 Replace receiver_xyz2 with receiver_xyz df887d8 Request object for cluster-operation 2892e85 Use event_* to replace event_*2 129e558 Use node_* to replace node_*2 a7a9727 Use cluster_* to replace cluster_*2 84e2288 Use request_context to replace request_context2 bc907e5 API-REF documentation for profile-type-ops API 82a47a6 Replace credential_xyz2 with credential_xyz 0c84744 Replace get-revision2 with get-revision 57b7c14 API support for profile_type_ops a4ad800 User/developer doc for event dispatchers 7c27ef2 Add parameter in CLUSTER_DEL_NODES action 7755f85 Correct the key in test_action_base.py a5b46cd Use action_* to replace action_*2 5d604c7 Improve the coverage of node updated_at 482095a Improve error message for Json field validation 1977333 Trivial: remove two TODO items fbdcb51 Trivial: fix pep8 error in rally job plugin 111b003 Engine support to NODE_OPERATION ede9533 NODE_OPERATION action support e3f1450 Node do_operation support 1d4118d Improve Operation schema validation df79902 add missing param about alarm create 63c9d7f Updated from global requirements 3322ab5 Add user and project support in action parse 6cd8046 Trivial: Revise the parameter description in node_get2 580842f Trivial: Revise the code annotation in cluster_collect2 9022785 Trivial: Revise the parameter description in cluster_scale_in2 9b324a9 Remove deadcode about request_context 561642c Trivial: Revise the code annotation in cluster_add_nodes2 6264c4b Add profile_type_ops RPC call f39a053 Trivial: Revise the parameter name of event_get2 06d3f07 Remove deadcode about get_revision 3422cdc Revise the class GetRevisionRequest d221fcd Remove dead code about credential_update 089bafe Add ProfileTypeOpListRequest 3b62d76 Add request object for node operations ceff778 Versioned request and engine support for credential_update d5477d2 Trivial: fix the error description in receiver_list2 35f470c Trivial: fix the error description in receiver_get2 0d5c415 Disable message notification by default f03f6b8 Updated from global requirements 0c082cf fix typo in doc d5068b3 Modify the description of profile validate b7e855f Trivial: fix the parameter description error in _validate_policy 7c18e48 Removes unnecessary utf-8 encoding d60c352 Make soft link _50_senlin.py from enabled folder 12dabd9 Reorg the documentation structure 97ebd36 use receiver_obj to load receiver objects 494181a Api support for get-revision2 3c1e0ca Add get-revision requests in object and service 5bfa76e use action_obj to load action objects bba864d Remove dead code about credential_get 6808f5e API support for credential_get2 9405ee6 use policy_obj to load policy objects cbf46fe Versioned object and engine support for credential_get b31955c Trivial: Arrange the imported objects in alphabetical order 6a4cee9 Fix typo in examples fb43c5a rework profile-get2/list2 fb2bfd4 Fix Senlin tempest plugin 7b6a56e Remove '_get_host_cluster' method from docker profile f844e31 Remove 'get_specified_node' method from container 2d361c7 Add 'do_validate' to docker profile ec341aa revise node api (2) 4feebb0 Support to more nova server operations 480a461 revise node api (1) 644cedb revise action api 7ccbc53 Fix usage of NotImplementedError ae429ec revise profile api 292abeb revise cluster-policy api e3e40d8 revise event API 119f48a revise receiver api 5a2c548 revise profile-types api 1c22df6 use util method to parse request object in policy_types 0b9b783 revise policy-api to use parse_request() b3f036f use util method to parse request obj ae69863 Updated from global requirements aa54b06 Add checking exception in node-list2 7312bab Remove dead code about credential_create ac0c327 API support for credential_create2 6fa4fdd Add checking exception in action_create2 c0fe021 Ensure objects are registered in api process 7ea0ae8 Move event-find into object layer de6a739 Move action-find to object layer 1b56ea9 Enhance the parameter check for "path" 6a5948a Move receiver-find to object layer 71c1c3d Move policy_find to object layer befc4e8 Move profile-find into object layer 940f510 Move 'node-find' to object layer. 677f30f Move cluster-find to object layer cc564b1 Updated from global requirements 9698a00 Add configuration option for event logging 6375191 Release note for Ocata-2 a3e7d49 Versioned request and engine support for credential_create 33d5495 Add name none test for profile_update ec728ac Remove some dead code in rpc client 8542ba8 Add http_proxy_to_wsgi to api-paste 5918e4b handle exception when creating nova server. baef0ab Remove useless decorator for _validate_policy 3696125 Set max_size to cfg.CONF.max_nodes_per_cluster if -1. 07d0210 rally jobs for cluster-scale-in 1fa3099 'project_safe' is a required parameter 8fec06a Fix node dependency handling in docker profile 6935347 Improve DB API for node dependency cfb796c Remove dead code about action-delete b6e8d75 Remove retry logic from lock_acquire f84a1a0 Lookup a random action to execute 995d67b Use util function in cluster API (4) 1b9eba5 Use util function in cluster API (3) 1e8e67d Use util function in cluster API (2) 6dec34e Use util function in cluster API (1) e179ae9 Doc update for node replace 29d127d Utility function for API request conversion 51479b8 Remove dead code about receiver-notify 7aba702 API support for receiver_notify2 300f4a0 Engine support for receiver_notify2 815daea remove dead code related to cluster-policy 7dc18fc remove dead code of cluster-policy-get2 21e9a32 api layer support cluster-policy-get2 470bf7c Fix policy-update in engine layer 7166786 Fix profile-update caused name null cbd79b8 remove dead code of cluster-policy-list 1435f76 api layer support cluster-policy-list2 45a7aaa engine service support cluster-policy-list2 702c449 engine service support cluster-policy-get2 2a556cb fields obj support cluster-policy-get2 edbd937 Remove dead code about node_create in engine layer 92537bf Add engine support for action_delete2 2f9021a Request object for action-delete 474aaab Add engine support for action_create2 eef14a6 Add version map search to base object 013e853 Versioned request object for receiver_nofity 3733516 Augment request context with api microversion 074908e Updated from global requirements c68aab1 Fix implementation of docker profile deletion 426a086 Request object for action-create 6818855 fields obj support cluster-policy-list2 8dbe43b Fix object attributeError when node update 5a33ec4 Add a TODO item for oslo.messaging version bump 179b2f8 kill dead code in engine service and rpc 5e13ee1 api support webhook-trigger2 cfa8548 engine service support webhook-trigger2 caf5ef3 Remove 'ProfileTypeNotMatch' exception type 4861674 Remove 'InvalidParameter' exception type 3af7a92 fields object support webhook trigger bdd3249 Correct the installation doc, fix path of openrc 4307e0f Move 'parse_bool_param' to api common 34db568 Remove 'validate_sort_params" 6f17b83 Replace 'parse_int_param' with 'get_positive_int' 63799e5 Fix docker create class method 3da316a Fix profile create - call subclass methods 8bd5749 Temporarily disable failed receiver integration test c956421 Rework profile_create call a654684 Remove 'InvalidSchemaError' exception type e4d3361 Replace 'SpecValidationFailed' with 'InvalidSpec' 1db16b0 Refactor exception types for schema/constraints 7d23859 Chnage exception type for policy type not found c800687 Get both event drivers into action f784508 Change exception type for profile type not found 6ad1738 Rename 'status' parameter to 'phase' in db driver d20ce53 Remove redundant parameters from event interface af21c41 Further simplify event module c93385c Further simplify event dispatch interface f1fe45d Add event dispatcher pluggin infrastructure 476cb53 Updated from global requirements 565c104 Fix import method to follow community guideline 8d76e8f Rename node/cluster dependency key name 55e0d04 Remove dead code about receiver-delete 592dd90 API support for receiver-delete2 fce557b Add a TODO item about test c7f7a3a Minor change on event code in action modules fad37c6 Add consts definition for notification priority and phase bd8f341 Remove request id TODO item 9e9d037 Trivial: revise class InternalError comment 7316e55 Extract common logic into base class 0b83480 Simplify database driver for notification/events 4718411 Fix event calls from action base cd39fd9 Tweak 'cluster' and 'node' member of actions 9a2d5b1 Remove event logging for action signal 12c2381 Forbid deleting a cluster if it is referenced by container nodes 03e6ff7 Forbid deleting vm nodes from a cluster which have containers running on 15d68db Minor tweak to Database event driver 5ed2c51 Remove dead codes related to profile_type in rpc layer 7fb97b0 Remove dead codes related to profile_create in engine layer. 3eff6f1 Remove dead codes related to profile_validate in engine layer f8074c8 Message driver for event notification 0f8fdcf Versioned notifications for node actions a469b9a Merge all notification objects/payloads 5695e8f Show team and repo badges on README 618a081 Updated from global requirements a40b0bc Remove dead codes related to profile_type_get in engine layer 70a9f5d Remove dead codes related to profile_type_list in engine layer b082b28 Add/delete container node profile id to/from vm cluster 'dependents' property 659525a Notification for cluster actions 1bcd46c Trivial: remove some redundant comment 1f6e9bd Allow None to be passed for Exception payload cb19dad Add a hacking check rule 4f72db3 Update .gitignore fc11c32 Revise status_reason when create container fail f51ad09 API support for profile-create2 270c0f7 Engine support for profile-create2 006b896 Tweak base objects/fields for notification 99d31fb Exception payload for error notification e0e05f3 New fields for versioned notification 9748b00 Remove NotificationPayloadBase class 1bdc36f Registry support for notification classes c747d57 Fix devstack plugin setup 9da0f69 Updated from global requirements 3c4e636 Remove dead code about event get f1df661 Remove dead code about event-list 7f74832 Fix nova resource leak fba443a API support for profile_type_get2 2368a82 Engine support for profile_type_get2 8f51521 API support for profile_type_list2 a5eb516 Engine support for profile_type_list2 dde1beb revise error in replace-nodes unit test 33d86e7 Modify the cli in doc of policy attach command 405d2ff Versioned request objects for profile_type 19e85f7 Engine support for receiver_delete2 44505b5 Versioned request object for receiver-delete 36facf6 Remove dead code related to profile-delete in engine layer a59acaa Remove dead code related to profile-update in engine layer 005aac8 Remove dead code related to profile-get in engine layer 6fc6463 Fix an error in integration test 1ccbc9f Update host node 'dependents' when create/delete container node 9a5b682 API support for profile-validate2 3292d9e Move notifications object down one level a51e19f revise error handling in cluster-delete 8149388 revise error handling in cluster-del-nodes 744e864 revise error handling in cluster-add-nodes 6d6f8a0 Api support for event_get2 8e9df10 Add engine support for event_get2 58b0d98 Add request object for event-get 13a6af7 revise error handling in replace_nodes 5f8865e Revise event dump to use the DB driver 4839c08 Support action project_safe in db layer 388d3c3 Add sort key "cluster_id" for event list 6ea729c Remove dead code about action get e4d4bd3 Revise action's raise catch c8d2a8b Remove dead code about action list d99336b Api support for event_list2 e1ef2fe Add TODO item about referencing existing pool 4e60f44 Support sort key "oid" in event list 33569fd remove some useless rpc code 6c96a22 remove dead code about policy-type-list aa98cac api support policy-type-list2 6a33bf7 Engine support for profile-validate2 bbdc0b8 Revise versioned object fields for profile-create2 5ba7512 Updated from global requirements fcbb4e3 Add engine support for event_list2 3921538 Add request object for event-list e9570e2 Revise the DB event dumper c0905e8 Revise ex_lbas.yaml cannot be found eb05e6e Update the cli in doc of policy command 2569165 API support for profile-get2 fd52869 API support for profile-update2 b47d9b6 Move event database driver out of engine 337e5ab Remove unsupported sort key "user" 9e24b33 add batch policy spec 90585cf Remove unsupported sort key "priority" b71c082 remove dead code in rpc d17ed4e Revise profile-validate2 object fields de708e7 Remove dead code related to profile list b4d0ebc APi support for profile-delete2 acc74ed Engine support for profile-delete2 9e885ac Engine support for profile-update2 bdab7b3 Updated from global requirements 7b3513c fix policy-list2 error c39ebf0 engine service support policy-type-list2 ad958d0 fields support policy-type-list2 ad290e0 Fix environment unit test 0b23e18 Move approved spec into the 'approved dir 3d72ebc API support for profile-list2 16d7890 Engine support for profile-list2 db1e3c3 Enable dummy (empty) objects 1545d23 Engine support for profile-get2 b54c366 Remove dead code about receiver_get2 4551ea5 Use receiver_get2 in webhook middleware ebd932b remove dead code about policy-type-get c34ff29 api layer support policy-type-get2 8b34c42 Fix unit test for policy_validate 69c016c API support for receiver_get2 4ebf94f Engine support for receiver-get bcd79bb engine service support policy-type-get2 1bc0467 Add toggle in devstack plugin to run senlin-api under Apache2 1d726ac versioned obj support policy type get v2 677d0cd Api support for action_get2 e81a44b Add engine support for action_get2 9fe1181 Add request object for action-get 5115859 remove dead code of policy delete 4791b7f remove dead code of policy create c701fb6 api support policy- create2 7d8ff51 engine service support policy create v2 0d5153a Fix unstable test about policy_update 8f1d4fb prepare for policy-create v2 7754f7e Api support for action_list2 0534100 remove dead code in policy validate 23a84df api support policy validate v2 dbd4da1 engine service support policy validate v2 a2380cc fields support policy-validate2 5f736d3 Remove dead code about receiver list cbd1dc2 API support for receiver_list2 cd563e7 A spec for generic event/notification support 354784b Add support to have Senlin API run under Apache 64af753 Add engine support for action_list2 b8bf4a9 Revise TODO list 60a002b Add request object for action-list a25c755 Versioned request object for receiver get afea612 Updated from global requirements f43e66d Versioned objects for profile request 555b162 api layer support policy delete v2 fa3e42b Replace oslo_utils.timeutils.isotime b0c67cd Updated from global requirements b62c22c Remove container nodes information from dependents property of cluster 0e9c8a3 Replaces uuid.uuid4 with uuidutils.generate_uuid() de6c5c9 Move container spec to approved dir d920ffd Ensure /v1 endpoint returns proper version info d0d67e8 engine support policy delete v2 dc93a29 remove dead code in policy update 9d227a6 api support policy update v2 4d74d63 engine work prepare for policy update v2 17bb9c9 Engine support for receiver_list2 1fda9b9 Versioned request object for receiver list 61388cd Fix an error in API reference for receiver list 0ebe263 Remove some obsolete rpc client calls 9176577 Minor fix on node-create API 1a2f90f Remove dead code about receiver_create2 381253d API support for receiver_create2 0e9f9c5 Engine support for receiver_create2 8677843 remove dead code in policy get 2d2c46d api support policy get v2 0ff348b engine support policy get v2 e041997 remove dead code in policy list a389702 Versioned request object for receiver create b6132f8 Further remove some useless RPC client code 770e274 Remove dead code when migrating to cluster-delete v2 a5fbe15 API layer rework for cluster-delete fd81cdd Object and engine prep for cluster-delete v2 469b3c5 api support policy list v2 e0f37b8 Updated from global requirements 6f26991 engine prepare for policy list v2 fbcb54f Fix order in updating lock table and action table 70edb59 support versioned resource for policy 518fe0c Remove dead code about node check/recover f2b1b25 Remove dead code after migrating cluster-collect 68c52c7 API support for node_check2 and node_receove2 e3b0f30 API support to cluster-collect v2 801f938 Engine support to cluster-collect v2 738a74a Versioned object for cluster-collect request 5b58136 Fix an error in API reference for receiver create ccb1d87 Split action name definition for cluster and node 779cb39 Remove dead engine code about replace nodes e33bc9e API support to cluster-replace-nodes v2 a29beaa Engine layer cluster-replace-nodes v2 97b6a0b Request object for replace nodes request e89ea97 Engine support for node_check2 and node_recover2 45468d5 Verioned req object for node check/recover 86e7ab0 Add UniqueDict field type b614c47 Remove dead code about node-delete 6eb870d API support for node_delete2 780b346 Versioned req object and engine support for node delete 6e80bdb Add filters "policy_name" and "policy_type" for policy binding list 557776a Remove some dead code in rpc client ee1766b Remove dead code about cluster check/recover ef6db86 Updated from global requirements 503db8b Tune health manager to use new RPC 5efc333 API layer support to cluster check/recover v2 7b4070c Engine support to objectified cluster check/recover 093b7cf Versioned objects for check/recover requests 2fd686f remove dead code in node action layer b058729 Kill dead code wrt cluster policy detach/update 4c305d3 check size constraint in cluster action layer 375de2f API layer objectified policy detach and update 8718bf4 Engine support for policy update/detach 9482e60 Request object for policy update and detach 9439d71 Remove dead engine code wrt cluster policy attach 58df918 API layer support for cluster-policy-attach2 8ff5303 Integration test for message receiver cc41c98 Engine layer cluster-policy-attach2 8c3ab04 Request object for cluster policy attach operation 5f55e50 Remove dead code about node update aabae3a API support for node_update2 e5998ae Engine support for node_update2 b04db0e Remove engine dead code related to scaling 00e3fe0 API support for cluster scale v2 b855ca8 Engine support for cluster scale in/out v2 68d2cc3 Objects for scaling requests 1fcc584 Add request objects for node update 56b67ae cluster delete action handler for batch policy bd10698 Rename request object classes for cluster/node list 24d9948 Minor revise clustering_client for tempest test 2ed11d8 Add Zaqar messaging client for tempest integration test 2c6429c batch policy support "cluster delete" e2b9d35 Fix status_reson when active nodes equal to desired c914eb1 Add a bandit environment to tox a4fd97b Clean DETECTION_TYPES definition in health_policy module f4f6f34 Clean action name definition in cluster and node modules e567237 Clean cluster status definition in cluster module 3f6e892 Revise cluster_policy_get_by_type 9f04bd6 Minor revise normalize_req 3c8a935 Add cluster_policy_get_by_name to db api b069fcb Updated from global requirements 7836c92 Add unit test in test_cluster_update_cluster_bad_status 04d0149 Remove dead code about node get 069aa6a API support for node_get2 f082d38 Request object and engine support for node_get e5409e3 Add "policy_type" and "policy_name" to CLUSTER_POLICY_ATTRS 05ad95e Remove dead code about node-list 518bbc1 API support for node_list2 f89fc22 Add engine support for node_list2 e551d95 Add request object for node-list 33de348 Modify node status const using b51a39c Remove redundant parameter comment 25ee32a Add developer doc for osprofiler 2a5aa0d Standardize log translation f623022 Clean node status definition in node module 9ae9d86 Remove get_session 29d899c Add NODE_STATUSES definition into consts 6560290 Use 'openstack' command-client to replace 'senlin receiver-create' 4f444b6 Remove dead code about node_create 913a96e log.exception should use _LE of i18n 5a01445 Add API support for node_create2 59130cb Add engine support for node_create2 3f1f274 functional test for batch policy d800499 action handler support batch policy bee7f7d Request object for node-create a865fc5 Remove dead code related to cluster resize 7fee0ef API support for cluster-resize2 fad485c Use openstack command-client to replace some deprecated senlin commands 213a1be Updated from global requirements 0d0551b Revise cluster.rt to rt 2be8d4c Add request/response sample for policy validate API doc 89f4b96 Tune enum fields for validation d83b06b Add request/response sample for profile validate API doc ffb1a90 Configure Zaqar options in devstack plugin a801f67 Engine support for cluster-resize2 76d5e60 Add missed requirement of keystoneauth1 09f29e5 Stricter validation for cluster-create b10a120 Updated from global requirements 9e5f2fc Support batch policy 0e2b031 Request object for cluster-resize 3df1e20 Add 'Boolean' and 'AdjustmentType' fields 1cbc7b3 Remove dead code for cluster-del-nodes a21432c API support for cluster-del-nodes2 2a13c91 Engine support for cluster-del-nodes2 4203ad9 Object for cluster-del-nodes request c47253d Remove dead code from engine 05e39e1 Remove dead code from api layer da1bfa8 Switching to objectified RPC d4e45a8 Address a TODO in message receiver 84fb370 Fix engine and engine test cases 6fb6be3 Fix cluster list checking d552ab1 Trivial: fix a comment typo in engine service b2b0379 Stricter object fields checking 48533ce Validation when cluster create missing cluster key c0a1559 API support to cluster-add-nodes2 27ff242 Engine support for cluster-add-nodes2 5d59242 ClusterAddNodes request object 533e0dc Add IdentityList field type df17e67 Api Ref of cluster replace nodes 070a01d API support for cluster-update2 8877846 Updated from global requirements 8b0592f Engine support for cluster-update2 d403726 Versioned object for cluster update request bde9677 API support to cluster_get2 5e021e4 Engine support to cluster_get2 d72ed72 Add ClusterGetRequest object 6e683c3 API and functional test for node replace f7fd5ba Integrate osprofiler into Senlin 6e26e29 Add developer doc for message receiver c2cb0d3 API cluster-list2 22b0570 Add user doc for message receiver f390b2f Some guidelines for code reviews bf0130a Support api microversion for tempest API test 43132f8 Add 'jsonschema' to required packages b0e953a Engine support to cluster_list2 1e8fbd5 Engine service cluster_list2 8b0da69 Change max api version 04ef635 Updated from global requirements bac2123 Updated from global requirements 1896742 Revise lb_policy version 1279249 Add ClusterListRequestBody to objects 433e964 Add Sort field as versioned object 45d83c3 Add cluster.rt[nodes] type unit test aabb3f5 desired_capacity default value to min_size default value 0ab1224 Revise node-list in engine layer f169942 Fix typos in glossary.rst & profiles.rst 5c026f1 Reworked cluster-create API 5bac5fb Tweak name field b4ca17d Prepare engine for object deserialization 1090056 Util function for normalizing requests 5877a62 Tweak object base classes for serialization c78f80c Add RPC call for passing object as parameters 8aa420c API support node replace fff2e6b Add config option 'rpc_use_object' 374c806 Prepare engine and client for object parameters 4c3d19b Engine service cluster request v2 b14d372 Add Capacity/CapacityField to senlin objects 7a0396e Add missing 'timeout' field to cluster create ea92f14 Fix some pep8 errors ba178ce Enforce max_nodes_per_cluster in check_size_params af07b62 Fix miscalculation of desired_capacity a02b13f Set workers min=0 670b40d Correct desired when create node with cluster_id c0e8ca7 Fix the incorrect version and release details 93a2777 Updated from global requirements 290d5d2 Updated from global requirements 122d38a Updated from global requirements 4e7dd22 Fix typo in comment d06646b Revision to TODO list b3b52dd More unit tests for schema module fb5acf7 More unit tests for schema module ee532d7 Stop adding ServiceAvailable group option b54982e Fix typos in parameters.yaml 511f0eb More unit tests for schema module 188c496 Updated from global requirements 05f9019 Schema unit tests 8e8df45 Display symbolic levels instead of numbers in event list e32f1e8 Fix action context usage in message receiver 551b61a Fix typos in parameters.yaml 14d53ad Fix message receiver eefea23 Fix incorrect order of params of assertEqual() 138de6e Release notes for newton RC2 2bae36f Quick fix on message receiver 7d5a4ee Implement receiver notification handling 2ad337f Updated from global requirements d1ab25a Unit test for Json get_schema 78dbe8d Add doc about cloud_backend ddfc65e Removed redundant 'the' 18d8d08 Fix typos in context.py&clusters.rst 44baebd Add Apache 2.0 license to source file 6a74b1a Updated from global requirements 9f4d615 Avoid Forcing the Translation of Translatable Variables bbdc783 Modify minor problem in service.py 8b66649 Fix some typos 2b43726 Using assertTrue() instead of assertEqual(True) cff2562 Fix service manage cleanup 6e22519 Versioned object for cluster create request a67f9b0 Update description for filters and sort 20b3198 Address a TODO item in integration test 25e6048 Fix typo in docstrings 23f4eaf Fix typo in docstrings 002bd20 Fix typo d48230e Add Name and NameField support 26dadae Creating new keypair for integration test 0c07d74 Revise the bindings.rst c119a80 change cb to cm 905aff3 Add to_json_schema support to Object fields a14f0e8 Revise the clusters.rst 5053942 Specifying proper subscription ttl e096d4e Revise the actions.rst 80e438c Fix CONF.set_override for type enforcement 6978c10 Fix integration test 2d04ea8 Fix the valid keys for filtering event list in doc 01eed0e Support template_url for heat profile c1cb708 Add missing ":command:" markup for the command 69a618b Fix error in user/action.rst 74315da Fix evnet-list show 6450d3e Updated from global requirements 44251d9 revise the "cluster-policy-attach" bb7ce2f Use constant instead of 'STRING' 0b076dc Fix handling of ResourceNotFound that is not thrown a0645ee Translate error-level log messages for LOG.error 0b567c3 Correct reraising of exception b23367d Cleanse zaqar driver for functions unused e292d5f Revise TODO.rst fd1ee5a Add new config option for Zaqar queue 3e96189 Define new config options for receiver notification 32d16e2 Use new min_size/max_size when eval cluster status e1cf9c1 Fix FEATURES.rst error 2f9b240 Fix cluster_check from health manage be52efd Fix error in registry.py b671b6b Fix error in tutorial/receivers.rst f62a607 Fix user/policy_types.rst error e5feaa0 Revise schema _validate_version 045b1ee Replace 'MagicMock' with 'Mock' 233975e Fix typos in api-ref/source/policies.inc b078325 modify profile_update 8815826 Correct driver calls in affinity policy 4580228 Cleanse nova driver for unused calls 355e79f Clean neutron driver interface for unused calls db36a6e Remove unuse keystone interface functions f066a44 Move is_engine_dead test to common utils 32d59e9 Fix capacity calculation in scaling actions 7b7e364 Tweak CLUSTER_DEL_NODES for base capacity 875f9c7 Tweak CLUSTER_ADD_NODE action for capacity update 5e0e156 Updated from global requirements 07d4ad5 fix typos in TODO.rst 71d5986 Fix a typo in template.rst f7ea48b Fix typos in scaling_policy.py & service.py 54978f4 Fix error in authorization.rst 383d0cf Fix error in deletion_v1.rst 1656f45 Service support node replace 27c8d47 Delete engine from db when stop engine 350040f fix typos in doc 11a88f0 Remove a finished TODO in comment 0080669 Fix a typo in utils.py 8cc86b0 Fix nova_v2 test driver 7402288 Use new desired when eval cluster status faf6b7c Fix error in actions.rst 9046b8a Fix error in template.rst 1e33351 Fix error in container-cluster 905ea2e Remove unnecessary setUp 6fa7a07 Rework NODE_LEAVE action logic a72e6ef Modify test_service_manage_report_cleanup e72c80c Fix error in FEATURES.rst f2141cd Fix error in status.yaml 3ceb3d9 Fix misspelling in parameters.yaml ce1f607 Fix error in actions.inc 936f0b8 Rework NODE_JOIN logic dc7904e Fix error in conf.py 59891d1 Rework NODE_DELETE action logic 4259837 Rework NODE_CREATE action logic 7edb329 API and engine support for receiver notifying 07576db Support cluster replace action 375268b Select roles for trust building 654409a Fix error in senlin-manage.rst 0d5e470 Fix some typos in doc ff7223b Fix error in receivers.rst e28c0ea Fix error in policies.rst 67ca4d5 Remove is_admin judge in xyz_get_all at db layer f67c830 Enable senlin policy for dashboard via devstack installation baba687 Rebase deletion policy on real capacity 5d79494 Rebase LB policy on real capacity of cluster 6931b68 Rebase affinity policy on real capacity of clusters 4801d78 Enable health policy to base on real capacity d42e638 Add a unit test for deletion policy 59dd2cc Have zone policy based on real capacity 7fb6ecb Have region policy to base on current capacity e914c23 Have RESIZE based on real capacity 2c9c978 Enable parse_resize_params to handle current capacity 5696020 Rebase RESIZE operation on actual capacity bfc9a46 Allow node count api to carry filters 853b1d1 Fix error in membership.rst 4508deb Fix error in clusters.rst 28b3de3 Fix error in glossary.rst 2188dca Update XyzNotFound to ResourceNotFound f687f28 Remove ClusterBusy exception d89f79b Refact ResourceInUse exception ce042e6 Unit test for policy load with db object c8cc352 Fix specs/container-cluster.rst error 6d8044a Update reno for stable/newton 17a62db Release notes for RC1 release f27ec4b Remove block_device_mapping property 508c91d Fix typo 'duplcate' to 'duplicate' ab13b26 Fix various properties of nova server profile bee0de7 Fix docs for node and cluster 5054da1 profile "type_name" synchronize with code dcb6685 Fix error in authorization.rst a5b4c7f fix typo in doc a529bcc Fix error in zone_v1.rst 55aff44 Fix user/Nodes.rst error 6c89807 Remove PROFILE_METADATA in profile_list filter_whitelist a39b4f3 Fix error in region_v1.rst 19f942e Fix user/bindings.rst synchronize with code 7f807e8 Synchronize user/profiles.rst with code c4eb45d Fix user/clusters.rst error 98bc739 Fix error in loadbalance_v1.rst 101facb Fix error in deletion_v1.rst 65e1a06 Fix error in action.rst a75905e Rework nova server update logic 78a77ed Unit tests for password checking/update 51951b1 Rework _delete_interfaces and unit tests 437a264 Fix error in policy_type.rst f2472b8 Add exception handling to _add_interfaces 78d8867 Rework network validation logic for nova server 90a62de Optimize EResourceOperation 27911c6 Rework network update logic for nova server d203962 Tweak network update for nova server b86de75 Update class `ResourceInUse` 2069f86 Refine flavor validation 4d4b600 Updated from global requirements a4dfcc0 Rework name checking and updating 4e7d765 TrivialFix: Remove cfg import unused ce888c6 Rework _update_image logic for nova server profile 6042327 [api-ref] Re-allocation response example 61ef6db remove ProfileInUse 6771f84 Fix error in profile_type.rst 3e8952e Use scenario for image and keypair unit tests dd30178 Use scenario for az and flavor validation test 0bcf387 Revise feature items cddc870 Split nova server profile unit tests 33cff24 Tweak exception handling for server update 8d75470 [api-ref] Correct parameter's type eb9842b Build trust for receiver creation 8600b2b Delete dependencies when deleting a node or cluster 27b8a5e Tweak not found exception handling 9d17e42 Fix unit test for nova server network validation 2fec710 Improve network resolving for nova server dffd1dd Improve get_details for heat stack profile babce56 [api-ref] Update version response table 68ca4fe Guard against nova exception when creating server fc73747 Rename 'keypair_get_by_name' to 'keypair_find' 8fd7648 [api-ref] Add 'Show All' button 12a120d Add 'dependents' property to cluster e9fe2f1 Grammatical mistake in node.rst bad8db0 Misspelling in cluster.rst 846de6b Guard against driver error for nova validation e310f0e [api-ref] Remove parameters unused d1fa751 Rework rally test jobs cbe7f05 Handle exceptions of docker driver f54fc21 Fix receiver create 26f0c6a Store node relationship into 'dependents' 75f6d96 Don't import unused logging e79455f [api-ref] Correcting parameter's types fe6712c Fix API history doc 48e44cc Modify parameters' type be0ac27 Misspelling in the comment of cluster and node aad8911 cluster-check results the status error 84d139e Refactor CLUSTER_RESIZE handler 3538688 Refactor container profile for driver calls 2bb8476 Refactor heat stack profile driver calls 1eeac5a Refactor nova server profile for driver calls 5fbc05e Refactor LB policy for driver calls b589e67 Add dependents column to node and cluster tables 5284f2a Updated from global requirements 717b4be Refactor region placement policy 48494c1 Refactor zone placement policy aa43f97 Refactor affinity policy a198eab Some more release notes for newton-3 Diffstat (except docs and test files) ------------------------------------- .gitignore | 2 + .gitreview | 1 + FEATURES.rst | 188 +- HACKING.rst | 1 + README.rst | 9 + TODO.rst | 85 +- api-ref/source/actions.inc | 4 +- api-ref/source/clusters.inc | 100 + api-ref/source/conf.py | 4 +- api-ref/source/index.rst | 2 + api-ref/source/nodes.inc | 47 + api-ref/source/parameters.yaml | 177 +- api-ref/source/policies.inc | 20 +- api-ref/source/policy_types.inc | 19 + api-ref/source/profile_types.inc | 76 +- api-ref/source/profiles.inc | 12 + api-ref/source/receivers.inc | 2 +- .../source/samples/cluster-del-nodes-request.json | 3 +- .../source/samples/cluster-operation-request.json | 10 + .../samples/cluster-replace-nodes-request.json | 7 + api-ref/source/samples/node-operation-request.json | 5 + .../samples/policy-type-show-response-v1.5.json | 63 + .../samples/policy-types-list-response-v1.5.json | 52 + .../source/samples/policy-validate-request.json | 16 + .../source/samples/policy-validate-response.json | 25 + .../source/samples/profile-type-ops-response.json | 15 + .../samples/profile-type-show-response-v1.5.json | 69 + .../samples/profile-types-list-response-v1.5.json | 28 + .../source/samples/profile-validate-request.json | 22 + .../source/samples/profile-validate-response.json | 31 + api-ref/source/status.yaml | 4 +- api-ref/source/versions.inc | 12 +- devstack/README.rst | 3 + devstack/apache-senlin.template | 34 + devstack/lib/senlin | 96 +- .../user/scenarios/autoscaling_ceilometer.rst | 272 --- etc/senlin/api-paste.ini | 9 +- etc/senlin/policy.json | 4 + examples/policies/batch_policy.yaml | 15 + examples/policies/health_policy_event.yaml | 15 + examples/policies/health_policy_poll.yaml | 15 +- examples/profiles/README.rst | 2 +- rally-jobs/plugins/senlin_plugin.py | 51 +- rally-jobs/senlin-senlin.yaml | 67 +- ...ction-policy-optimization-06ea45eb3dcbe33a.yaml | 4 + .../affinity-policy-fix-72ae92dc8ffcff00.yaml | 3 + .../capacity-calculation-4fd389ff12107dfb.yaml | 6 + .../cluster-node-dependents-3bdbebd773d276d1.yaml | 4 + .../cluster-node-status-e7fced162b415452.yaml | 3 + .../notes/cluster-ops-433a5aa608a0eb7f.yaml | 5 + .../notes/container-ops-e57d096742202206.yaml | 4 + ...estroy-nodes-after-remove-37bffdc35a9b7a96.yaml | 4 + releasenotes/notes/doc-fixes-cd8c7006f8c66387.yaml | 3 + .../notes/dynamic-timer-67f053499f4b32e2.yaml | 4 + .../enforce-multi-tenancy-ee27b9bfec7ba405.yaml | 4 + .../notes/error-messages-bd8b5a6d12e2c4af.yaml | 4 + ...event-for-derived-actions-8bd44367fa683dbc.yaml | 5 + .../notes/event-purge-db868a063e18eafb.yaml | 4 + .../fix-health-mgr-opts-99898614f37c5d74.yaml | 4 + .../forbid-cluster-deletion-a8b0f55aaf0aa106.yaml | 4 + .../notes/health-lb-polling-32d83803c77cc1d8.yaml | 4 + .../health-policy-actions-936db8bc3ed08aec.yaml | 7 + .../keystone-conformance-4e729da9e88b4fb3.yaml | 5 + ...ck-break-for-dead-service-0abd3d3ea333622c.yaml | 4 + .../notes/message-receiver-3432826515f8e70c.yaml | 4 + .../metadata-query-profile-9c45d99db7b30207.yaml | 4 + .../more-policy-validation-ace6a4f890b2a500.yaml | 4 + .../more-server-operations-dd77e83b705c28f0.yaml | 4 + .../notes/node-op-api-a7bede34c51854ee.yaml | 4 + releasenotes/notes/node-ops-115d9d64f6e261db.yaml | 4 + .../node-update-timestamp-43b9639e22267598.yaml | 4 + .../notification-operations-c7bdaa9b56e5011f.yaml | 4 + .../notification-support-a7e2ebc816bb4009.yaml | 8 + .../notification-transport-ae49e9cb1813cd96.yaml | 4 + .../nova-server-validation-60612c1185738104.yaml | 4 + .../notes/nova-update-opt-7372e4d189e483aa.yaml | 4 + .../nova-update-validation-dca7de984c2071d1.yaml | 4 + releasenotes/notes/ocata-2-c2e184a0b76231e8.yaml | 8 + .../notes/path-check-collect-1e542762cbcd65d2.yaml | 3 + .../notes/policy-enabling-61d0c38aecf314eb.yaml | 5 + .../notes/profile-type-ops-1f0f2e6e6b5b1999.yaml | 4 + .../receiver-create-trust-bd5fdeb059e68330.yaml | 3 + .../receiver-filter-by-user-ab35a2ab8e2690d1.yaml | 4 + .../notes/remove-bdm-v1-4533677f3bca3c5d.yaml | 4 + .../notes/senlin-osprofiler-fc8cb7161bdb1a6e.yaml | 4 + .../notes/server-image-id-27c1619fa818c6a0.yaml | 4 + .../notes/service-cleanup-afacddfacd7b4dcd.yaml | 4 + .../notes/support-status-f7383a53ddcae908.yaml | 4 + .../notes/template-url-19075b68d9a35a80.yaml | 3 + .../versioned-rpc-requests-2df5d878c279e933.yaml | 5 + releasenotes/source/conf.py | 3 +- releasenotes/source/index.rst | 1 + releasenotes/source/newton.rst | 6 + requirements.txt | 33 +- senlin/api/common/util.py | 60 +- senlin/api/common/wsgi.py | 14 +- senlin/api/middleware/context.py | 7 +- senlin/api/middleware/fault.py | 22 +- senlin/api/middleware/trust.py | 19 +- senlin/api/middleware/version_negotiation.py | 8 +- senlin/api/middleware/webhook.py | 12 +- senlin/api/openstack/history.rst | 47 +- senlin/api/openstack/v1/actions.py | 37 +- senlin/api/openstack/v1/build_info.py | 4 +- senlin/api/openstack/v1/cluster_policies.py | 32 +- senlin/api/openstack/v1/clusters.py | 440 ++-- senlin/api/openstack/v1/events.py | 39 +- senlin/api/openstack/v1/nodes.py | 196 +- senlin/api/openstack/v1/policies.py | 91 +- senlin/api/openstack/v1/policy_types.py | 24 +- senlin/api/openstack/v1/profile_types.py | 31 +- senlin/api/openstack/v1/profiles.py | 108 +- senlin/api/openstack/v1/receivers.py | 107 +- senlin/api/openstack/v1/router.py | 18 + senlin/api/openstack/v1/version.py | 18 +- senlin/api/openstack/v1/webhooks.py | 14 +- senlin/cmd/api.py | 4 + senlin/cmd/api_wsgi.py | 41 + senlin/cmd/engine.py | 2 + senlin/cmd/manage.py | 41 + senlin/common/config.py | 98 +- senlin/common/constraints.py | 12 +- senlin/common/consts.py | 92 +- senlin/common/context.py | 30 +- senlin/common/exception.py | 142 +- senlin/common/messaging.py | 53 +- senlin/common/profiler.py | 46 + senlin/common/scaleutils.py | 68 +- senlin/common/schema.py | 279 ++- senlin/common/utils.py | 107 +- senlin/db/api.py | 43 +- senlin/db/sqlalchemy/api.py | 360 ++- senlin/db/sqlalchemy/migrate_repo/manage.py | 13 + .../versions/006_node_cluster_dependents_column.py | 28 + .../migrate_repo/versions/007_placeholder.py | 15 + .../migrate_repo/versions/008_placeholder.py | 15 + .../migrate_repo/versions/009_placeholder.py | 15 + .../versions/010_user_project_length.py | 26 + .../migrate_repo/versions/011_registry_enable.py | 22 + senlin/db/sqlalchemy/models.py | 4 + senlin/drivers/base.py | 2 - senlin/drivers/container/docker_v1.py | 17 + senlin/drivers/openstack/glance_v2.py | 31 + senlin/drivers/openstack/keystone_v3.py | 51 +- senlin/drivers/openstack/lbaas.py | 7 +- senlin/drivers/openstack/neutron_v2.py | 107 +- senlin/drivers/openstack/nova_v2.py | 156 +- senlin/drivers/openstack/zaqar_v2.py | 48 +- senlin/engine/actions/base.py | 139 +- senlin/engine/actions/cluster_action.py | 678 ++++-- senlin/engine/actions/node_action.py | 154 +- senlin/engine/cluster.py | 133 +- senlin/engine/cluster_policy.py | 22 - senlin/engine/dispatcher.py | 35 +- senlin/engine/environment.py | 4 +- senlin/engine/event.py | 244 +- senlin/engine/health_manager.py | 214 +- senlin/engine/node.py | 149 +- senlin/engine/receivers/base.py | 42 +- senlin/engine/receivers/message.py | 204 +- senlin/engine/receivers/webhook.py | 6 +- senlin/engine/registry.py | 13 +- senlin/engine/scheduler.py | 42 +- senlin/engine/senlin_lock.py | 56 +- senlin/engine/service.py | 2376 ++++++++++--------- senlin/events/__init__.py | 0 senlin/events/base.py | 49 + senlin/events/database.py | 63 + senlin/events/message.py | 69 + senlin/hacking/checks.py | 17 +- senlin/objects/__init__.py | 14 + senlin/objects/action.py | 65 +- senlin/objects/base.py | 86 +- senlin/objects/cluster.py | 58 + senlin/objects/cluster_policy.py | 25 + senlin/objects/event.py | 25 +- senlin/objects/fields.py | 521 ++++- senlin/objects/health_registry.py | 12 +- senlin/objects/node.py | 94 +- senlin/objects/notification.py | 292 ++- senlin/objects/policy.py | 44 + senlin/objects/profile.py | 44 + senlin/objects/receiver.py | 55 +- senlin/objects/requests/__init__.py | 0 senlin/objects/requests/actions.py | 69 + senlin/objects/requests/build_info.py | 19 + senlin/objects/requests/cluster_policies.py | 37 + senlin/objects/requests/clusters.py | 237 ++ senlin/objects/requests/credentials.py | 39 + senlin/objects/requests/events.py | 46 + senlin/objects/requests/nodes.py | 109 + senlin/objects/requests/policies.py | 95 + senlin/objects/requests/policy_type.py | 28 + senlin/objects/requests/profile_type.py | 36 + senlin/objects/requests/profiles.py | 97 + senlin/objects/requests/receivers.py | 97 + senlin/objects/requests/webhooks.py | 31 + senlin/objects/service.py | 4 + senlin/policies/affinity_policy.py | 41 +- senlin/policies/base.py | 127 +- senlin/policies/batch_policy.py | 150 +- senlin/policies/deletion_policy.py | 14 +- senlin/policies/health_policy.py | 90 +- senlin/policies/lb_policy.py | 46 +- senlin/policies/region_placement.py | 29 +- senlin/policies/scaling_policy.py | 26 +- senlin/policies/zone_placement.py | 31 +- senlin/profiles/base.py | 128 +- senlin/profiles/container/docker.py | 283 ++- senlin/profiles/os/heat/stack.py | 93 +- senlin/profiles/os/nova/server.py | 997 +++++--- senlin/rpc/client.py | 324 +-- .../api/actions/test_action_list_negative.py | 66 +- .../api/actions/test_action_show_negative.py | 11 +- .../api/api_versions/test_api_version_show.py | 2 +- .../api/api_versions/test_api_versions_list.py | 2 +- .../test_cluster_policy_list_negative.py | 49 +- .../test_cluster_policy_show_negative.py | 47 +- .../tempest/api/clusters/test_cluster_action.py | 324 --- .../api/clusters/test_cluster_action_negative.py | 975 +------- .../tempest/api/clusters/test_cluster_add_nodes.py | 270 +++ .../tempest/api/clusters/test_cluster_check.py | 80 + .../tempest/api/clusters/test_cluster_collect.py | 96 + .../tempest/api/clusters/test_cluster_create.py | 4 + .../api/clusters/test_cluster_create_negative.py | 51 +- .../tempest/api/clusters/test_cluster_del_nodes.py | 265 +++ .../api/clusters/test_cluster_delete_negative.py | 71 +- .../api/clusters/test_cluster_list_negative.py | 76 +- .../api/clusters/test_cluster_policy_attach.py | 153 ++ .../api/clusters/test_cluster_policy_detach.py | 161 ++ .../api/clusters/test_cluster_policy_update.py | 185 ++ .../tempest/api/clusters/test_cluster_recover.py | 85 + .../api/clusters/test_cluster_replace_nodes.py | 337 +++ .../tempest/api/clusters/test_cluster_resize.py | 352 +++ .../tempest/api/clusters/test_cluster_scale_in.py | 118 + .../tempest/api/clusters/test_cluster_scale_out.py | 117 + .../api/clusters/test_cluster_show_negative.py | 36 +- .../api/clusters/test_cluster_update_negative.py | 90 +- .../tempest/api/events/test_event_list_negative.py | 88 +- .../tempest/api/events/test_event_show_negative.py | 11 +- .../tempest/api/nodes/test_node_action_negative.py | 73 +- .../tempest/api/nodes/test_node_create_negative.py | 121 +- .../tempest/api/nodes/test_node_delete_negative.py | 22 +- .../tempest/api/nodes/test_node_list_negative.py | 98 +- .../tempest/api/nodes/test_node_show_negative.py | 22 +- .../tempest/api/nodes/test_node_update_negative.py | 56 +- .../api/policies/test_policy_create_negative.py | 63 +- .../api/policies/test_policy_delete_negative.py | 33 +- .../api/policies/test_policy_list_negative.py | 65 +- .../api/policies/test_policy_show_negative.py | 22 +- .../api/policies/test_policy_update_negative.py | 60 +- .../api/policies/test_policy_validate_negative.py | 67 +- .../api/policy_types/test_policy_type_list.py | 26 + .../api/policy_types/test_policy_type_show.py | 16 + .../policy_types/test_policy_type_show_negative.py | 13 +- .../api/profile_types/test_profile_type_list.py | 21 + .../api/profile_types/test_profile_type_show.py | 16 + .../test_profile_type_show_negative.py | 13 +- .../api/profiles/test_profile_create_negative.py | 77 +- .../api/profiles/test_profile_delete_negative.py | 33 +- .../api/profiles/test_profile_list_negative.py | 56 + .../api/profiles/test_profile_show_negative.py | 22 +- .../api/profiles/test_profile_update_negative.py | 47 +- .../api/profiles/test_profile_validate_negative.py | 46 +- .../tempest/functional/test_cluster_membership.py | 73 + .../integration/test_nova_server_cluster.py | 25 +- .../api/middleware/test_version_negotiation.py | 52 +- .../unit/api/openstack/v1/test_cluster_policies.py | 136 +- .../unit/api/openstack/v1/test_policy_types.py | 185 +- .../unit/api/openstack/v1/test_profile_types.py | 279 ++- .../unit/engine/actions/test_attach_policy.py | 109 + .../unit/engine/actions/test_cluster_action.py | 2067 +---------------- .../unit/engine/actions/test_replace_nodes.py | 282 +++ .../unit/engine/actions/test_update_policy.py | 79 + .../unit/engine/service/test_cluster_policies.py | 415 ++-- .../unit/engine/service/test_profile_types.py | 56 +- .../unit/objects/requests/test_cluster_policies.py | 99 + .../unit/objects/requests/test_credentials.py | 79 + .../unit/objects/requests/test_policy_type.py | 45 + .../unit/objects/requests/test_profile_type.py | 62 + .../unit/profiles/test_nova_server_validate.py | 679 ++++++ setup.cfg | 16 +- test-requirements.txt | 15 +- tools/config-generator.conf | 1 + tox.ini | 12 +- 493 files changed, 39545 insertions(+), 19799 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 7e6dba2..e1677f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5 +5 @@ -pbr>=1.6 # Apache-2.0 +pbr>=1.8 # Apache-2.0 @@ -7 +7 @@ Babel>=2.3.4 # BSD -docker-py<1.8.0,>=1.6.0 # Apache-2.0 +docker-py>=1.8.1 # Apache-2.0 @@ -10 +10,3 @@ jsonpath-rw<2.0,>=1.2.0 # Apache-2.0 -keystonemiddleware!=4.1.0,!=4.5.0,>=4.0.0 # Apache-2.0 +jsonschema!=2.5.0,<3.0.0,>=2.0.0 # MIT +keystoneauth1>=2.18.0 # Apache-2.0 +keystonemiddleware>=4.12.0 # Apache-2.0 @@ -12,2 +14,2 @@ microversion-parse>=0.1.2 # Apache-2.0 -openstacksdk>=0.9.4 # Apache-2.0 -oslo.config>=3.14.0 # Apache-2.0 +openstacksdk>=0.9.13 # Apache-2.0 +oslo.config!=3.18.0,>=3.14.0 # Apache-2.0 @@ -15 +17 @@ oslo.context>=2.9.0 # Apache-2.0 -oslo.db>=4.10.0 # Apache-2.0 +oslo.db>=4.15.0 # Apache-2.0 @@ -17,2 +19,2 @@ oslo.i18n>=2.1.0 # Apache-2.0 -oslo.log>=1.14.0 # Apache-2.0 -oslo.messaging>=5.2.0 # Apache-2.0 +oslo.log>=3.11.0 # Apache-2.0 +oslo.messaging>=5.14.0 # Apache-2.0 @@ -20 +22 @@ oslo.middleware>=3.0.0 # Apache-2.0 -oslo.policy>=1.9.0 # Apache-2.0 +oslo.policy>=1.17.0 # Apache-2.0 @@ -23,2 +25,3 @@ oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.16.0 # Apache-2.0 -oslo.versionedobjects>=1.13.0 # Apache-2.0 +oslo.utils>=3.18.0 # Apache-2.0 +oslo.versionedobjects>=1.17.0 # Apache-2.0 +osprofiler>=1.4.0 # Apache-2.0 @@ -27 +30 @@ pytz>=2013.6 # MIT -PyYAML>=3.1.0 # MIT +PyYAML>=3.10.0 # MIT @@ -29 +32 @@ qpid-python;python_version=='2.7' # Apache-2.0 -requests>=2.10.0 # Apache-2.0 +requests!=2.12.2,>=2.10.0 # Apache-2.0 @@ -35,2 +38,2 @@ sqlalchemy-migrate>=0.9.6 # Apache-2.0 -stevedore>=1.16.0 # Apache-2.0 -WebOb>=1.2.3 # MIT +stevedore>=1.17.1 # Apache-2.0 +WebOb>=1.6.0 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index 8596c30..d95bde9 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6 +6 @@ -coverage>=3.6 # Apache-2.0 +coverage>=4.0 # Apache-2.0 @@ -12,2 +12,2 @@ oslotest>=1.10.0 # Apache-2.0 -os-testr>=0.7.0 # Apache-2.0 -PyMySQL!=0.7.7,>=0.6.2 # MIT License +os-testr>=0.8.0 # Apache-2.0 +PyMySQL>=0.7.6 # MIT License @@ -21,3 +21,6 @@ os-api-ref>=1.0.0 # Apache-2.0 -oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 -sphinx!=1.3b1,<1.3,>=1.2.1 # BSD -reno>=1.8.0 # Apache2 +oslosphinx>=4.7.0 # Apache-2.0 +sphinx!=1.3b1,<1.4,>=1.2.1 # BSD +reno>=1.8.0 # Apache-2.0 + +# Bandit build requirements +bandit>=1.1.0 # Apache-2.0