[Nailgun] GET network_configuration throws error

Bug #1504572 reported by Ihor Kalnytskyi on 2015-10-09
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Fuel for OpenStack
High
Roman Prykhodchenko
8.0.x
High
Roman Prykhodchenko
Mitaka
High
Roman Prykhodchenko

Bug Description

Well, the story is huge and requires some explanations.

We *do* have a network_configuration handler that returns (surprise-surprise) network configuration of the cluster. The configuration includes information about networks and VIPs, and it's used on UI on Network tab, so user can change network settings and re-submit it.

The problem occurs when we need to allocate VIPs more than we have free IPs in network pool. Since information how many VIPs we need is dynamic and is depended on plugins (since plugins may export network roles), we can't *validate* it on the first place. Moreover, it's depended on which network some netrole is assigned, so we can't and shouldn't forbid user to enable plugin.

Still, when new plugin is enabled, and we have not enough free IP addresses for VIPs the errors will be raised. If it's the case, the network_configuration handler will return an HTTP error and UI is unable to handle this case properly. In fact, it looks like user just unable to open some cluster.. and no way to change network settings (except fuel cli).

Another way to hit this bug is to move controllers (or other roles that have VIP assigned to them) to different network node groups. In this case Nailgun will try to calculate common node group for VIPs allocation and throw an error because it will find more than 1 common group.

Unfortunately, there's no easy fix for UI.. since they don't know what's wrong.

I have no idea how to fix it. Perhaps we should start with removing VIP allocation code from serializing network settings for the API handler.

tags: added: feature-validation
removed: feature-advanced-networking
Dmitry Pyzhov (dpyzhov) on 2015-10-22
tags: added: area-python
Mike Scherbakov (mihgen) wrote :

Is there any progress on this bug? Is it a High priority actually, how often would users hit this issue? May be there is a workaround / warning in the UI possible, which can increase UX and as such lower importance of this issue?

Dmitry Pyzhov (dpyzhov) on 2015-11-20
tags: added: team-bugfix
Dmitry Pyzhov (dpyzhov) wrote :

As I understand it affects two cases:
1) User tries to download network configuration and gets failure.
2) User tries to deploy and gets failure.

Roman, could you check that there is a workaround for both cases? That user can update network ranges and re-deploy or re-download config. We need at least write down list of workaround steps.

Changed in fuel:
assignee: Fuel Python Team (fuel-python) → Roman Prykhodchenko (romcheg)
Changed in fuel:
assignee: Roman Prykhodchenko (romcheg) → Maciej Kwiek (maciej-iai)
status: Confirmed → In Progress
Changed in fuel:
assignee: Maciej Kwiek (maciej-iai) → Roman Prykhodchenko (romcheg)
Dmitry Pyzhov (dpyzhov) on 2016-01-19
Changed in fuel:
milestone: 8.0 → 9.0
Changed in fuel:
status: In Progress → Fix Committed
Dmitry Pyzhov (dpyzhov) on 2016-01-26
Changed in fuel:
status: Fix Committed → In Progress
description: updated
Ihor Kalnytskyi (ikalnytskyi) wrote :

The patch is ready and was merged, and reverted. It's blocked by bug 1537833.

Roman Prykhodchenko (romcheg) wrote :

The patch is being merged by CI to master. After it's done, the back-port will be created and then merged within a few hours.

Reviewed: https://review.openstack.org/274798
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=77f5eaf896e8ddcef3fb4c4efc855896ea947255
Submitter: Jenkins
Branch: master

commit 77f5eaf896e8ddcef3fb4c4efc855896ea947255
Author: Roman Prykhodchenko <email address hidden>
Date: Mon Feb 1 18:13:17 2016 +0100

    Don't assign VIPs for GET requests

    Since VIPs make no sense before a cluster is deployed
    there's no need to assign them when network configuration
    is generated for GET requests.

    Co-authored by: Maciej Kwiek <email address hidden>
    Co-authored by: Roman Prykhodchenko<email address hidden>

    Change-Id: I382066cc62a9d98f728f5cd5edf771a5a980922f
    Closes-bug: #1504572
    Closes-bug: #1499291
    Partial-bug: #1524320

Changed in fuel:
status: In Progress → Fix Committed
tags: added: hit-hcf

Reviewed: https://review.openstack.org/275234
Committed: https://git.openstack.org/cgit/openstack/fuel-web/commit/?id=25a85691b60f8ef0140e835926953afa664cf9ba
Submitter: Jenkins
Branch: stable/8.0

commit 25a85691b60f8ef0140e835926953afa664cf9ba
Author: Roman Prykhodchenko <email address hidden>
Date: Mon Feb 1 18:13:17 2016 +0100

    Don't assign VIPs for GET requests

    Since VIPs make no sense before a cluster is deployed
    there's no need to assign them when network configuration
    is generated for GET requests.

    Co-authored by: Maciej Kwiek <email address hidden>
    Co-authored by: Roman Prykhodchenko<email address hidden>

    Change-Id: I382066cc62a9d98f728f5cd5edf771a5a980922f
    Closes-bug: #1504572
    Closes-bug: #1499291
    Partial-bug: #1524320

tags: added: on-verification
Mikhail Samoylov (msamoylov) wrote :

Verified in fuel version:
VERSION:
  feature_groups:
    - mirantis
  production: "docker"
  release: "8.0"
  api: "1.0"
  build_number: "529"
  build_id: "529"
  fuel-nailgun_sha: "baec8643ca624e52b37873f2dbd511c135d236d9"
  python-fuelclient_sha: "4f234669cfe88a9406f4e438b1e1f74f1ef484a5"
  fuel-agent_sha: "658be72c4b42d3e1436b86ac4567ab914bfb451b"
  fuel-nailgun-agent_sha: "b2bb466fd5bd92da614cdbd819d6999c510ebfb1"
  astute_sha: "b81577a5b7857c4be8748492bae1dec2fa89b446"
  fuel-library_sha: "e2d79330d5d708796330fac67722c21f85569b87"
  fuel-ostf_sha: "3bc76a63a9e7d195ff34eadc29552f4235fa6c52"
  fuel-mirror_sha: "fb45b80d7bee5899d931f926e5c9512e2b442749"
  fuelmenu_sha: "e071216cb214e34b4d861478033425ee6a54a3be"
  shotgun_sha: "63645dea384a37dde5c01d4f8905566978e5d906"
  network-checker_sha: "a43cf96cd9532f10794dce736350bf5bed350e9d"
  fuel-upgrade_sha: "616a7490ec7199f69759e97e42f9b97dfc87e85b"
  fuelmain_sha: "a365f05b903368225da3fea9aa42afc1d50dc9b4"

Steps:
1. Create cluster
2. Change public range only for 2 address, for example: 10.109.3.2-10.109.3.3
3. Download compute role file: fuel role --rel 2 --role compute --file compute.yaml
4. Edit compute.yaml like this (add to meta section: public_ip_required: true):
http://paste.openstack.org/show/486669/
5. Upload new compute role config:
fuel role --rel 2 --update --file compute.yaml
6. Add to cluster some controllers and compute nodes
7. Refresh Web UI cluster network settings tab

Actual result:
No hang, refresh successfully finished
Expected result:
No hang, refresh successfully finished

tags: removed: on-verification
ElenaRossokhina (esolomina) wrote :

verified on fuel-9.0-124-2016-03-28_08-00-00.iso using scenario from comment #11

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments