User can't create k8s cluster with more than 100 nodes in it

Bug #1616986 reported by Anastasia Kuznetsova
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
python-muranoclient
Fix Released
High
Stan Lagun
Mitaka
Fix Committed
High
Valerii Kovalchuk
Newton
Fix Released
High
Stan Lagun

Bug Description

Environment: MOS GA 9.0 (stable/mitaka), Murano as a plugin, Glare is enabled
root@node-4:~# dpkg --list | grep murano
ii murano-api 1:3.0.0~b2-54 all
ii murano-common 1:3.0.0~b2-54 all
ii murano-engine 1:3.0.0~b2-54 all
ii murano-glance-artifacts-plugin 1:3.0.0~b2-54 all
ii murano-rabbitmq 1:3.0.0~b2-54 all
ii python-murano 1:3.0.0~b2-54 all
ii python-murano-dashboard 1:3.0.0~b2-4~u14.04+mos17 all
ii python-muranoclient 0.10.0-3~u14.04+mos1 all
root@node-4:~# dpkg --list | grep yaql
ii python-yaql 1.1.0-1~u14.04+mos1 all

Steps to reproduce:
1. Log in WebUI
2. Upload Kubernetes Cluster application and its dependencies to the Murano
3. Upload any Docker application that will be deployed in Kubernetes Cluster.
4. Create Murano environment
5. Add Kubernetes Cluster to the env:
   - Set cluster name
   - Initial number on Kubernetes Nodes = 100
   - Maximum number of Kubernetes Nodes = 110
   - Leave all other fields as is
   - Fill instance configuration form
   - Click on "Create"

Expected result:
Kubernetes Cluster app is added to the env.

Observed result:
Danger: There was an error submitting the form. Please try again.

Traceback from Horizon log:
2016-08-24 10:35:37,062 3095 ERROR django.request Internal Server Error: /horizon/murano/catalog/add/8e7ceab1-f40d-4bae-9e92-3daf7c9a049f/1487405b6c58454f92f8fd66d08b0e40/F
alse/True
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 36, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 52, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 36, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/catalog/views.py", line 175, in __inner
    return func(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/catalog/views.py", line 304, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/formtools/wizard/views.py", line 237, in dispatch
    response = super(WizardView, self).dispatch(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 89, in dispatch
    return handler(request, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/formtools/wizard/views.py", line 300, in post
    return self.render_done(form, **kwargs)
  File "/usr/lib/python2.7/dist-packages/formtools/wizard/views.py", line 357, in render_done
    **kwargs)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/catalog/views.py", line 336, in done
    attributes = service.extract_attributes()
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/services.py", line 125, in extract_attributes
    attributes = helpers.evaluate(self.application, self.context)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 99, in evaluate
    value, context)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 92, in recursive_apply
    return rec(value)
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 82, in rec
    return dict((rec(k), rec(v)) for (k, v) in six.iteritems(val))
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 82, in <genexpr>
    return dict((rec(k), rec(v)) for (k, v) in six.iteritems(val))
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 80, in rec
    return rec(transformer(val, *args))
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/helpers.py", line 98, in <lambda>
    lambda v, _ctx: v.evaluate(context=_ctx),
  File "/usr/lib/python2.7/dist-packages/muranodashboard/dynamic_ui/yaql_expression.py", line 61, in evaluate
    return self._parsed_expression.evaluate(data=data, context=context)
  File "/usr/lib/python2.7/dist-packages/yaql/language/expressions.py", line 165, in evaluate
    return self(utils.NO_VALUE, context, self.engine)
  File "/usr/lib/python2.7/dist-packages/yaql/language/expressions.py", line 156, in __call__
    return super(Statement, self).__call__(receiver, context, engine)
  File "/usr/lib/python2.7/dist-packages/yaql/language/expressions.py", line 37, in __call__
    return context(self.name, engine, receiver, context)(*self.args)
  File "/usr/lib/python2.7/dist-packages/yaql/language/contexts.py", line 65, in <lambda>
    data_context, use_convention, function_filter)
  File "/usr/lib/python2.7/dist-packages/yaql/language/runner.py", line 51, in call
    result = delegate()
  File "/usr/lib/python2.7/dist-packages/yaql/language/runner.py", line 142, in <lambda>
    return lambda: delegate()
  File "/usr/lib/python2.7/dist-packages/yaql/language/specs.py", line 341, in func
    six.iteritems(keyword_args)))
  File "/usr/lib/python2.7/dist-packages/yaql/__init__.py", line 70, in finalize
    return utils.convert_output_data(obj, limiter, engine)
  File "/usr/lib/python2.7/dist-packages/yaql/language/utils.py", line 101, in convert_output_data
    return list(rec(t, limit_func, engine, rec) for t in limit_func(obj))
  File "/usr/lib/python2.7/dist-packages/yaql/language/utils.py", line 101, in <genexpr>
    return list(rec(t, limit_func, engine, rec) for t in limit_func(obj))
  File "/usr/lib/python2.7/dist-packages/yaql/language/utils.py", line 198, in limiting_iterator
    raise exceptions.CollectionTooLargeException(max_count)
CollectionTooLargeException: Collection length exceeds 100 elements

description: updated
affects: murano → python-muranoclient
Changed in python-muranoclient:
status: New → Confirmed
importance: Undecided → High
milestone: none → 0.10.1
Revision history for this message
Stan Lagun (slagun) wrote :

Because of this limitation collections larger than of 100 elements couldn't be created in UI definition. Which means that one cannot create a k8s cluster with 101 nodes

Changed in python-muranoclient:
assignee: nobody → Stan Lagun (slagun)
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-muranoclient (master)

Reviewed: https://review.openstack.org/363057
Committed: https://git.openstack.org/cgit/openstack/python-muranoclient/commit/?id=8ecfd1dd987b40863e25eccc338408d9bcc4b895
Submitter: Jenkins
Branch: master

commit 8ecfd1dd987b40863e25eccc338408d9bcc4b895
Author: Stan Lagun <email address hidden>
Date: Tue Aug 30 10:30:26 2016 -0700

    Increase yaql quotas

    There were too small quotas that prevent UI
    definitions to create large collections

    Change-Id: I3fa2bbfc2449570d58e866f1e5c5acc744f6d8c6
    Closes-Bug: #1616986

Changed in python-muranoclient:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/python-muranoclient 0.11.0

This issue was fixed in the openstack/python-muranoclient 0.11.0 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to python-muranoclient (stable/mitaka)

Fix proposed to branch: stable/mitaka
Review: https://review.openstack.org/370714

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-muranoclient (stable/mitaka)

Reviewed: https://review.openstack.org/370714
Committed: https://git.openstack.org/cgit/openstack/python-muranoclient/commit/?id=cc0f31641bf02db91eea205efea124e8782fb2e5
Submitter: Jenkins
Branch: stable/mitaka

commit cc0f31641bf02db91eea205efea124e8782fb2e5
Author: Stan Lagun <email address hidden>
Date: Tue Aug 30 10:30:26 2016 -0700

    Increase yaql quotas

    There were too small quotas that prevent UI
    definitions to create large collections

    Change-Id: I3fa2bbfc2449570d58e866f1e5c5acc744f6d8c6
    Closes-Bug: #1616986
    (cherry picked from commit 8ecfd1dd987b40863e25eccc338408d9bcc4b895)

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/python-muranoclient 0.11.0

This issue was fixed in the openstack/python-muranoclient 0.11.0 release.

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

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.