Commit Graph

82 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
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
Andriy Popovych 95321932af Remove offloading modes from data model
Change-Id: I4869f3a08bb1fd60cceb324d2b66a31553e90bd4
Implements: blueprint nics-and-nodes-attributes-via-plugin
2016-11-30 18:35:00 +02:00
Mikhail da99f08f74 Add default tags
Tags for rabbitmq, database, keystone and neutron.

Change-Id: I13861e55bcdfded55597e8c696ac05c1c5892f00
Implements: blueprint role-decomposition
2016-11-23 23:59:41 +03: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
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 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 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
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
Dmitry Guryanov 9eeaa679d1 Don't use self.env.clusters[0] in tests where possible
Since self.env.create always return db object now,
we can use this returned value instead of
self.env.clusters list.

It's a refactoring, so no bug or blueprint.

Change-Id: If7c84cb7124bcf08ef5ff110542012564190fae1
2016-04-26 17:53:36 +03:00
Krzysztof Szukiełojć 33932023fb Don't add public network to all nodes
In default setup we should not assign public ip to all nodes.
Just to ones with controller role. So we filter out public ip
network for nodes that should not have it.

Change-Id: I2a9ea4d06cc1ba15bad20b817659b7539827472a
Closes-Bug: 1415552
2016-04-13 09:26:44 +02:00
Ryan Moe 1dda6ae043 Move network manager to extension
This moves the files for NetworkManager and its sub-classes into
a new extension. All import paths have been updated.

Blueprint: network-manager-extension
Change-Id: Icc2410fd9c411a47a3dee4573d4ef6f1a039c303
2016-04-11 05:33:29 -07:00
Jenkins acbb737005 Merge "Py3 support: Replace .iteritems() with six.iteritems()" 2016-04-11 10:08:42 +00:00
Alexander Saprykin 94524207a8 Py3 support: Replace .iteritems() with six.iteritems()
Change-Id: Ia37f12aa5b7f5b52c0a469df035a135927b3af8f
2016-04-07 15:40:56 +02:00
Andriy Popovych f300d2f338 Avoid reading from tasks YAML file every time
Avoid reading `tasks.yaml` every time
Fix missing of `environment.yaml` file sync for plugins V(1,2)

Change-Id: Id3aed7b943b6942c223797a40d3d0214834ba31f
Closes-bug: #1527320
2016-04-05 21:07:23 +03:00
Bulat Gaifullin cb8568669b Enabled task deploy for integration tests
Closes-Bug: 1552464

Change-Id: I0daa98a4dee8b8e75e658a77226cbbc827fc681f
2016-03-21 13:22:53 +03:00
Aleksey Kasatkin 2464783400 Robust generating of routes
'netgroups[ngname]' is replaced with 'netgroups.get(ngname, {})' as
in other places in serializer.
Problem was the 'br-prv' endpoint that didn't have IP in case of VLAN
segmentation. The difference between 'netgroup_mapping' and 'netgroups'
exists only in case of using network template. Otherwise, absence of IP
for 'br-prv' did not lead to this issue.

Also, there is a small refactoring of serialization tests was made here.

Change-Id: I67616409017631023e707e533cb8e2faab943b34
Closes-Bug: #1556917
2016-03-18 10:20:37 +00:00
Ilya Kutukov 0e9ca251cf Orchestrator DeploymentGraph is renamed to the GraphSolver
To avoid confusion with objest.DeploymentGraph and
orchestrator.DeploymentGraph second one was renamed
to the GraphSolver because this entity is used to
find subgraphs, loops, and solve graph for the
old orchestrators.

Secondary changes:
DeploymentGraphValidator -> GraphSolverValidator
DeploymentGraphTasksValidator -> GraphSolverTasksValidator
GraphVisualizationValidator -> GraphSolverVisualizationValidator
validators/graph.py -> validators/orchestrator_graph.py
orchestrator/deployment_graph.py -> orchestrator/orchestrator_graph.py

Change-Id: Ic42a17115723b8145b9d94cc034bf2217d1d634b
Implements: blueprint custom-graph-execution
2016-03-17 03:25:37 +03:00
Ilya Kutukov 84465f603b Cluster deployment graphs merge order changed to release+plugins+cluster
Now cluster.get_deployment_tasks returning deployment tasks merged from 3 levels:
* cluster release
* cluster plugins
* cluster itself

Tasks is overriding tasks with the same task 'id'.

Change-Id: Ie005e9f153bef4f6b4220764ed1e08a03abf1e86
Implements: blueprint custom-graph-execution
2016-03-16 16:32:14 +00:00
Vitalii Myhal 64faafa96f Insert vendor_specific hash into endpoints in the network_scheme
It contains a gateway for described network.

Closes-bug: #1549034
Co-Author: Vitalii Myhal <vm198r@att.com>
Change-Id: I1550e126b16447f83f743601dab23677a5eacd52
2016-03-09 15:12:56 -06:00
Artem Roma 9a84968689 Serialize info for all VIPs
Now VIP info is build for VIPs that are not allocated, that is not
present in data base. For such VIPs 'ipaddr' field will contain None
value.

'is_user_defined' flag is included in the serialized info.

Now logically VIPs may be divided into auto allocated and set manually
by user by combinations of 'ipaddr' value and 'is_user_defined' flag.

Change-Id: I36bb90dcc0d1e14da113ba512008d9b9eb30ba4c
Blueprint: allow-any-vip
2016-02-24 18:51:51 +02:00
slava 713f8754f2 Handle 'retries' parameter for puppet tasks on nailgun's side
Currently, astute supports 'retries' parameter, but this
parameter is not processed by nailgun, so, we always get
default pupet retries value from astute component.

Change-Id: I68615b053ebc1c07bb8ca85084e48a9c93f5e495
Related-Bug: #1457794
2016-01-14 14:06:13 +00:00
Igor Kalnitsky e556554485 Remove NoCacheQuery
For the time being we used custom non-cached SQLAlchemy query. That
means the following drawbacks:

* each time we access to relationship attribute the SQL query is spawn;
* each time we trying to get instance by pk (.get) the SQL query is
  spawn;

Besides the way we get non-cached query is by patching internal
SQLAlchemy's Query attribute - '_populate_existing' - which is designed
for another purpose. It cause us a lot of troubles because the
SQLAlchemy behaves in slightley different way that it's pointed in
documentation (for instance, there're much more reasons for implicitly
calling .flush()).

This commit finally drops this unconvenient NoCacheQuery in favor of
standard Query.

Change-Id: Ic1b11684dddf970268eedd297e8577c86e750f1e
Closes-Bug: #1498382
2016-01-05 12:57:14 +00:00
Jenkins 62f8c8be2e Merge "Send ID of task to Astute" 2015-12-21 16:27:48 +00:00
Bulat Gaifullin 45e7f677e1 Send ID of task to Astute
The ID was sent only when it is possible, without any guarantees.
Because some of tasks do not have ID by its nature. for example
plugins pre/post deployment tasks.

Change-Id: Ib0e0e334e99140eccedb63114bb1377c5f07a9fb
Closes-Bug: #1527596
2015-12-18 16:22:33 +03:00
Bulat Gaifullin 7a4d5de086 Updated JSON schema for task
- Moved all Task Role related constants to Enum TASK_ROLES
- Renamed consts.MASTER_ROLE to consts.MASTER_NODE_UID

Change-Id: I292f0f5471e295564a318530f5397e4c438cb40a
Closed-Bug: #1526688
2015-12-17 14:34:59 +03:00
Jenkins 6111c69264 Merge "Rerun network setup on deployed nodes" 2015-12-02 16:26:53 +00:00
Aleksey Kasatkin d53c75bf3a Rerun network setup on deployed nodes
This is required to apply changes that could be made to the networking
configuration of environment.
The major case is: add/remove node network group(s).

The configuration changes are not tracked as nailgun does not have
proper functionality for that.

New key is introduced in task description: reexecute_on (list).
Deployment tasks which are to be re-executed on deploy changes must have

reexecute_on:
  - deploy_changes

DocImpact

Change-Id: I668fcb426826cecf69a5c7fc1e92b8ae8dfeef9f
Blueprint: redeploy-network-on-changes
2015-12-02 16:46:01 +02:00
Andrey Shestakov 121d795eaa [Ironic] Add network roles for ironic
This change introduces:
* NovaNetworkManager80
* ironic/api network role
* ironic/baremetal network role with VIP and iptables rules

Added separate fixture for network template.
Tests updated.

Partially Implements: blueprint fuel-integrate-ironic

Change-Id: Ib867f843951f7b86be31a9ffe4cf54c56127157b
2015-12-02 10:26:04 +00:00
Andrey Shestakov 0dd45c2612 Patch network_roles_metadata for 7.0 release where needed
The patching mostly done for tests for nailgun components adhering to
the release version. E.g. network serializers. Some tests are forced to
create environments of 8.0 version. The change is needed to resolve
possible issues with the tests when network roles metadata is changed
drastically and is not compatible with mentioned components.

Partial-Bug: #1517874
Change-Id: I55607157ae7767ffdfd1d855b872630832706e8e
2015-12-01 13:18:38 +00:00
Bulat Gaifullin 4e2d655555 prepare_for_deployment was moved to network manager
The network related function shall be in NetworkManager,
this makes easier further refactoring.

Change-Id: I8eb5404509c9fe0a8c367ea119bfb18233941fde
Partial-Bug: #1354803
2015-11-30 13:48:14 +03:00
smurashov 83bd490394 Use appropriate types to store IP and MAC addrs
In PostgreSQL there are special types for storing IPv4, IPv6 address and
subnetworks and also MAC addresses. Storing data in these types is more
efficient than in strings because it requires less space. In addition,
it provides additional operations for columns of these types.

This patch changes types of some columns for models such as:

    IPAddr
        ip_addr: inet

    IPAddrRange
        first: inet
        last: inet

    Node
        mac: macaddr
        ip: inet

    NodeNICInterface
        mac: macaddr
        ip_addr: inet
        netmask: inet

    NodeNICInterface
        mac: macaddr

    NetworkGroup
        cidr: cidr
        gateway: inet

    NeutronConfig
        base_mac: macaddr
        internal_cidr: cidr
        internal_gateway: inet
        baremetal_gateway: inet

    NovaNetworkConfig
        fixed_networks_cidr: cidr

Co-Authored-By: Ilya Kharin <ikharin@mirantis.com>
Change-Id: Id8431eb7d2e3ca1a1cc29fc865d57359b29d0e35
Partial-Bug: #1484973
2015-11-24 16:05:07 +03:00
Andrey Shestakov 68a4c50a2d Add checks for VIPs network mapping
VIPs from network roles with mapping to non-existing network should be skipped
from assignment.
Added NeutronManager80 and AllocateVIPs80Mixin

Change-Id: Id8dd1d26872edd1e8055de5ebcaa2d7dd9a955f7
Implements: blueprint fuel-integrate-ironic (partially)
2015-11-19 20:53:31 +02:00
Andrey Shestakov d0bb7c17cf [Ironic] Add baremetal network for ironic
This change adds:
* new optional baremetal network
* baremetal sections in Neutron L3 configuration

Ironic requires separate baremetal network on infra nodes and neutron flat
network mapped to this physical network.

New baremetal network is optional and depends on Ironic component enabled in
settings.

Implements: blueprint fuel-integrate-ironic (partially)
Change-Id: I742bf69d3f3ac5e4b4ecd39a12e3171c566563e8
2015-11-17 12:23:15 +02:00
Vitaliy Mygal a25db9a2c6 Store attributes of plugins in a separate table
This is redesign of plugins architecture in order to store
the plugin's attributes in a separate table, not in cluster
attributes, so it will be possible to remove connection between
plugin and cluster when a plugin gets deleted.

Added ability to work with different versions of a plugin.
User can choose the preferred version in UI.

The test "test_plugin_generator" was removed because no longer
relevant.

Closes-Bug: #1440046
Implements: blueprint store-plugins-attributes

Change-Id: I52115f130bf1c7c80c66e18d0bf9f7acb16dd56c
2015-11-15 23:29:13 -06:00
Ryan Moe 09a256d9c8 Assign networks based on template
When a node is added to a cluster with a network template
networks will be mapped to NICs based on transformations
in the template. Any bonds will be created in the database.
Any time the cluster's network template is changed the NIC
mapping will be recreated.

Change-Id: I2b52444f3019241362e5a957bf191645b94ebaa7
Closes-bug: #1493391
2015-10-19 05:40:32 -07:00
Maciej Kwiek 1ffc5e54e9 Fix hacking 0.10 errors in nailgun
Change-Id: I82e418d21e367ff379dda935f035dcc709c3a034
Partial-Bug: #1410810
2015-10-08 12:01:55 +02:00
Igor Kalnitsky 2123640a11 Make Nailgun tests independed from PYTHONHASHSEED
test_vlan_range
  The test has been failing because JSON schema validates restriction in
  order that depends on PYTHOHASHSEED. So the fix is to use proper
  values with only one incorrect value.

test_non_default_bridge_mapping
  The test has been failing because we have a suffix generation for
  bridges implemented via counter. We generate a bridge name with a
  suffix iterating over networks, and PYTHONHASHSEED affects order of
  iteration. So the fix is to do not test bridge names strictly, but
  just most important limits.

test_update_networks_meta
  The test has been failing because dictionarie's .update() method do
  not perform recursive update, and removes some needed keys
  (such as 'name') so next network lookup may fail.

TestDeleteIBPImagesTask
  The test has been failing because CMD line has files to remove, and
  their order depend on PYTHONHASHSEED (since they are extracted as
  .keys() from some dictionary structure). So the fix is to perform
  smart check for the command line, not strict one.

Closes-Bug: #1496448

Change-Id: I882bbf53f48c842070cb336b1185c40a3dfacc6b
Signed-off-by: Igor Kalnitsky <igor@kalnitsky.org>
2015-09-17 09:28:02 +00:00
Oleg Bondarev 4a748e3919 Network scheme 7.0: add public iface to br-ex in dvr mode
Proper transformation is not added to network scheme after recent
refactoring. This patch fixes the bug and adds corresponding test.

Closes-Bug: #1492138
Change-Id: I5d1336a10f855e17dede93d156cf586ca5f708f3
2015-09-04 17:29:17 +03:00
Oleg Bondarev eb7d94b53f Neutron Serializer 7.0: don't set gateway for br_ex without ip address
When neutron DVR is enabled compute nodes should have public access but
don't require IP address set on br-ex. In this case no gateway should be
set on br-ex as well.

Closes-Bug: #1491023
Co-Authored-By: Alexander Kislitsky <akislitsky@mirantis.com>
Change-Id: I31de7dc93f22f275d8b7b2dacbd97f6c98902604
2015-09-02 16:46:52 +03:00
Fedor Zhadaev 999f34437b Fix using nic_mapping in network templates
* Use 'network_assignments' field from processed network_template
   with applied nic mappings for each node instead of using this field
   from raw template

Change-Id: I0f789386a6de56d04476a7ced1ba389677a98388
Closes-bug: #1489508
2015-08-31 17:21:07 +03:00
Alexander Bochkarev 41f7bb7919 VIP-related information is duplicated in astute.yaml
By design since version 7.0 all information about
VIP should be stored in network_metadata["vips"].
VIP duplications in root space of astute.yaml must
be removed.

Change-Id: Ide082d3ba9e063c2601837a772d21b0efa6e65a2
Closes-bug: #1488454
2015-08-28 12:39:46 +03:00
Andrey Shestakov 1158c2eddb Added generate_network_scheme for 7.0
This change adds generate_network_scheme method for 7.0 instead of inherit it.
Now generate_network_scheme for 7.0 supports non-default network groups.

Change-Id: Ib89594867c57b3aeb1b6503fed87c291ca3fd308
Closes-bug: #1483307
2015-08-25 11:30:06 +03:00
Aleksey Kasatkin bbb918473b Add IP assignment optimized for network template
IPs were allocated for every network on every node
regardless of network to nodes mapping which is set in template.
It led to excessive IP usage.
Now it is fixed so that IPs are allocated only for nodes where they are required.
And IP allocation is optimized for the case with network template and for other
cases partially.
A number of small fixes were made on the base of comments in earlier RCs.

IP allocation comparison in DB queries count (only for replaced part):
old version: 1 query per IP to allocate + 1 query per occupied IP in that range
new version: 1 queries per network (for all IPs) if (occupied IPs)+(IPs to allocate) <= MIN_IPS_PER_DB_QUERY
             2 queries per network otherwise (typically).
New version is much better for large numbers of nodes.
nodes |      queries count        |
count |   old   |   new           |
      |min| max |min|  max        |
    1 |  1|  1+N|  1|1+ceil(N/5)**|
   10 | 10| 10+N|  1|1+ceil(N/10) |
  100 |100|100+N|  1|1+ceil(N/100)|
where N is a number of occupied IPs.
** 5 here is value of MIN_IPS_PER_DB_QUERY.

Change-Id: I4479bcae9e80f7b96750f9fdb2868d6df164baf6
Closes-Bug: #1480345
2015-08-19 12:36:03 +03:00
Kseniya Tychkova 551cf4d479 Adjust core network roles to sync with manifests
remove "mgmt/api" network role

fix tests for "ceph/public" network role
it has "management" as default_mapping

Change-Id: Id6c87de91d3bb63b2906d4df64ecea364a2c519b
Closes-Bug: #1484560
2015-08-18 11:35:34 +00:00
Valyavskiy Viacheslav fba3442bef Allow to assign floating role to public bridge
Network template serialiser should check that endpoint for
"neutron/floating" role is not present in corresponding section
before define it with empty ip address.

Change-Id: I76eb4e1df70811d664579d8b74107e3c638d0b83
Closes-Bug: 1483115
2015-08-10 08:08:58 +03:00