Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] API for VM Infra Reconfigure field form #1253

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jaisejose1123
Copy link

@jaisejose1123 jaisejose1123 commented Mar 25, 2024

Related PR
ManageIQ/manageiq#22980

API for VM Infra Reconfigure field form

Before - /vm_infra/reconfigure_form_fields/new,2983,4671
image

After
Get request for multiple ids GET /api/vm_infras/4671,2983

{
    "objectIds": [
        4671,
        4672
    ],
    "memory": "8",
    "memory_type": "GB",
    "socket_count": "2",
    "cores_per_socket_count": "1",
    "disks": [
        {
            "hdFilename": "7a0eaa34-df13-401f-b01a-1d19bb82329f",
            "hdType": "thin",
            "hdMode": "persistent",
            "hdSize": "40",
            "hdUnit": "GB",
            "add_remove": "",
            "cb_bootable": true,
            "vm": [
                {
                    "href": "http://localhost:3000/api/vm_infras/4671",
                    "id": "4671",
                    "vendor": "redhat",
                    "format": null,
                    "version": null,
                    "name": "2_vcr_liberty_keystone_v3",
                    "description": null,
                    "location": "20a02fe8-9586-4b01-b153-175b0257d1de.ovf",
                    "config_xml": null,
                    "autostart": null,
                    "host_id": null,
                    "last_sync_on": null,
                    "created_on": "2019-04-30T14:07:45Z",
                    "updated_on": "2020-01-14T15:11:22Z",
                    "storage_id": "29",
                    "guid": "8796fa1e-67bd-474c-b730-884f1cf7069a",
                    "ems_id": "56",
                    "last_scan_on": null,
                    "last_scan_attempt_on": null,
                    "uid_ems": "20a02fe8-9586-4b01-b153-175b0257d1de",
                    "retires_on": null,
                    "retired": null,
                    "boot_time": "2018-10-05T12:39:57Z",
                    "tools_status": null,
                    "standby_action": null,
                    "power_state": "off",
                    "state_changed_on": "2020-01-14T15:11:22Z",
                    "previous_state": "up",
                    "connection_state": "connected",
                    "last_perf_capture_on": null,
                    "registered": null,
                    "busy": null,
                    "smart": null,
                    "memory_reserve": 8192,
                    "memory_reserve_expand": null,
                    "memory_limit": 32768,
                    "memory_shares": null,
                    "memory_shares_level": null,
                    "cpu_reserve": null,
                    "cpu_reserve_expand": null,
                    "cpu_limit": null,
                    "cpu_shares": null,
                    "cpu_shares_level": null,
                    "cpu_affinity": null,
                    "ems_created_on": null,
                    "template": false,
                    "evm_owner_id": null,
                    "miq_group_id": "1",
                    "linked_clone": null,
                    "fault_tolerance": null,
                    "type": "ManageIQ::Providers::Redhat::InfraManager::Vm",
                    "ems_ref": "/api/vms/20a02fe8-9586-4b01-b153-175b0257d1de",
                    "ems_cluster_id": "10",
                    "retirement_warn": null,
                    "retirement_last_warn": null,
                    "vnc_port": null,
                    "flavor_id": null,
                    "availability_zone_id": null,
                    "cloud": false,
                    "retirement_state": null,
                    "cloud_network_id": null,
                    "cloud_subnet_id": null,
                    "cloud_tenant_id": null,
                    "raw_power_state": "down",
                    "publicly_available": null,
                    "orchestration_stack_id": null,
                    "retirement_requester": null,
                    "tenant_id": "1",
                    "resource_group_id": null,
                    "deprecated": null,
                    "storage_profile_id": null,
                    "cpu_hot_add_enabled": null,
                    "cpu_hot_remove_enabled": null,
                    "memory_hot_add_enabled": null,
                    "memory_hot_add_limit": null,
                    "memory_hot_add_increment": null,
                    "hostname": null,
                    "ems_ref_type": null,
                    "restart_needed": false,
                    "ancestry": "4678/4672",
                    "placement_group_id": null
                },
                {
                    "href": "http://localhost:3000/api/vm_infras/4672",
                    "id": "4672",
                    "vendor": "redhat",
                    "format": null,
                    "version": null,
                    "name": "3_vcr_kilo",
                    "description": null,
                    "location": "7404871d-ef18-4aee-86a4-6c9e1807867b.ovf",
                    "config_xml": null,
                    "autostart": null,
                    "host_id": null,
                    "last_sync_on": null,
                    "created_on": "2019-04-30T14:07:45Z",
                    "updated_on": "2020-01-14T15:11:22Z",
                    "storage_id": "29",
                    "guid": "8dfe73ad-8e67-4292-aeb1-840a4cb8a521",
                    "ems_id": "56",
                    "last_scan_on": null,
                    "last_scan_attempt_on": null,
                    "uid_ems": "7404871d-ef18-4aee-86a4-6c9e1807867b",
                    "retires_on": null,
                    "retired": null,
                    "boot_time": "2018-10-05T12:39:54Z",
                    "tools_status": null,
                    "standby_action": null,
                    "power_state": "off",
                    "state_changed_on": "2020-01-14T15:11:22Z",
                    "previous_state": "up",
                    "connection_state": "connected",
                    "last_perf_capture_on": null,
                    "registered": null,
                    "busy": null,
                    "smart": null,
                    "memory_reserve": 8192,
                    "memory_reserve_expand": null,
                    "memory_limit": 32768,
                    "memory_shares": null,
                    "memory_shares_level": null,
                    "cpu_reserve": null,
                    "cpu_reserve_expand": null,
                    "cpu_limit": null,
                    "cpu_shares": null,
                    "cpu_shares_level": null,
                    "cpu_affinity": null,
                    "ems_created_on": null,
                    "template": false,
                    "evm_owner_id": null,
                    "miq_group_id": "1",
                    "linked_clone": null,
                    "fault_tolerance": null,
                    "type": "ManageIQ::Providers::Redhat::InfraManager::Vm",
                    "ems_ref": "/api/vms/7404871d-ef18-4aee-86a4-6c9e1807867b",
                    "ems_cluster_id": "10",
                    "retirement_warn": null,
                    "retirement_last_warn": null,
                    "vnc_port": null,
                    "flavor_id": null,
                    "availability_zone_id": null,
                    "cloud": false,
                    "retirement_state": null,
                    "cloud_network_id": null,
                    "cloud_subnet_id": null,
                    "cloud_tenant_id": null,
                    "raw_power_state": "down",
                    "publicly_available": null,
                    "orchestration_stack_id": null,
                    "retirement_requester": null,
                    "tenant_id": "1",
                    "resource_group_id": null,
                    "deprecated": null,
                    "storage_profile_id": null,
                    "cpu_hot_add_enabled": null,
                    "cpu_hot_remove_enabled": null,
                    "memory_hot_add_enabled": null,
                    "memory_hot_add_limit": null,
                    "memory_hot_add_increment": null,
                    "hostname": null,
                    "ems_ref_type": null,
                    "restart_needed": false,
                    "ancestry": "4678",
                    "placement_group_id": null
                }
            ]
        }
    ],
    "network_adapters": [],
    "cdroms": [],
    "vm_vendor": "redhat",
    "vm_type": "ManageIQ::Providers::Redhat::InfraManager::Vm",
    "orchestration_stack_id": null,
    "disk_default_type": "thin",
    "cb_memory": false,
    "cb_cpu": false
}

Get request for single id GET /api/vm_infras/4671

{
    "objectIds": [
        4671
    ],
    "memory": "8",
    "memory_type": "GB",
    "socket_count": "2",
    "cores_per_socket_count": "1",
    "disks": [
        {
            "hdFilename": "7a0eaa34-df13-401f-b01a-1d19bb82329f",
            "hdType": "thin",
            "hdMode": "persistent",
            "hdSize": "40",
            "hdUnit": "GB",
            "add_remove": "",
            "cb_bootable": true,
            "vm": [
                {
                    "href": "http://localhost:3000/api/vm_infras/4671",
                    "id": "4671",
                    "vendor": "redhat",
                    "format": null,
                    "version": null,
                    "name": "2_vcr_liberty_keystone_v3",
                    "description": null,
                    "location": "20a02fe8-9586-4b01-b153-175b0257d1de.ovf",
                    "config_xml": null,
                    "autostart": null,
                    "host_id": null,
                    "last_sync_on": null,
                    "created_on": "2019-04-30T14:07:45Z",
                    "updated_on": "2020-01-14T15:11:22Z",
                    "storage_id": "29",
                    "guid": "8796fa1e-67bd-474c-b730-884f1cf7069a",
                    "ems_id": "56",
                    "last_scan_on": null,
                    "last_scan_attempt_on": null,
                    "uid_ems": "20a02fe8-9586-4b01-b153-175b0257d1de",
                    "retires_on": null,
                    "retired": null,
                    "boot_time": "2018-10-05T12:39:57Z",
                    "tools_status": null,
                    "standby_action": null,
                    "power_state": "off",
                    "state_changed_on": "2020-01-14T15:11:22Z",
                    "previous_state": "up",
                    "connection_state": "connected",
                    "last_perf_capture_on": null,
                    "registered": null,
                    "busy": null,
                    "smart": null,
                    "memory_reserve": 8192,
                    "memory_reserve_expand": null,
                    "memory_limit": 32768,
                    "memory_shares": null,
                    "memory_shares_level": null,
                    "cpu_reserve": null,
                    "cpu_reserve_expand": null,
                    "cpu_limit": null,
                    "cpu_shares": null,
                    "cpu_shares_level": null,
                    "cpu_affinity": null,
                    "ems_created_on": null,
                    "template": false,
                    "evm_owner_id": null,
                    "miq_group_id": "1",
                    "linked_clone": null,
                    "fault_tolerance": null,
                    "type": "ManageIQ::Providers::Redhat::InfraManager::Vm",
                    "ems_ref": "/api/vms/20a02fe8-9586-4b01-b153-175b0257d1de",
                    "ems_cluster_id": "10",
                    "retirement_warn": null,
                    "retirement_last_warn": null,
                    "vnc_port": null,
                    "flavor_id": null,
                    "availability_zone_id": null,
                    "cloud": false,
                    "retirement_state": null,
                    "cloud_network_id": null,
                    "cloud_subnet_id": null,
                    "cloud_tenant_id": null,
                    "raw_power_state": "down",
                    "publicly_available": null,
                    "orchestration_stack_id": null,
                    "retirement_requester": null,
                    "tenant_id": "1",
                    "resource_group_id": null,
                    "deprecated": null,
                    "storage_profile_id": null,
                    "cpu_hot_add_enabled": null,
                    "cpu_hot_remove_enabled": null,
                    "memory_hot_add_enabled": null,
                    "memory_hot_add_limit": null,
                    "memory_hot_add_increment": null,
                    "hostname": null,
                    "ems_ref_type": null,
                    "restart_needed": false,
                    "ancestry": "4678/4672",
                    "placement_group_id": null
                }
            ]
        }
    ],
    "network_adapters": [
        {
            "name": "nic1",
            "vlan": "ovirtmgmt",
            "mac": "00:1a:4a:fc:68:0e",
            "add_remove": ""
        }
    ],
    "cdroms": [],
    "vm_vendor": "redhat",
    "vm_type": "ManageIQ::Providers::Redhat::InfraManager::Vm",
    "orchestration_stack_id": null,
    "disk_default_type": "thin",
    "cb_memory": false,
    "cb_cpu": false
}

Todo: API response

config/api.yml Outdated
@@ -2647,7 +2658,7 @@
:identifier: picture_new
:policies:
:description: Policies
:identifier: miq_policy
:identifier: miq_policy,,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can support an Array here directly?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will move these under :vms: => :resource_collections: => :reconfigure:

@kbrock
Copy link
Member

kbrock commented Mar 26, 2024

(out of band) update:

Going to move these to vms_controller.rb#reconfigure

@kbrock
Copy link
Member

kbrock commented Mar 26, 2024

suggestion: (was out of band)

putting here so it doesn't get lost

    # @param type Vm
    def reconfigure_resource(type, id, data = nil)
      api_resource(type, id, "Reconfigure") do |vm|
        options = {}
        if data[:disk_add]
          ensure_supports(type, vm, :reconfigure_disk)

        end

        request = VmReconfigureRequest.make_request(@request_id, options, current_user)
        {}
      end
    end

end

@reconfig_values[:cb_memory] = false #if @request_id != new we need to change false
@reconfig_values[:cb_cpu] = false #if @request_id != new we need to change false
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#@reconfig_values[:cb_memory] = !!(@req && @req.options[:vm_memory]) # default for checkbox is false for new request

 #@reconfig_values[:cb_cpu] = !!(@req && (@req.options[:number_of_sockets] || @req.options[:cores_per_socket])) # default for checkbox is false for new request

@jaisejose1123 jaisejose1123 changed the title [WIP] API for VM Infra Reconfigure field form API for VM Infra Reconfigure field form Apr 8, 2024
@@ -1,4 +1,5 @@
require 'jbuilder'
require 'byebug'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove this line.

@@ -132,6 +133,9 @@ def resource_search(id, type, klass = nil, key_id = nil)
target =
if respond_to?("find_#{type}")
public_send("find_#{type}", id)
elsif type == "vm_infras"
vm_infra_reconfigure_form(type,klass,id)
#find_resource(klass, key_id, id)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please remove this too if not needed.

Comment on lines 1 to 5
module Api
class VmInfrasController < BaseProviderController
end

end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please fix the alignment

Comment on lines 249 to 254
id.split(',').map(&:to_i).each do |id|
if id.nil? || (key_id == "id" && !id.integer?)
raise BadRequestError, "Invalid #{klass} #{key_id} #{id || "nil"} specified"
end
end
id.split(/\s*,\s*/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm this doesn't seem right, we have an existing method for bulk resource actions already that doesn't require comma separated IDs, https://www.manageiq.org/docs/reference/latest/api/overview/bulk_query.html

Comment on lines 136 to 137
elsif type == "vm_infras"
vm_infra_reconfigure_form(type,klass,id)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't add anything action specific into the base renderer class or base resource_search method. This kind of thing should belong in the VmsController

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use collection_class to specify the specific class.
You can pass in something like the InfraManager::VM to basically act as a VmInfraController

@@ -149,6 +153,185 @@ def filter_resource(target, type, klass)
res
end

def vm_infra_reconfigure_form(type, klass, id)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, this should be in the VmsController

end

def get_reconfig_info(reconfigure_ids)
@reconfigureitems = Vm.find(reconfigure_ids).sort_by(&:name)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NOTE this is bypassing RBAC checks, don't do direct queries like this that is what resource_search is for.

@@ -0,0 +1,5 @@
module Api
class VmInfrasController < BaseProviderController
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why add a new controller instead of using the VmsController ?

config/api.yml Outdated
Comment on lines 804 to 814
:vm_infras:
:description: Vm Infras
:identifier: vm_infra
:options:
- :collection
:verbs: *gpppd
:klass: Vm
:resource_actions:
:get:
- :name: read
:identifier: vm_infra_view
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was expecting a reconfigure action to be added to the vms section, not an entirely new collection/controller

@kbrock
Copy link
Member

kbrock commented Apr 18, 2024

@jaisejose1123 could you push a more recent version of this? I'm curious where it currently stands

I marked as wip. please remove the WIP when you are ready for review. (or ping me and I can remove the WIP)

@kbrock kbrock added the wip label Apr 18, 2024
@kbrock kbrock changed the title API for VM Infra Reconfigure field form [WIP] API for VM Infra Reconfigure field form Apr 18, 2024
@jaisejose1123 jaisejose1123 force-pushed the api_vm_infra branch 5 times, most recently from 14726a8 to 4f96ba5 Compare April 19, 2024 10:10
@jaisejose1123
Copy link
Author

Implemented VM infrastructures inside the VM controller.

@jaisejose1123
Copy link
Author

Implemented VM infrastructures inside the VM controller.

Api screen short for multiple id's
image
Backend result while calling this above api
image

Api screen short for multiple id's
image
Backend result while calling this above api
image

@jaisejose1123
Copy link
Author

When calling a single ID instead of multiple IDs, it should provide additional data. Consequently, we implemented APIs with different actions.

The below image will show the result while calling single id in manager-ui-classic
image

but while calling multiple id's it shows only limited data
image

@miq-bot
Copy link
Member

miq-bot commented Apr 19, 2024

Checked commit jaisejose1123@7cb123b with ruby 2.7.8, rubocop 1.56.3, haml-lint 0.51.0, and yamllint
3 files checked, 40 offenses detected

app/controllers/api/base_controller/generic.rb

app/controllers/api/vms_controller.rb

spec/requests/authentications_spec.rb

resource_to_jbuilder(type, type, resource, opts).attributes!
end

def reconfigure_calculations(mbsize)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please move down to private section

Comment on lines +103 to +106
unless id
data_spec = data.collect { |key, val| "#{key}=#{val}" }.join(", ")
raise NotFoundError, "Invalid #{type} resource specified - #{data_spec}"
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation is off here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

api_resource will ensure an id is there and will resource_search as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as my prior comment, suggest this indentation is fixed and the guard clause is moved to the very top of the method and move new_row assignment after it.

@agrare
Copy link
Member

agrare commented Apr 22, 2024

I assume at some point this will create a VmReconfigureRequest right?

Comment on lines +140 to +148
def reconfigure_calculations(mbsize)
humansize = mbsize
fmt = "MB"
if mbsize.to_i > 1024 && (mbsize.to_i % 1024).zero?
humansize = mbsize.to_i / 1024
fmt = "GB"
end
return humansize.to_s, fmt
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like something that we should just say "reconfigure values must be in bytes" as part of the API documentation and then handle that in core rather than trying to figure out if it is mb/gb/etc...

@@ -489,4 +489,4 @@ def credential_types
end
end.deep_stringify_keys
end
end
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trailing whitespace

Suggested change
end
end

@jeffibm
Copy link
Member

jeffibm commented Apr 23, 2024

Hey @jaisejose1123 ,

I had a short discussion with @kbrock and below is the outcome.

  • Explained the conversion of http.get and use API.get
  • Discussed about the method in reconfigure.rb/def get_reconfig_info
  • talked about attibutes=supports_reconfigure_cdrome/network_Adapters
  • @kbrock to talk with @Fryguy about the supports column.
  • @jeffibm to checkout this branch and get the new response, reformat the response similar to the output from get_reconfig_info method.

@jaisejose1123 , could you please update the PR.

@@ -1,4 +1,5 @@
module Api
require 'byebug'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

debug code... please remove after done testing.

@@ -252,4 +252,4 @@ def validate_id(id, key_id, klass)
end
end
end
end
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing newline at the end of the file.

Comment on lines +60 to +69
new_row = {
:id => id.to_s,
:long_id => id.to_s,
:cells => []
}

unless id
data_spec = data.collect { |key, val| "#{key}=#{val}" }.join(", ")
raise NotFoundError, "Invalid #{type} resource specified - #{data_spec}"
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prefer a guard clause right at the beginning... Do we need to say what id was invalid?
Fixed indents.

Suggested change
new_row = {
:id => id.to_s,
:long_id => id.to_s,
:cells => []
}
unless id
data_spec = data.collect { |key, val| "#{key}=#{val}" }.join(", ")
raise NotFoundError, "Invalid #{type} resource specified - #{data_spec}"
end
unless id
data_spec = data.collect { |key, val| "#{key}=#{val}" }.join(", ")
raise NotFoundError, "Invalid #{type} resource specified - #{data_spec}"
end
new_row = {
:id => id.to_s,
:long_id => id.to_s,
:cells => []
}

new_row[:cells] << {:hostname => resource&.host&.name}
new_row[:cells] << {:num_cpu => resource.num_cpu}
new_row[:cells] << {:cpu_cores_per_socket => resource.cpu_cores_per_socket}
new_row[:cells] << {:mem_cpu => "#{(resource.mem_cpu.to_i / 1024.0).to_i}GB"}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these check if resource exists. Suggest we do resource&. for each in case resource is nil. Or, should we return if resource.nil? or raise an exception?

Comment on lines +103 to +106
unless id
data_spec = data.collect { |key, val| "#{key}=#{val}" }.join(", ")
raise NotFoundError, "Invalid #{type} resource specified - #{data_spec}"
end
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as my prior comment, suggest this indentation is fixed and the guard clause is moved to the very top of the method and move new_row assignment after it.

:hdSize => dsize,
:hdUnit => dunit,
:add_remove => '',
:cb_bootable => disk.bootable}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kbrock do you know if we have a better way to access this data? I don't see virtual columns for most of this data. At the least, we can probably do includes and selects.

@jaisejose1123
Copy link
Author

jaisejose1123 commented Apr 24, 2024

By utilizing the following GET API, we can gather the VM resources for the reconfigure field form for single id
Api
http://localhost:3000/api/vms/4671?attributes=name,num_cpu,cpu_cores_per_socket,mem_cpu,vendor,type,host.name,hardware.guest_devices,lans,hardware.disks,hardware.cdroms

Response
image

by this we can collect all the related information like lans,disks,network_adapters,hardware etc...

@jaisejose1123
Copy link
Author

jaisejose1123 commented Apr 24, 2024

For multiple IDs, we can retrieve the data using bulk querying

post Apihttp://localhost:3000/api/vms?attributes=name,num_cpu,cpu_cores_per_socket,mem_cpu,vendor,type,host.name,hardware.guest_devices,lans,hardware.disks,hardware.cdroms

by passing json
{
"action" : "query",
"resources" : [
{ "id" : 2983 },
{ "id" : 4671 }
]
}

image

Response includes all the related information like lans,disks,network_adapters,hardware etc...
image

@kbrock
Copy link
Member

kbrock commented Apr 24, 2024

Most of this data should be retrieved using the standard GET api.
Much of the data has a little manipulation but is pretty standard https://github.com/ManageIQ/manageiq-ui-classic/blob/master/app/controllers/mixins/actions/vm_actions/reconfigure.rb#L233

We do run into problems when accessing vm.supports?(:reconfigure_network_adapters).
It looks like some of this has been

@miq-bot miq-bot added the stale label Jul 29, 2024
@miq-bot
Copy link
Member

miq-bot commented Jul 29, 2024

This pull request has been automatically marked as stale because it has not been updated for at least 3 months.

If these changes are still valid, please remove the stale label, make any changes requested by reviewers (if any), and ensure that this issue is being looked at by the assigned/reviewer(s).

1 similar comment
@miq-bot
Copy link
Member

miq-bot commented Nov 1, 2024

This pull request has been automatically marked as stale because it has not been updated for at least 3 months.

If these changes are still valid, please remove the stale label, make any changes requested by reviewers (if any), and ensure that this issue is being looked at by the assigned/reviewer(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants