Commit Graph

18 Commits

Author SHA1 Message Date
Andreas Jaeger e61cc055ab Retire repository
Fuel (from openstack namespace) and fuel-ccp (in x namespace)
repositories are unused and ready to retire.

This change removes all content from the repository and adds the usual
README file to point out that the repository is retired following the
process from
https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project

See also
http://lists.openstack.org/pipermail/openstack-discuss/2019-December/011647.html

Depends-On: https://review.opendev.org/699362
Change-Id: I10917e42829b459c41ca46514faa72fc46abf7be
2019-12-18 09:52:23 +01:00
Alexander Kislitsky 4fa861fa8a Distributed serialization implementation
Distributed serialization is implemented with python distributed
library. We have scheduler for jobs management and workers for
jobs processing. Scheduler is started on the master node as well
as set of workers on it. Also workers are started on all nodes.
In the cluster settings we can select the type of serialization
and nodes statuses that allows serialization on it. By default
nodes with status 'ready' are excluded from the workers list.

For data serialization we are using only nodes from the cluster
where serialization is performing.

Before the computation fresh nailgun code is sent to the workers
as zip file and it will be imported for job execution. So we always
have fresh nailgun code on the workers.

In one job we are processing chunks of tasks on the workers. This
approach significantly boosts performance. The tasks chunk size
is defined as settings.LCM_DS_TASKS_PER_JOB parameter.

For limiting memory consumption on the master node we use parameter
settings.LCM_DS_NODE_LOAD_COEFF for calculation max number of jobs
in the processing queue.

Synthetic tests of distributed serialization for 500 nodes with
nubmer of ifaces >= 5 performed on 40 cores (4 different machines)
took 6-7 minutes on average.

Change-Id: Id8ff8fada2f1ab036775fc01c78d91befdda9ea2
Implements: blueprint distributed-serialization
2017-03-24 15:15:30 +00:00
Bulat Gaifullin 1380bc8ecf Do not use yaql input data conversion
When root is set to context manually it will not
be converted into immutable object and task serialization
will do faster because it does not spent time to this conversion

Related-Bug: 1569859
Change-Id: I46e4c43a757b78d96eec3edea0f66361afae3d73
2016-09-28 12:44:27 +03:00
Dmitry Guryanov 88e9f5a209 Add ability to get common or node part of context in lcm
The main purpose of this commit is to have an ability
to split configuration file astute.yaml into common
and node parts. Common part is huge and we will
dump it once and also there will be only one instance
of this data in RAM which saves a lot of memory when
you run deploy on many nodes (>100).

This patch adds two new variables to context, which can be
used in yaql_exp: $node and $common for node and common
parts of the context. Functions changed, changed_all,
changed_any, added, deleted don't work for these variables.

DocImpact
Change-Id: I56bf982652a5dc27882e4a401ca9ec124899fed7
Partial-Bug: #1596987
2016-09-09 17:42:48 +03:00
Bulat Gaifullin 8e2220b789 Introduce new orchestration tasks
There are 3 new orchestration tasks:

* master_shell

  Run task on master node with a context of other node. If 'roles'
  selects N nodes, the task will be executed N times.

* erase_node

  Erase node. It's necessary task if we want to remove nodes by means
  of graphs and not pre-hardcoded actions in Astute.

* move_to_bootstrap

  Change node's PXE config to boot via LAN (into bootstrap). As a
  previous one, it's necessary task for deletion graph.

Change-Id: Ie8f852762b837a68e0e0b49e11653a8f2e56a014
Blueprint: graph-concept-extension
2016-08-20 23:38:45 +03:00
Jenkins cde46fbe1f Merge "Extend YAQL context through Nailgun extensions" 2016-06-20 15:59:37 +00:00
Igor Kalnitsky 8b4ac0eb65 Extend YAQL context through Nailgun extensions
It would be very convenient (but not necessary) to extend YAQL context
(i.e. set of helper functions) via Nailgun extensions. That might be
very helpful if end users build their own custom deployments on top of
Fuel.

Change-Id: Ib47d8204ff995517fc9a4d7889de8bbc9c23f227
2016-06-15 13:40:46 +03:00
Bulat Gaifullin 6e22e3b145 Revert "Fixed detecting changes on new nodes"
This reverts commit eff4f2f522.

Change-Id: I62e104c7bd622e6e260bd7a6cef2a09f3d3e3500
2016-06-03 20:14:25 +03:00
Vladimir Kuklin e4fbfe80ed Allow a user to run dry-run deployment
Now following handlers:

     /clusters/:cluster_id/changes/
     /clusters/:cluster_id/changes/redeploy/
     /clusters/:cluster_id/deploy/
     /clusters/:cluster_id/deploy_tasks/

?dry_run=1 that is telling Astute not to run cluster executionat all.

Dry run assumes that it does not actually affect
cluster status regardless of their result.

Also, remove redundant update of nodes statuses to 'deploying'
within OpenStackConfigManager and DeploymentTaskManager as it should be
done by receiever.

Do not set cluster status to 'deployment' for these nodes in order to
retain its real status

Modify stop deployment tests to move failing stop deployment for already
deployed clusters to another test class. Since 9.0 we can run stop
deployment for new clusters.

Change-Id: I374fc86b63af64411d4a5ca45ff6c3680cb44897
Partial-bug: #1569839
2016-05-30 15:46:31 +00:00
Bulat Gaifullin 5630e40e61 The task attributes substitution is called for all tasks
The yaql_exp can be used for calculate dependencies of all tasks
including skipped tasks, so the task attributes traverse should
be called for all task too.
Also added check that dependency is not empty object, because
it is possible when it has been dynamically generated via yaql.

Partial-Bug: 1541309
Change-Id: Ibcb786d2a7917d7583433c0b96f6324be4de759b
2016-05-27 13:01:05 +03:00
Nikita Zubkov 364df8addd Fix obtaining current state in ClusterTransaction
Now we get deployment state from DeploymentHistory model. For every task
we get last success transaction and its state.

Change-Id: I2288bc2bc34023c2ca705f1d3cc6ff48347bf549
Closes-bug: #1572226
2016-04-29 19:04:55 +03:00
Jenkins 8f673be787 Merge "Fixed legacy conditions transformations" 2016-04-15 12:02:13 +00:00
Nikita Zubkov d5a790caab Add exceptions hierarchy
nailgun.errors have a huge set of exceptions but without hierarchy. This
patch remove exception generation from dict and make it explicitly with
python classes and add some exceptions hierarchy. Now all network errors
inherit from NetworkException and same for other exceptions.

Change-Id: I9a2c6b358ea02a16711da74562308664ad7aed97
Closes-bug: #1566195
2016-04-14 17:41:25 +03:00
Bulat Gaifullin 100bb1d4f8 Fixed legacy conditions transformations
The multi field conditions do not transform properly
because the regexp uses greedy algorithm

Change-Id: Iad1d839e640942d3a447b226387273b89c040fcd
Closes-Bug: 1569420
2016-04-13 19:02:52 +00:00
Bulat Gaifullin 133a1a2308 Improved logging in lcm serializer
Added additional debug messages durring serialize tasks
for troubleshooting purpose

Change-Id: I9684b1fb9e976c32323d71f23eef184eafdc53a3
Closes-Bug: 1566905
2016-04-07 14:56:45 +00:00
Georgy Kibardin 141e07e0e6 Disabling strict attributes fetching in legacy expressions
Change-Id: I5e1dba004e5ed0faba99c272d0b403cba79c753f
Closes-Bug: 1564131
2016-03-31 17:07:49 +03:00
Bulat Gaifullin eb1ca9e695 Fixed condition evaluation for task
The condition for task was checked before evaluation of
YAQL expressions.
Also fixed that extra attributes of task were passed to astute.

Change-Id: Iaed23a8d0f263eef5d56281ee383328a6f0a98cc
Closes-Bug: 1563016
2016-03-29 15:07:05 +00:00
Bulat Gaifullin 6d6bb7f169 Introduced LCM serializers
We need separate task serializers for LCM,
because LCM uses context per node for serialize tasks.
It also allows to isolate LCM related code for backward
compatibility with existing environments, that is not ready for LCM.

Change-Id: Ie95a58c8cf86eac1a5c3dbd956fafc401e40fed6
Implements: blueprint computable-task-fields-yaql
2016-03-28 11:48:06 +00:00