Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 2070859

Summary: ERROR django.request Internal Server Error: /dashboard/project/stacks/select_template horizon error is shown while deployment heat stack yaml template
Product: Red Hat OpenStack Reporter: alisci <alisci>
Component: openstack-heat-uiAssignee: OSP Team <rhos-maint>
Status: CLOSED DUPLICATE QA Contact: Ronnie Rasouli <rrasouli>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 16.2 (Train)CC: rdopiera
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-04-07 14:40:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description alisci 2022-04-01 08:35:47 UTC
Description of problem:

heat stack fails to be deployed from horizon dashboard if user_data get_file it is defined for OS::Nova::Server resource . the same templates works well if ran from the cli

On dash board it is shown the error:

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

while on horizon logs it shows the following error:

2022-03-31 15:52:03,028 60 ERROR django.request Internal Server Error: /dashboard/project/stacks/select_template
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/decorators.py", line 52, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/decorators.py", line 36, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/decorators.py", line 36, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/decorators.py", line 113, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/decorators.py", line 84, in dec
    return view_func(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/base.py", line 89, in dispatch
    return handler(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/edit.py", line 142, in post
    return self.form_valid(form)
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 188, in form_valid
    exceptions.handle(self.request)
  File "/usr/lib/python3.6/site-packages/horizon/exceptions.py", line 348, in handle
    six.reraise(exc_type, exc_value, exc_traceback)
  File "/usr/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 185, in form_valid
    handled = form.handle(self.request, form.cleaned_data)
  File "/usr/lib/python3.6/site-packages/heat_dashboard/content/stacks/forms.py", line 275, in handle
    return self.next_view.as_view()(request, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/base.py", line 89, in dispatch
    return handler(request, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/edit.py", line 133, in get
    return self.render_to_response(self.get_context_data())
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 141, in get_context_data
    context = super(ModalFormView, self).get_context_data(**kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 74, in get_context_data
    context = super(ModalFormMixin, self).get_context_data(**kwargs)
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 55, in get_context_data
    context = super(ModalBackdropMixin, self).get_context_data(**kwargs)
  File "/usr/lib/python3.6/site-packages/django/views/generic/edit.py", line 66, in get_context_data
    kwargs['form'] = self.get_form()
  File "/usr/lib/python3.6/site-packages/horizon/forms/views.py", line 176, in get_form
    return form_class(self.request, **self.get_form_kwargs())
  File "/usr/lib/python3.6/site-packages/heat_dashboard/content/stacks/views.py", line 185, in get_form_kwargs
    kwargs = super(CreateStackView, self).get_form_kwargs()
  File "/usr/lib/python3.6/site-packages/django/views/generic/edit.py", line 38, in get_form_kwargs
    'initial': self.get_initial(),
  File "/usr/lib/python3.6/site-packages/heat_dashboard/content/stacks/views.py", line 181, in get_initial
    initial['parameters'] = json.dumps(self.kwargs['parameters'])
  File "/usr/lib64/python3.6/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib64/python3.6/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib64/python3.6/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib64/python3.6/json/encoder.py", line 180, in default
    o.__class__.__name__)
TypeError: Object of type 'bytes' is not JSON serializable


Version-Release number of selected component (if applicable):
this has been verified on OpenStack 16.2.2

rhosp16-openstack-horizon:16.2_20220209.2
sudo podman exec horizon rpm -qa | grep horizon
python3-django-horizon-16.2.3-2.20220124225242.3153a5b.el8ost.noarch

the same yaml file works from the cli

How reproducible:


Steps to Reproduce:

I used this yaml file as example to reproduce this issue:


heat_template_version: 2018-03-02

description: > 
    reproducer example

parameters:
    user_key:
        type: string
        label: ssh_user_key
        description: Public user ssh key to be injected in the cluster VMs
        default: stackKey
        constraints:
            - custom_constraint: nova.keypair
    user_net1:
        type: string
        label: user_net1
        description: Add the required VM network
        default: net1
        constraints:
            - custom_constraint: neutron.network
    user_vm_flavor:
        type: string
        label: vm_flavor
        description: Choose a flavor
        default: m1.tiny
        constraints:
            - custom_constraint: nova.flavor
        default: m1.small
    user_vm_image:
        type: string
        label: vm_image
        description: Choose an image
        default: cirros-0.5.2
        constraints:
            - custom_constraint: glance.image

resources:
    my_server:
        type: OS::Nova::Server
        properties:
            name: vm01-heat
            security_groups: 
                - default
            networks: 
                - network: { get_param: user_net1 }
            key_name: { get_param: user_key }
            image: { get_param: user_vm_image }
            flavor: { get_param: user_vm_flavor }
            user_data: { get_file: 'https://raw.githubusercontent.com/hpcugent/openstack-templates/master/heat/scripts/mount_share.py' }

Actual results:
no stack it is deployed from horizon dashboard while it works from the cli

Expected results:
stack it is deployed from horizon dashboard as well from the cli


Additional info:
this issue has been verified on OSP 16.1.7 as well

Comment 1 Radomir Dopieralski 2022-04-07 14:40:42 UTC

*** This bug has been marked as a duplicate of bug 2036716 ***