liron aravot has posted comments on this change. Change subject: core:WIP: introducing OvfAutoUpdate ......................................................................
Patch Set 3: (10 inline comments) Yair, i've replied your comments. regarding the equals method, no - those fields are basically for use by the ovfupdater and we will make use of them in import vm as well. if you have a vm of which you update the description and later on you update it back to it's original value, the db_generation of the vm has changed, but equals should return true. .................................................... File backend/manager/dbscripts/upgrade/03_01_1490_add_vm_generation_columns.sql Line 1: select fn_db_add_column('vm_static', 'ovf_generation', 'BIGINT'); Line 2: select fn_db_add_column('vm_static', 'db_generation', 'BIGINT default 1'); Line 3: UPDATE vm_static set ovf_generation = 1; Line 4: ALTER TABLE vm_static ALTER COLUMN ovf_generation set default 0; As this is an update script, at first i have to set 1 to all existing vms as their ovf should be already updated. later on i want to enforce that any newly added vm will have default value of 0 for the ovf_generation. I separated this to two lines as I wanted this script to be clearer - instead of defining the column with default 1 and then changing it to default 0 - it would have seen weird and unclear in my opinion , do you prefer it that way? .................................................... File backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql Line 549: select fn_db_add_config_value('VmPriorityMaxValue','100','general'); Line 550: --Handling Keyboard Layout configuration for VNC Line 551: select fn_db_add_config_value('VncKeyboardLayout','en-us','general'); Line 552: select fn_db_add_config_value('WaitForVdsInitInSec','60','general'); Line 553: select fn_db_add_config_value('OvfUpdateIntervalInMinutes','1','general'); didn't know that it's ordered, will change. thanks. Line 554: --The default network connectivity check timeout Line 555: select fn_db_add_config_value('NetworkConnectivityCheckTimeoutInSeconds','120','general'); Line 556: -- AutoRecoveryConfiguration Line 557: select fn_db_add_config_value('AutoRecoveryAllowedTypes','{\"storage domains\":\"false\",\"hosts\":\"true\"}','general'); .................................................... File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java Line 37: log.infoFormat("InitResourceManager: {0}", new Date()); Line 38: ResourceManager.getInstance().init(); Line 39: AsyncTaskManager.getInstance().InitAsyncTaskManager(); Line 40: log.infoFormat("AsyncTaskManager: {0}", new Date()); Line 41: OvfDataUpdater.getInstance().InitOvfDataUpdater(); Added it with the same convention as other classes here, will change. Line 42: log.infoFormat("OvfDataUpdater: {0}", new Date()); Line 43: Line 44: if (Config.<Boolean> GetValue(ConfigValues.EnableVdsLoadBalancing)) { Line 45: VdsLoadBalancer.EnableLoadBalancer(); .................................................... File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java Line 28: private static final Log log = LogFactory.getLog(OvfDataUpdater.class); Line 29: private static final OvfDataUpdater INSTANCE = new OvfDataUpdater(); Line 30: Line 31: private OvfDataUpdater(){ Line 32: SchedulerUtil scheduler = SchedulerUtilQuartzImpl.getInstance(); I don't necessarily agree with you on that one, having somehow the instance without the job is dangerous as the client won't have ovf updates without knowing it - I don't want to be dependent on the call to the init method. Line 33: scheduler.scheduleAFixedDelayJob(this, "ovfUpdate_timer", new Class[] {}, Line 34: new Object[] {}, Config.<Integer> GetValue(ConfigValues.OvfUpdateIntervalInMinutes), Line 35: Config.<Integer> GetValue(ConfigValues.OvfUpdateIntervalInMinutes), TimeUnit.SECONDS); Line 36: } Line 45: Line 46: @OnTimerMethodAnnotation("ovfUpdate_timer") Line 47: public void ovfUpdate_timer() { Line 48: log.info("OvfDataUpdater: Attempting to update VMs/Templates Ovf."); Line 49: List<storage_pool> storagePools = DbFacade.getInstance().getStoragePoolDao().getAll(); Will change. Line 50: for (storage_pool pool : storagePools) { Line 51: try { Line 52: if (StoragePoolStatus.Up == pool.getstatus()) { Line 53: log.infoFormat("OvfDataUpdater: Attempting to update VMs/Templates Ovf in Data Center {0}", Line 55: List<VM> vmsForUpdate = Line 56: getVmsForUpdate(DbFacade.getInstance() Line 57: .getVmDao() Line 58: .getAllVmsForOvfUpdateForStoragePool(pool.getId())); Line 59: VmCommand.updateVmInSpm(pool.getId(), vmsForUpdate); It has been moved here, i've submitted it in a separate patch so it'll be easier to review. http://gerrit.ovirt.org/#/c/9340/ Line 60: if (!vmsForUpdate.isEmpty()) { Line 61: for (VM vm : vmsForUpdate) { Line 62: DbFacade.getInstance() Line 63: .getVmDao() Line 78: } Line 79: } catch (Exception ex) { Line 80: addAuditLogError(pool.getname()); Line 81: log.errorFormat("Exception while trying to update VMs/Templates ovf in Data Center {0}, the exception is {1}", Line 82: pool.getname(), I agree, will add. Line 83: ex.getMessage()); Line 84: } Line 85: } Line 86: } Line 131: * @return Line 132: */ Line 133: private boolean verifyDisksNotLocked (List<DiskImage> disks) { Line 134: for (DiskImage disk : disks) { Line 135: if (disk.getimageStatus() == ImageStatus.LOCKED) { I don't see any harm in it, will change if it bothers you :-) Line 136: return false; Line 137: } Line 138: } Line 139: return true; .................................................... File backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java Line 266: if (getVm() != null) { Line 267: if (getVm().getstatus() == VMStatus.ImageLocked) { Line 268: VmHandler.unlockVm(getVm(), getCompensationContext()); Line 269: } Line 270: throw new RuntimeException("asd"); sorry, was here for debug purpose. not part of this patch. Line 271: } else { Line 272: setCommandShouldBeLogged(false); Line 273: log.warn("VmCommand::EndVmCommand: Vm is null - not performing EndAction on Vm"); Line 274: } .................................................... File backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java Line 112: @Column(name = "db_generation") Line 113: private long db_generation; Line 114: Line 115: @Column(name = "ovf_generation") Line 116: private long ovf_generation; I've added it in the convention of all other member for uniformity with all other members of this class. I used long in order to support high number of vm/template updates though i also believe that int max value will be never reached. Line 117: Line 118: @Column(name = "is_smartcard_enabled") Line 119: private boolean smartcardEnabled; Line 120: -- To view, visit http://gerrit.ovirt.org/9328 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I9b5132300fb1f1fd94f771cab15efe5246dbeca8 Gerrit-PatchSet: 3 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Aravot <lara...@redhat.com> Gerrit-Reviewer: Allon Mureinik <amure...@redhat.com> Gerrit-Reviewer: Ayal Baron <aba...@redhat.com> Gerrit-Reviewer: Liron Aravot <lara...@redhat.com> Gerrit-Reviewer: Maor Lipchuk <mlipc...@redhat.com> Gerrit-Reviewer: Tal Nisan <tni...@redhat.com> Gerrit-Reviewer: Vered Volansky <vvola...@redhat.com> Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com> Gerrit-Reviewer: liron aravot <liron.ara...@gmail.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches