GithubHelp home page GithubHelp logo

Update Service Template via API about manageiq HOT 4 OPEN

agrare avatar agrare commented on June 2, 2024
Update Service Template via API

from manageiq.

Comments (4)

agrare avatar agrare commented on June 2, 2024

I was able to reproduce this

  1. Create a VMware ServiceTemplate
  2. Try to edit the config_info via the API: POST /api/service_templates/1 {"action": "edit", "config_info": {"src_vm_id": 3}}
[489, 498] in /home/grare/adam/src/manageiq/manageiq/app/models/service_template.rb
   489:   def update_service_resources(config_info, auth_user = nil)
   490:     config_info = config_info.except(:provision, :retirement, :reconfigure)
   491:     workflow_class = MiqProvisionWorkflow.class_for_source(config_info[:src_vm_id])
   492:     if workflow_class
   493:       service_resources.find_by(:resource_type => 'MiqRequest').try(:destroy)
=> 494:       new_request = workflow_class.new(config_info, auth_user).make_request(nil, config_info)
   495: 
   496:       add_resource!(new_request)
   497:     end
   498:   end
(byebug) 

Backtrace:

(byebug) error
#<MiqAeException::Error: Unable to launch Automate Method because currently in SQL transaction>
(byebug) pp error.backtrace
["/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_method.rb:190:in `ruby_method_runnable?'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_method.rb:198:in `invoke_inline_ruby'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_method.rb:10:in `invoke_inline'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_method.rb:92:in `invoke'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:544:in `invoke_method'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:368:in `block in process_method_raw'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/more_core_extensions-4.4.0/lib/more_core_extensions/core_ext/benchmark/realtime_store.rb:20:in `realtime_store'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/more_core_extensions-4.4.0/lib/more_core_extensions/core_ext/benchmark/realtime_store.rb:62:in `realtime_block'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:361:in `process_method_raw'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:374:in `process_method'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:313:in `block in process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `each'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:303:in `process_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:210:in `instantiate'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:650:in `process_relationship_raw'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:354:in `process_relationship'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:313:in `block in process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `each'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:303:in `process_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:210:in `instantiate'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:650:in `process_relationship_raw'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:354:in `process_relationship'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:313:in `block in process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `each'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:307:in `process_filtered_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_object.rb:303:in `process_fields'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:210:in `instantiate'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:54:in `instantiate_with_user'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:48:in `block in instantiate'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/user.rb:381:in `with_user'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine/miq_ae_workspace_runtime.rb:48:in `instantiate'",
 "/home/grare/adam/src/manageiq/manageiq-automation_engine/lib/miq_automation_engine/engine/miq_ae_engine.rb:328:in `resolve_automation_object'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/miq_request_workflow.rb:698:in `dialog_name_from_automate'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/miq_provision_virt_workflow.rb:49:in `dialog_name_from_automate'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/manageiq/providers/infra_manager/provision_workflow.rb:63:in `dialog_name_from_automate'",
 "/home/grare/adam/src/manageiq/manageiq-providers-vmware/app/models/manageiq/providers/vmware/infra_manager/provision_workflow.rb:21:in `dialog_name_from_automate'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/miq_request_workflow.rb:651:in `get_dialogs'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/miq_provision_virt_workflow.rb:27:in `initialize'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/service_template.rb:494:in `new'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/service_template.rb:494:in `update_service_resources'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/service_template.rb:154:in `block in update_catalog_item'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:209:in `transaction'",
 "/home/grare/adam/.gem/ruby/3.1.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:290:in `transaction'",
 "/home/grare/adam/src/manageiq/manageiq/app/models/service_template.rb:150:in `update_catalog_item'",
 "/home/grare/adam/src/manageiq/manageiq-api/app/controllers/api/service_templates_controller.rb:26:in `edit_resource'",
 "/home/grare/adam/src/manageiq/manageiq-api/app/controllers/api/base_controller/manager.rb:101:in `update_one_collection'",
 "/home/grare/adam/src/manageiq/manageiq-api/app/controllers/api/base_controller/manager.rb:23:in `update_collection'",
 "/home/grare/adam/src/manageiq/manageiq-api/app/controllers/api/base_controller.rb:95:in `update'",

from manageiq.

agrare avatar agrare commented on June 2, 2024

cc @Fryguy

from manageiq.

kbrock avatar kbrock commented on June 2, 2024

@agrare The culprit: dialog_name_from_automate https://github.com/ManageIQ/manageiq/blob/master/app/models/miq_request_workflow.rb#L651

Also of interest:

But specifically what I am trying to update is the src_vm_id under config_info. I've tried doing a post and a put to the /api/service_template/:id endpoint with the following body:

@Fryguy Is this related to our previous discussion around removing edit from some request models in the api?

from manageiq.

Fryguy avatar Fryguy commented on June 2, 2024

@Fryguy Is this related to our previous discussion around removing edit from some request models in the api?

I don't believe so

from manageiq.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.