Commit Graph

260 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
Vasyl Saienko 9dabe06369 Add Ironic multitenancy support
This patch adds support to deploy Ironic with separate Neutron network
for provisioning baremetal instances.

  * Add NetworkDeploymentSerializer100 as Ironic multitenancy is supported
    from Newton, and we will backport this till stable/newton.
  * Update network scheme generation to create 'vlan' baremetal network,
    assign IPs to Ironic conductors from this network, make them
    accessible from baremetal servers.
  * Add new checkbox at 'Openstack Settings/Additional components' tab
    which allows to define if separate provisioning network should be used
    during deployment. This is a trigger to switch ironic deployment to
    multitenancy case. If not selected old behaviour is kept, 'flat'
    network is used. The checkbox is shown only when Ironic component is
    enabled.

Change-Id: I861a8b3b046202526d6a856c9f2dca2cfaddc887
Related-Bug: #1588380
2017-03-31 10:21:34 +03: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
Igor Gajsin 634b66df45 remove vmware
VMware not supported since Fuel 10.

Implements: blueprint remove-vmware

Change-Id: Ia26a97d13bb9c3d2e838d639efdababbb15f86da
2017-02-14 15:52:27 +00:00
Jenkins 8131924e6d Merge "Ensure that 'dpdk' in serialization before update" 2017-01-18 09:11:58 +00:00
Timur Nurlygayanov d1de5e7e79 Ensure that 'dpdk' in serialization before update
Change-Id: I8c14c25e08defc3c6533f7fbe7ba5f34120e098e
Closes-Bug: #1656783
2017-01-17 20:45:34 +04:00
Jenkins 3529f71f3b Merge "Serialization of OpenstackConfig configuration_options handled" 2017-01-17 14:45:07 +00:00
Dmitry Ukov 54a13c6b97 Serialization of OpenstackConfig configuration_options handled
This is the first step for handling arbitrary data structures
in OpenstackConfig. At this moment we are handling explicit
serialization of the configuration_options.
The future steps are:

- changing configuration data format in the Fuel CLI
- data migration in the Fuel DB
- changing configuration data serialization in Fuel

The future steps are planned to be done for the Fuel 10 release

Change-Id: I6961e3d7a2bc5ae8b9c668c67a0ab5c23792f5b1
Co-Authored-By: Alexander Kislitsky <akislitsky@mirantis.com>
2017-01-17 10:59:35 +03:00
Sergey Abramov 6266d27f15 Serialize only active configs
DeploymentLCMSerializer should return only active OpenstackConfigs

Change-Id: I2adee9e8a40f4295e807a5ff7a2e060793e55b24
Closes-bug: 1632235
2017-01-12 13:10:51 +00:00
Jenkins ccac8ae8ed Merge "Switch provider from ovs to dpdkovs" 2017-01-12 11:59:29 +00:00
Jenkins b6a3b79414 Merge "Add ability to override cpu_masks in node attributes" 2017-01-11 12:39:32 +00:00
Jenkins f36a443837 Merge "Do not lock nodes records for a long time" 2016-12-30 13:34:37 +00:00
Fedor Zhadaev 3e1afb84ca Add ability to override cpu_masks in node attributes
Add ability to override generated values for 'ovs_core_mask'
and 'ovs_pmd_core_mask'.

Change-Id: Ifdc3b45bf4ec5bc3da31966c17be6fd18fc97b39
Closes-bug: #1648371
2016-12-27 11:16:33 +00:00
Georgy Kibardin acf86ab9e2 Do not lock nodes records for a long time
As a part of cluster serialization primary tags on nodes are updated.
This results in updated nodes record to be locked until the transaction
where serialization happens ends. When there is a lot of nodes this
transaction can be very long and, as a result, a lot of node updates by
nailgun agent can be blocked until it ends. At some points this results
in all workers being busy blocking any REST call.

Change-Id: Ie5341290097bddce299bf5726e2607d150c23768
Closes-Bug: #1643024
2016-12-26 04:27:24 +00:00
Michael Polenchuk 8de9e0c54c Switch provider from ovs to dpdkovs
In order to conform to library changes switch
bridge provider from ovs to dpdkovs.

Related-Bug: #1638036
Depends-On: I249b15b799da3b649c5843f71d8eabf8b460f510
Change-Id: I8296cfafa7322babd3831724b88aa253bdb13fec
2016-12-16 16:22:20 +04:00
Evgeny L 77e29ab206 Use only first two number from version in repositories file names
Otherwise during plugin update it creates multiple repository files.

Closes-bug: #1513956
Change-Id: Ie2e8288b3b701f07cb3c180e9b919860b7db562e
2016-12-09 18:03:12 +00:00
Sergey Abramov 4c3d4bdace Bugfix attr rename
rename node attr from replaced_provision_info to
replaced_provisioning_info

Change-Id: I3e714fc6f6454eeb46797f3be10b1c20385a5e18
Closes-bug: 1643143
2016-12-01 10:42:54 +00:00
Artur Svechnikov a6434023f1 Skip empty cpu pinning and hugepages
If there is no specified hugepages or CPU pinning
distributors shouldn't be called. Also changed
initialization of custom_hugepages type.

Change-Id: Iedb819b1da7dcb3877a6a94b9e7cfb93aa949a9e
Closes-Bug: #1594443
(cherry picked from commit 661ce479a6)
2016-11-29 06:37:12 +00:00
Ryan Moe 2b0242f645 Resolve tasks by role tags
This commit switching tasks resolution approach to the tags based one.
Tag - minimal unit what's necessary only for task resolution and can be
mapped to the node through the role interface only. Each role provides set
of tags in its 'tags' field and may be modified via role API. Tag may be
created separately via tag API, but, this tag can not be used unless it's
stuck to the role.

Change-Id: Icd78fd124997c8aafb07964eeb8e0f7dbb1b1cd2
Implements: blueprint role-decomposition
2016-11-17 18:07:30 +03:00
Mikhail Zhnichkov 8ddf244b71 Revert "Resolve tasks by node tags"
This reverts commit e368be6b10.

Change-Id: Ic3ca2ee14afafd9fca3cee43887a1955e71f061e
2016-11-08 16:58:49 +00:00
Mikhail Zhnichkov e032d4f6e8 Revert "Add default tags"
This reverts commit 508dccf9b2.

Change-Id: I63a87f8ca4dbcbff3ce1da36078aa3fd9520566e
2016-11-08 12:42:36 +00:00
Mikhail 508dccf9b2 Add default tags
Tags for rabbitmq, database, keystone and neutron.

Change-Id: I5cbaf58f57845c02550e2b422b269f41eec98322
Implements: blueprint role-decomposition
2016-10-26 10:44:40 +00:00
Andriy Popovych c311746282 Implement mechanism for plugin node attributes
Provide ability for plugins to add additional attributes for nodes.
* Added new NodeAttributesDefaultsHandler handler for getting
  default node attributes.
* Added code stuff for getting and updating additional plugin
  node attributes.
* Added code stuff to serialize plugin node attributes for orchestrator.

Change-Id: I5c6d6f3c815a034683e624b98fa1f360ab4b491c
Implements: blueprint nics-and-nodes-attributes-via-plugin
2016-10-21 19:47:14 +03:00
Ryan Moe e368be6b10 Resolve tasks by node tags
A 'tags' attribute has been added to each role in 'roles_metadata'.
Initially all non-controller roles will only have a tag of their own
role name. This will allow existing tasks which do not have tags
associated with them to work correctly. In the abscence of tags a
task's roles will be used to determine which nodes it will run on.

Implements: blueprint role-decomposition

Change-Id: I390580146048b6e00ec5c42d0adf995a4cff9167
2016-10-17 04:41:24 +03:00
Bulat Gaifullin 95fae7972a Added list of packages to provision info
Provision info already contains list of packages as
string, but fa_builder expects list and conversion from
string to list was done by using yaql expression.
This patch moves this conversion to nailgun side.

Change-Id: I1ad44b7f2e69edbb8b8e28fd7840010af2594cd7
Closes-Bug: 1630275
2016-10-04 18:04:01 +03:00
Bulat Gaifullin 585b9f5974 Fixed problems prevented for calling core serializers from extensions.
Added option skip_extensions for core-serializers, to prevent
loop when core-serializer is called from extension.
Also method process_'deployment_for_node' does not have access
to cluster_info and it is not possible to call 'serialize_node'
from extension because cluster_info was mandatory argument.
Because 'cluster_info' was needed only for provision serialzer,
which is called from LCM serializer, this argument was removed
from serialze_node method.

Change-Id: Ifbf9e4a0b9487605e6268fde0499aecc1e20cb36
Closes-Bug: 1621851
2016-09-12 09:30:38 +00:00
Dmitry Guryanov 7a83ee0cac don't merge common_attrs with node data in deployment_info
The size of deployment_info grows as n^2 depending on
nodes number. That's because common_attrs, which is
merged into each node's contains info about all nodes.

For example for 600 nodes we store about 1Gb of data in
the database. So as first step let's store common_attrs
separately in deployment_info structure inside python
code and in the database.
Also removed old test for migrations, which are not related
to actual database state.

Change-Id: I431062b3f9c8dedd407570729166072b780dc59a
Partial-Bug: #1596987
2016-08-31 17:28:11 +03:00
Bulat Gaifullin 3073c61361 Reduced cluster and release information in deployment_info
Reduced cluster and release attributes which are added to
deployment_info on serialization

Change-Id: I98a960ad4b4c1ac12f25059e9b429fdca97cffb4
Closes-Bug: 1618002
2016-08-30 10:18:11 +03:00
Ilya Kutukov 84c438604d Plugins v 5.0.0 support in plugins adapters
Now it is possible:
* To bring release as plugin
* To define multiple graphs types for the plugin

Change-Id: Idcac14e6f4055ca0e488efc2cc23945036a493d9
Implements-Blueprint: release-as-a-plugin
2016-08-25 04:57:44 +03:00
Igor Kalnitsky 69df395ed1 Serialize provisioning info within deployment serializer
Because there is no difference between provision graph
and deployment graph from nailgun side,
the graph execution context should contain both
provison info and deployment info. This patch
extends LCM deployment info serializer to include
provison info in serializer output.

Change-Id: I672e8fde1a662bd190dcbda0869c290ff110e2d2
Blueprint: graph-concept-extension
2016-08-22 08:29:51 +00:00
Artur Svechnikov 4d718e7954 Revert "Do not call CPU&HugePages distributors"
Lack of testing was found, it's impossible to specify hugepages if
host supports only 2M huge pages due to incorrect validation.

This reverts commit 9bd61c68dc.

Change-Id: I7945d165764608ca7ee8ac5f46463267718678f5
2016-07-29 11:56:30 +00:00
Artur Svechnikov 9bd61c68dc Do not call CPU&HugePages distributors
If there is no specified hugepages or CPU pinning
distributors shouldn't be called. Also changed
initialization of custom_hugepages type.

Change-Id: I3835c9d163ba2692adf34193b57510060158b8e3
Closes-Bug: #1594443
2016-07-27 14:38:26 +00:00
Bulat Gaifullin 5167527dc4 Added methods for patching deployment info per object
Instead of wide callbacks process_deployment or process_provision
implemented methods to patch deployemnt or provision info per
cluster or node.
The code of extensions and tests was updated accordingly.
Also added helper to mark methods of extension as deprecated.
the extension load behaviour was modified, instead of fail operation
when extension cannot be loaded, the nailgun only write error in log
that extension is not loaded and continue operation.

Partial-Bug: 1596987
Change-Id: I577c8ffc105734e12646ca7c6a4fe4927e70b119
DocImpact
2016-07-25 18:25:21 +00:00
Bulat Gaifullin 28461933e4 Revert "Remove 'nodes' key from serializer for 10.0"
This reverts commit 80d7188700.

Change-Id: I71288ce79ab1f30bb291e77dde1217a26899c85d
2016-07-19 12:42:12 +00:00
Jenkins af68ca5c5b Merge "Change CPU distribution" 2016-06-07 09:53:03 +00:00
Artur Svechnikov 76e270ef96 Change CPU distribution
CPU distribution mechanism should be changed due
to incorect requirements to nova and dpdk CPUs allocation

Changes:
 * Change CPU distribution
 * Add function for recognizing DPDK NICs for node
 * Remove requirement of enabled hugepages for
   DPDK NICs (it's checked before deployment)
 * Change HugePages distribution. Now it take into
   account Nova CPUs placement

Requirements Before:
 DPDK's CPUs should be located on the same NUMAs as
 Nova CPUs

Requirements Now:
 1. DPDK component CPU pinning has two parts:
     * OVS pmd core CPUs - These CPUs must be placed on the
       NUMAs where DPDK NIC is located. Since DPDK NIC can
       handle about 12 Mpps/s and 1 CPU can handle about
       3 Mpps/s there is no necessity to place more than
       4 CPUs per NIC. Let's name all remained CPUs as
       additional CPUs.
     * OVS Core CPUs - 1 CPU is enough and that CPU should
       be taken from any NUMA where at least 1 OVS pmd core
       CPU is located

 2. To improve Nova and DPDK performance, all additional CPUs
    should be distributed along with Nova's CPUs as
    OVS pmd core CPUs.

Change-Id: Ib2adf39c36b2e1536bb02b07fd8b5af50e3744b2
Closes-Bug: #1584006
2016-06-06 18:36:27 +03:00
Andriy Popovych 9d86b078cf Data model changes for Plugin NIC, BOND and Node attributes
This patch:
  * extends current DB model with new entities and provides
    related migrations.
  * extends plugin sync method to support storing new plugins
    attributes.
  * provides cosmetic fix for ClusterPlugin model. Lets write table
    names in the plural but model names in the singular.

Change-Id: I3edbde1d48461ce3fab7c93f17e2db5332b1f7fb
Implements: blueprint nics-and-nodes-attributes-via-plugin
2016-05-30 13:16:45 +03:00
Jenkins 2229e17674 Merge "Remove 'nodes' key from serializer for 10.0" 2016-05-19 14:39:57 +00:00
Jenkins cc12109f4f Merge "Move network serialization code to network manager extension" 2016-05-18 13:46:52 +00:00
Artem Roma 80d7188700 Remove 'nodes' key from serializer for 10.0
'nodes' data is deprecated so must be removed from 10.0 version
serializer output. The change was moved to separate serializer class in
order to maintain compatibility with previously deployed 9.0 clusters
after upgrade to 10.0.

Change-Id: I8fef591908cd8b1e4ace5502bb1e80cb37786c6e
Related-Bug: #1531128
2016-05-18 15:09:38 +03:00
Alexander Saprykin e33184901b Fix invalid config serialization for primary- roles
Roles that are passed via parameter to function
inject_configs retrieved from `objects.Node.all_roles`
function. This function adds prefix `primary-` to
generic role names.
In this case configuration, that was created for role
`controller`, won't be executed on `primary-controller`
node, since role `controller` was replaced with
`primary-controller`

Change-Id: Ibba3a1d25079bd7b356e8e65da11c19a8017d4ba
Closes-Bug: #1576127
2016-05-12 09:44:59 +00:00
Artem Roma db7ec357fb Move network serialization code to network manager extension
Change-Id: I48b50e86ad2d9568cfc63e738663c237dccab03a
Blueprint: network-manager-extension
2016-05-12 12:40:35 +03:00
Ryan Moe 76a0bc226e Move network manager calls into callbacks
Calls to network manager from object methods have been
moved into callbacks implemented by the network manager
extension.

This commit makes the following new callbacks available
to extensions:

 * on_cluster_create: called when a new cluster is created
 * on_cluster_patch_attributes: called when a cluster's attributes
    are updated
 * on_nodegroup_create: called when a node group is created
 * on_before_deployment_serialization: called before deployment
    serialization begins
 * on_before_provisioning_serialization: called before provisioning
    serialization begins
 * on_remove_node_from_cluster: called when a node is removed from
    a cluster

Blueprint: network-manager-extension
Change-Id: I9a3413f54c881edd098e623ea204d12a86695f87
2016-05-09 13:45:17 -07:00
Artem Roma 3a8b82887b Remove 'nodes' from deployment 9.0 serializer output
Now serialized deployment info for environments >= 9.0 does not contain
'nodes' field; it is removed from the output of the serializer.

Unit and integration tests are updated. Deployment tasks fixture
changed: 'nodes' references in yaql expressions changed to
'network_metadata.nodes'

Change-Id: Ibdb2cf85732c0293314298e6a342b071ece18cc3
Closes-Bug: #1531128
2016-05-05 13:12:17 +03:00
Artur Svechnikov 8ed32e49c1 Correct processing of customized nodes
Since node can be customized with LCM
deployment info, it's not needed to
convert old serialization style to
new.

Change-Id: I4822745849925076cbcedbd028c9e37d91d1aa1c
Closes-Bug: #1572965
2016-04-25 13:38:23 +00:00
Alex Schultz 85e9a608f4 Pass glance image parameters as a hash
This change updates the deployment serializer for the test vm data to
pass the glance properties as a hash that can be used by the
glance_image provider rather than using the glance_properties string
that is currently in place. The glance_properties string should be
considered deprecated and anything that uses it should switch to the
properties hash.

DocImpact: glance_properties string provided as part of the
test_vm_image hiera data is deprecated in favor of the properties hash
provided by this change

Change-Id: I79a9b20d89ae00a7ceaa24c4ce655cbd16972c30
Partial-Bug: #1566434
2016-04-18 10:25:49 -06:00
Sylwester Brzeczkowski 5d1d1fe960 Extract volume_manager from nailgun core
* remove node_extension_call from everywhere Nailgun
  core source code
* remove volume_manager Node property (models)
* moved volume and disk releated data manipulations to
  volume manager extension pipeline
* removed no longer valid tests
* added new extension callback for pre deployment check
* fix some tests
* moved volume_manger specific tests to volume_manger module
* marked 'skip test' to some tests which are no longer
  valid in current places but they valuable and should be moved
  to volume_manager module in next patches

implements: blueprint data-pipeline
Change-Id: I8edd25166e5eccf914eb92882b6b4a7b3fff6a89
2016-04-18 12:10:34 +02:00
Bulat Gaifullin fe73beacc6 Reworked ApplyChanges for LCM
The following legacy tasks were reworked to use ClusterTransaction:
 - OpenstackConfigTaskManager
 - SpawnVMsTaskManager

Change-Id: I4a6f5f37161e4290050ec4926cf029cd7af566e4
Closes-Bug: 1565885
Closes-Bug: 1561994
Closes-Bug: 1565760
2016-04-14 13:03:07 +03:00
Kyrylo Galanov 235c1622f2 Use permanent identifier as a node key
Using permanent identifier instead of hostname based identifier fixes
problems which might be caused by renaming a host

Change-Id: I17d84da97296144acbf5983ea18139ffdee0db8a
Closes-bug: #1548332
2016-04-06 09:14:14 +03:00
Bulat Gaifullin 463097a6c7 Added information about plugins data into astute.yaml
Added information about plugins scripts and plugins repositories.
This information will be used by puppet to create repositories and
synchronise plugins scripts.

Change-Id: Ie2df470a4f05b73162144f9c87d1023760b282c7
Closes-Bug: 1565061
2016-04-04 18:15:55 +03:00