in source/idea/idea-virtual-desktop-controller/src/ideavirtualdesktopcontroller/app/api/virtual_desktop_api.py [0:0]
def _update_session(self, new_session: VirtualDesktopSession) -> VirtualDesktopSession:
old_session = self.session_db.get_from_db(idea_session_id=new_session.idea_session_id, idea_session_owner=new_session.owner)
if Utils.is_empty(old_session):
new_session.failure_reason = f'invalid RES session id: {new_session.idea_session_id}:{new_session.name} or owner {new_session.owner}. Not updating the session.'
self._logger.error(new_session.failure_reason)
return new_session
operation_failed = False
is_session_updated = False
is_server_updated = False
if not operation_failed and Utils.is_not_empty(new_session.name) and new_session.name != old_session.name:
is_session_updated = True
old_session.name = new_session.name
if not operation_failed and Utils.is_not_empty(new_session.description) and new_session.description != old_session.description:
is_session_updated = True
old_session.description = new_session.description
if not operation_failed and Utils.is_not_empty(new_session.server) and Utils.is_not_empty(new_session.server.instance_type):
old_server = self.server_db.get(instance_id=new_session.server.instance_id)
if Utils.is_not_empty(old_server) and old_server.instance_type != new_session.server.instance_type:
if old_session.hibernation_enabled:
error = f'Not allowed to change Instance type for session: {new_session.idea_session_id} because hibernation is enabled'
success = False
else:
error, success = self.controller_utils.change_instance_type(instance_id=new_session.server.instance_id, instance_type_name=new_session.server.instance_type)
if not success:
new_session.failure_reason = error
operation_failed = True
else:
old_session.server.instance_type = new_session.server.instance_type
is_server_updated = True
is_session_updated = True
if not operation_failed and Utils.is_not_empty(new_session.schedule):
old_session = self.schedule_utils.update_schedule_for_session(new_session.schedule, old_session)
is_session_updated = True
if not operation_failed and is_server_updated:
_ = self.server_db.update(old_session.server)
if not operation_failed and is_session_updated:
new_session = self.session_db.update(old_session)
self.controller_utils.create_tag(new_session.server.instance_id, constants.IDEA_TAG_NAME, f'{self.context.cluster_name()}-{new_session.name}-{new_session.owner}')
return new_session