feat: Implement delete VM action in list view actions popover
This commit is contained in:
@@ -206,11 +206,43 @@ def render_list():
|
||||
with col2:
|
||||
st.text(f"ID: {VirtualMachine['id']}")
|
||||
with col3:
|
||||
if st.button("View Details", key=f"view_{VirtualMachine['id']}"):
|
||||
st.session_state.selected_resource = VirtualMachine
|
||||
st.session_state.view_type = 'detail'
|
||||
st.session_state.selected_resource_type = 'VirtualMachine'
|
||||
st.rerun()
|
||||
# Initialize confirmation state for this VM if not already present
|
||||
confirm_key = f"confirm_delete_{VirtualMachine['id']}"
|
||||
if confirm_key not in st.session_state:
|
||||
st.session_state[confirm_key] = False
|
||||
|
||||
with st.popover("Actions", use_container_width=True):
|
||||
# View Details Button
|
||||
if st.button("View Details", key=f"popover_view_{VirtualMachine['id']}", use_container_width=True):
|
||||
st.session_state.selected_resource = VirtualMachine
|
||||
st.session_state.view_type = 'detail'
|
||||
st.session_state.selected_resource_type = 'VirtualMachine' # Ensure correct type
|
||||
st.rerun()
|
||||
|
||||
st.markdown("---") # Separator
|
||||
|
||||
# Delete Button / Confirmation
|
||||
if st.session_state[confirm_key]:
|
||||
st.warning("Are you sure?")
|
||||
col_confirm, col_cancel = st.columns(2)
|
||||
with col_confirm:
|
||||
if st.button("Confirm Delete", key=f"popover_confirm_delete_{VirtualMachine['id']}", use_container_width=True):
|
||||
result = st.session_state.client.delete_virtual_machine(VirtualMachine['id'])
|
||||
if result:
|
||||
st.success(f"VM {VirtualMachine['name']} deleted.")
|
||||
else:
|
||||
st.error(f"Failed to delete VM {VirtualMachine['name']}.")
|
||||
st.session_state[confirm_key] = False # Reset confirmation state
|
||||
st.rerun()
|
||||
with col_cancel:
|
||||
if st.button("Cancel", key=f"popover_cancel_delete_{VirtualMachine['id']}", use_container_width=True):
|
||||
st.session_state[confirm_key] = False # Reset confirmation state
|
||||
st.rerun()
|
||||
else:
|
||||
if st.button("Delete VM", key=f"popover_delete_{VirtualMachine['id']}", type="primary", use_container_width=True):
|
||||
st.session_state[confirm_key] = True # Set confirmation state
|
||||
st.rerun()
|
||||
|
||||
|
||||
else:
|
||||
st.info("No VirtualMachine workloads found.")
|
||||
@@ -260,12 +292,17 @@ def render_detail():
|
||||
})
|
||||
if result:
|
||||
st.success("VM workload updated successfully!")
|
||||
st.session_state.selected_resource = vm
|
||||
st.session_state.view_type = 'detail'
|
||||
st.session_state.selected_resource_type = 'VirtualMachine'
|
||||
# Re-fetch the updated VM data to ensure consistency
|
||||
updated_vm = st.session_state.client.get_virtual_machine(VirtualMachine['id'])
|
||||
if updated_vm:
|
||||
st.session_state.selected_resource = updated_vm
|
||||
else: # Handle case where VM might not be found after update (unlikely but possible)
|
||||
st.session_state.selected_resource = None
|
||||
st.session_state.view_type = 'list' # Go back to list if VM disappears
|
||||
st.session_state.selected_resource_type = 'virtual_machine' # Corrected resource type
|
||||
st.rerun()
|
||||
|
||||
# Delete VM Workload Button
|
||||
# Delete VM Workload Button (Now redundant with popover action, consider removing)
|
||||
if st.button("Delete VM Workload"):
|
||||
result = st.session_state.client.delete_virtual_machine(VirtualMachine['id'])
|
||||
if result:
|
||||
@@ -282,4 +319,4 @@ def render_detail():
|
||||
if st.session_state.view_type == 'detail' and st.session_state.selected_resource_type=='VirtualMachine':
|
||||
render_detail()
|
||||
else:
|
||||
render_list()
|
||||
render_list()
|
||||
|
||||
Reference in New Issue
Block a user