Frank Kobzik has uploaded a new change for review.
Change subject: frontend: [WIP] Split timezone for sysprep
......................................................................
frontend: [WIP] Split timezone for sysprep
This patch clarifies the semantics of timezone (for
vms/templates/pools). Until now, the timezone was used for both sysprep
and for initial hw clock shift when starting VMs. This patch introduces
a new field sysprep_time_zone, that is only used for sysprep. The "old"
time_zone field is used for setting shift of hw clock when starting a
VM. The updates of clock shift from vdsm are still saved to utc_diff
field, however, they are ignored on VM start (due to incorrect values
reported by QEMU).
Frontend:
- vm/template/pool crud dialog:
- new "Time Zone" listbox to general subtab
- "Time Zone" listbox from "initial run" moved to windows specific
section and renamed to "Time Zone for Sysprep"
TODO:
- resolve two todos in ExistingVmModelBehavior and VmModelBehaviorBase.
Change-Id: Id5da2b3ef9359cdbb096181513b661fab2eb07c0
Signed-off-by: Frantisek Kobzik <[email protected]>
Bug-Url: https://bugzilla.redhat.com/978942
---
M
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
M
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolGeneralModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateGeneralModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmGeneralModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
M
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
M
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
20 files changed, 177 insertions(+), 40 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/91/17191/1
diff --git
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
index d399c9a..a2ee7f9 100644
---
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
+++
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java
@@ -407,6 +407,9 @@
@DefaultStringValue("Time Zone")
String tzVmPopup();
+ @DefaultStringValue("Time Zone for Sysprep")
+ String sysprepTzVmPopup();
+
@DefaultStringValue("Console")
String consoleVmPopup();
@@ -1111,9 +1114,6 @@
@DefaultStringValue("Advanced Parameters")
String advancedParameters();
-
- @DefaultStringValue("General")
- String initialRunGeneral();
@DefaultStringValue("Windows")
String initialRunWindows();
diff --git
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index dbcfc18..399349f 100644
---
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -223,6 +223,11 @@
@WithElementId("copyTemplatePermissions")
public EntityModelCheckBoxEditor copyTemplatePermissionsEditor;
+ @UiField(provided = true)
+ @Path(value = "timeZone.selectedItem")
+ @WithElementId("timeZone")
+ public ListModelListBoxEditor<Object> timeZoneEditor;
+
// == Pools ==
@UiField
protected DialogTab poolTab;
@@ -325,9 +330,9 @@
public ListModelListBoxEditor<Object> domainEditor;
@UiField(provided = true)
- @Path(value = "timeZone.selectedItem")
- @WithElementId("timeZone")
- public ListModelListBoxEditor<Object> timeZoneEditor;
+ @Path(value = "sysprepTimeZone.selectedItem")
+ @WithElementId("sysprepTimeZone")
+ public ListModelListBoxEditor<Object> sysprepTimeZoneEditor;
// ==Console Tab==
@UiField
@@ -784,6 +789,18 @@
}
}, new ModeSwitchingVisibilityRenderer());
+ sysprepTimeZoneEditor = new ListModelListBoxEditor<Object>(new
NullSafeRenderer<Object>() {
+ @Override
+ public String renderNullSafe(Object object) {
+ TimeZoneModel timeZone = (TimeZoneModel) object;
+ if (timeZone.isDefault()) {
+ return
messages.defaultTimeZoneCaption(timeZone.getDisplayValue());//$NON-NLS-1$
+ } else {
+ return timeZone.getDisplayValue();
+ }
+ }
+ }, new ModeSwitchingVisibilityRenderer());
+
// Console tab
displayProtocolEditor = new ListModelListBoxEditor<Object>(new
NullSafeRenderer<Object>() {
@Override
@@ -891,6 +908,7 @@
isConsoleDeviceEnabledEditor.setLabel(constants.consoleDeviceEnabled());
copyTemplatePermissionsEditor.setLabel(constants.copyTemplatePermissions());
isSmartcardEnabledEditor.setLabel(constants.smartcardVmPopup());
+ timeZoneEditor.setLabel(constants.tzVmPopup());
// Pools Tab
poolTab.setLabel(constants.poolVmPopup());
@@ -905,7 +923,7 @@
// initial run Tab
initialRunTab.setLabel(constants.initialRunVmPopup());
domainEditor.setLabel(constants.domainVmPopup());
- timeZoneEditor.setLabel(constants.tzVmPopup());
+ sysprepTimeZoneEditor.setLabel(constants.sysprepTzVmPopup());
// Console Tab
consoleTab.setLabel(constants.consoleVmPopup());
@@ -1265,6 +1283,7 @@
isRunAndPauseEditor.setTabIndex(nextTabIndex++);
isDeleteProtectedEditor.setTabIndex(nextTabIndex++);
copyTemplatePermissionsEditor.setTabIndex(nextTabIndex++);
+ timeZoneEditor.setTabIndex(nextTabIndex++);
numOfVmsEditor.setTabIndex(nextTabIndex++);
prestartedVmsEditor.setTabIndex(nextTabIndex++);
@@ -1288,7 +1307,7 @@
// ==Initial run Tab==
nextTabIndex = initialRunTab.setTabIndexes(nextTabIndex);
- timeZoneEditor.setTabIndex(nextTabIndex++);
+ sysprepTimeZoneEditor.setTabIndex(nextTabIndex++);
domainEditor.setTabIndex(nextTabIndex++);
// ==Console Tab==
diff --git
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
index 7ac2323..54ed702 100644
---
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
+++
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml
@@ -257,6 +257,7 @@
</g:FlowPanel>
<e:EntityModelTextBoxEditor ui:field="descriptionEditor" />
<e:EntityModelTextBoxEditor ui:field="commentEditor" />
+ <e:ListModelListBoxEditor
ui:field="timeZoneEditor" />
<!-- New VM Pool
-->
<e:EntityModelTextBoxEditor ui:field="numOfVmsEditor" />
@@ -351,9 +352,8 @@
<t:DialogTab ui:field="initialRunTab">
<t:content>
<g:FlowPanel>
- <g:Label
addStyleNames="{style.sectionLabel}" text="{constants.initialRunGeneral}" />
- <e:ListModelListBoxEditor
ui:field="timeZoneEditor" />
<g:Label
addStyleNames="{style.sectionLabel}" text="{constants.initialRunWindows}" />
+ <e:ListModelListBoxEditor
ui:field="sysprepTimeZoneEditor" />
<e:ListModelListBoxEditor
ui:field="domainEditor" />
</g:FlowPanel>
</t:content>
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
index f053b6c..2bb1f39 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java
@@ -181,6 +181,7 @@
vm.setStoragePoolId(instance.getStoragePoolId());
vm.setStoragePoolName(instance.getStoragePoolName());
vm.setTimeZone(instance.getTimeZone());
+ vm.setSysprepTimeZone(instance.getSysprepTimeZone());
vm.setTransparentHugePages(instance.isTransparentHugePages());
vm.setUsageCpuPercent(instance.getUsageCpuPercent());
vm.setUsageMemPercent(instance.getUsageMemPercent());
@@ -407,6 +408,7 @@
obj.setNumOfSockets(instance.getNumOfSockets());
obj.setStatus(instance.getStatus());
obj.setTimeZone(instance.getTimeZone());
+ obj.setSysPrepTimeZone(instance.getSysPrepTimeZone());
obj.setUsbPolicy(instance.getUsbPolicy());
obj.setVdsGroupId(instance.getVdsGroupId());
obj.setVdsGroupName(instance.getVdsGroupName());
@@ -446,6 +448,7 @@
obj.setAllowConsoleReconnect(instance.isAllowConsoleReconnect());
obj.setNumOfSockets(instance.getNumOfSockets());
obj.setTimeZone(instance.getTimeZone());
+ obj.setSysPrepTimeZone(instance.getSysPrepTimeZone());
obj.setUsbPolicy(instance.getUsbPolicy());
obj.setVdsGroupId(instance.getVdsGroupId());
obj.setId(instance.getId());
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolGeneralModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolGeneralModel.java
index 05a58a3..6e8ce8b 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolGeneralModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolGeneralModel.java
@@ -317,18 +317,26 @@
private String timeZone;
- public String getTimeZone()
- {
+ public String getTimeZone() {
return timeZone;
}
- public void setTimeZone(String value)
- {
+ public void setTimeZone(String value) {
if (!StringHelper.stringsEqual(timeZone, value))
{
timeZone = value;
onPropertyChanged(new PropertyChangedEventArgs("TimeZone"));
//$NON-NLS-1$
}
+ }
+
+ private String sysprepTimeZone;
+
+ public String getSysprepTimeZone() {
+ return sysprepTimeZone;
+ }
+
+ public void setSysprepTimeZone(String sysprepTimeZone) {
+ this.sysprepTimeZone = sysprepTimeZone;
}
private String cpuInfo;
@@ -487,6 +495,7 @@
setHasTimeZone(AsyncDataProvider.isWindowsOsType(getvm().getVmOsId()));
poolGeneralModel.setTimeZone(getvm().getTimeZone());
+
poolGeneralModel.setSysprepTimeZone(getvm().getSysprepTimeZone());
poolGeneralModel.setIsStateless(getvm().isStateless());
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
index 4f124da..36ad3a0 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
@@ -486,6 +486,10 @@
.getSelectedItem() != null) ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey()
: ""); //$NON-NLS-1$
+
vm.setSysprepTimeZone((model.getSysprepTimeZone().getIsAvailable() &&
model.getSysprepTimeZone()
+ .getSelectedItem() != null) ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey()
+ : ""); //$NON-NLS-1$
vm.setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
vm.setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer)
model.getNumOfSockets().getSelectedItem());
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateGeneralModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateGeneralModel.java
index 577327a..6a4c793 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateGeneralModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateGeneralModel.java
@@ -332,6 +332,20 @@
}
}
+ private String sysprepTimeZone;
+
+ public void setSysprepTimeZone(String sysprepTimeZone) {
+ if (!StringHelper.stringsEqual(sysprepTimeZone, sysprepTimeZone))
+ {
+ this.sysprepTimeZone = sysprepTimeZone;
+ onPropertyChanged(new
PropertyChangedEventArgs("SysprepTimeZone")); //$NON-NLS-1$
+ }
+ }
+
+ public String getSysprepTimeZone() {
+ return sysprepTimeZone;
+ }
+
private boolean hasUsbPolicy;
public boolean getHasUsbPolicy()
@@ -405,8 +419,7 @@
updateProperties();
}
- private void updateProperties()
- {
+ private void updateProperties() {
VmTemplate template = getEntity();
setName(template.getName());
@@ -438,6 +451,7 @@
setHasTimeZone(AsyncDataProvider.isWindowsOsType(template.getOsId()));
setTimeZone(template.getTimeZone());
+ setSysprepTimeZone(template.getSysPrepTimeZone());
setHasUsbPolicy(true);
translator = EnumTranslator.Create(UsbPolicy.class);
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index b31d0ab..e961cbd 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -450,6 +450,9 @@
template.setTimeZone((model.getTimeZone().getIsAvailable() &&
model.getTimeZone().getSelectedItem() != null) ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey()
: ""); //$NON-NLS-1$
+
template.setSysPrepTimeZone((model.getSysprepTimeZone().getIsAvailable() &&
model.getSysprepTimeZone().getSelectedItem() != null) ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey()
+ : ""); //$NON-NLS-1$
template.setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
template.setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer) model.getNumOfSockets().getSelectedItem());
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
index a21db77..95557bd 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
@@ -607,6 +607,9 @@
tempVar.setTimeZone(model.getTimeZone().getIsAvailable() &&
model.getTimeZone().getSelectedItem() != null ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey()
: ""); //$NON-NLS-1$
+ tempVar.setSysprepTimeZone(model.getSysprepTimeZone().getIsAvailable()
&& model.getSysprepTimeZone().getSelectedItem() != null ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey()
+ : ""); //$NON-NLS-1$
tempVar.setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
tempVar.setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer) model.getNumOfSockets().getSelectedItem());
@@ -1035,6 +1038,9 @@
gettempVm().setTimeZone((model.getTimeZone().getIsAvailable() &&
model.getTimeZone()
.getSelectedItem() != null) ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey() : ""); //$NON-NLS-1$
+
gettempVm().setSysprepTimeZone((model.getSysprepTimeZone().getIsAvailable() &&
model.getSysprepTimeZone()
+ .getSelectedItem() != null) ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey() : ""); //$NON-NLS-1$
gettempVm().setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
gettempVm().setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer) model.getNumOfSockets().getSelectedItem());
@@ -1324,6 +1330,21 @@
}
}
+ private void vmModelSysprepTimeZoneItemsChanged() {
+ UnitVmModel model = (UnitVmModel) getWindow();
+ if (!model.getIsNew())
+ {
+ UserPortalItemModel selectedItem = (UserPortalItemModel)
getSelectedItem();
+ VM vm = (VM) selectedItem.getEntity();
+
+ if (!StringHelper.isNullOrEmpty(vm.getTimeZone()))
+ {
+
model.getSysprepTimeZone().setSelectedItem(Linq.firstOrDefault(model.getSysprepTimeZone().getItems(),
+ new Linq.TimeZonePredicate(vm.getSysprepTimeZone())));
+ }
+ }
+ }
+
@Override
public void eventRaised(Event ev, Object sender, EventArgs args)
{
@@ -1350,6 +1371,10 @@
{
vmModel_TimeZone_ItemsChanged();
}
+ else if (ev.matchesDefinition(ItemsChangedEventDefinition) && sender
== model.getSysprepTimeZone())
+ {
+ vmModelSysprepTimeZoneItemsChanged();
+ }
}
@Override
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
index 9b88129..dad605b 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
@@ -22,6 +22,7 @@
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
@SuppressWarnings("unused")
public class ExistingVmModelBehavior extends VmModelBehaviorBase
@@ -195,14 +196,14 @@
getModel().getVncKeyboardLayout().setSelectedItem(vm.getVncKeyboardLayout());
- if (vm.isInitialized())
- {
- getModel().getTimeZone()
- .setChangeProhibitionReason("Time Zone cannot be change
since the Virtual Machine was booted at the first time."); //$NON-NLS-1$
- getModel().getTimeZone().setIsChangable(false);
+ if (vm.isInitialized()) { //TODO check if this is called for editvm at
all! (i don't think so)
+ getModel().getSysprepTimeZone()
+
.setChangeProhibitionReason(ConstantsManager.getInstance().getConstants().timeZoneNotEditableAlreadyRun());
//$NON-NLS-1$
+ getModel().getSysprepTimeZone().setIsChangable(false);
}
updateTimeZone(vm.getTimeZone());
+ updateSysprepTimeZone(vm.getSysprepTimeZone());
// Update domain list
updateDomain();
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
index 6860aa2..5dc517b 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
@@ -206,6 +206,7 @@
updateSelectedCdImage(this.vm.getStaticData());
updateTimeZone(this.vm.getTimeZone());
+ updateSysprepTimeZone(this.vm.getSysprepTimeZone());
updateConsoleDevice(this.vm.getId());
// Update domain list
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
index c7ccbf6..6713610 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java
@@ -102,6 +102,7 @@
updateConsoleDevice(template.getId());
updateTimeZone(template.getTimeZone());
+ updateSysprepTimeZone(template.getSysPrepTimeZone());
// Update domain list
updateDomain();
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
index bba2966..dc6bd51 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java
@@ -104,6 +104,7 @@
}
updateTimeZone(vmBase.getTimeZone());
+ updateSysprepTimeZone(vmBase.getSysPrepTimeZone());
updateConsoleDevice(vmBase.getId());
// Update domain list
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
index 3fbe8c4..b00ef6d 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
@@ -164,6 +164,7 @@
getModel().getInitrd_path().setEntity(this.template.getInitrdUrl());
updateTimeZone(template.getTimeZone());
+ updateSysprepTimeZone(template.getSysPrepTimeZone());
// Update domain list
updateDomain();
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
index 686a463..7973ba4 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java
@@ -140,9 +140,10 @@
getIsStateless().setIsChangable(false);
getIsRunAndPause().setIsChangable(false);
getIsDeleteProtected().setIsChangable(false);
+ getTimeZone().setIsChangable(false);
// ==Initial run Tab==
- getTimeZone().setIsChangable(false);
+ getSysprepTimeZone().setIsChangable(false);
getDomain().setIsChangable(false);
// ==Console Tab==
@@ -563,6 +564,16 @@
private void setTimeZone(NotChangableForVmInPoolListModel value)
{
privateTimeZone = value;
+ }
+
+ private NotChangableForVmInPoolListModel privateSysprepTimeZone;
+
+ public ListModel getSysprepTimeZone() {
+ return privateSysprepTimeZone;
+ }
+
+ public void setSysprepTimeZone(NotChangableForVmInPoolListModel val) {
+ this.privateSysprepTimeZone = val;
}
private NotChangableForVmInPoolListModel privateNumOfSockets;
@@ -1147,6 +1158,9 @@
setTimeZone(new NotChangableForVmInPoolListModel());
getTimeZone().getSelectedItemChangedEvent().addListener(this);
+
+ setSysprepTimeZone(new NotChangableForVmInPoolListModel());
+ getSysprepTimeZone().getSelectedItemChangedEvent().addListener(this);
setDefaultHost(new NotChangableForVmInPoolListModel());
getDefaultHost().getSelectedItemChangedEvent().addListener(this);
@@ -2078,7 +2092,7 @@
&& getTemplate().getIsValid() && getMemSize().getIsValid()
&& getMinAllocatedMemory().getIsValid());
- setIsFirstRunTabValid(getDomain().getIsValid() &&
getTimeZone().getIsValid());
+ setIsFirstRunTabValid(getDomain().getIsValid() &&
getSysprepTimeZone().getIsValid());
setIsDisplayTabValid(getUsbPolicy().getIsValid() &&
getNumOfMonitors().getIsValid());
setIsHostTabValid(getDefaultHost().getIsValid());
setIsAllocationTabValid(getDisksAllocationModel().getIsValid() &&
getMinAllocatedMemory().getIsValid());
@@ -2089,7 +2103,7 @@
&& getDisksAllocationModel().getIsValid() &&
getTemplate().getIsValid() && getComment().getIsValid()
&& getDefaultHost().getIsValid() && getMemSize().getIsValid()
&& getMinAllocatedMemory().getIsValid()
&& getNumOfMonitors().getIsValid() && getDomain().getIsValid()
&& getUsbPolicy().getIsValid()
- && getTimeZone().getIsValid() && getOSType().getIsValid() &&
getCdImage().getIsValid()
+ && getTimeZone().getIsValid() &&
getSysprepTimeZone().getIsValid() && getOSType().getIsValid() &&
getCdImage().getIsValid()
&& getKernel_path().getIsValid()
&& getInitrd_path().getIsValid()
&& getKernel_parameters().getIsValid()
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmGeneralModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmGeneralModel.java
index 0a69841..5783df5 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmGeneralModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmGeneralModel.java
@@ -404,6 +404,19 @@
}
}
+ private String sysprepTimeZone;
+
+ public String getSysprepTimeZone() {
+ return sysprepTimeZone;
+ }
+
+ public void setSysprepTimeZone(String value) {
+ if (!StringHelper.stringsEqual(timeZone, value)) {
+ sysprepTimeZone= value;
+ onPropertyChanged(new
PropertyChangedEventArgs("SysprepTimeZone")); //$NON-NLS-1$
+ }
+ }
+
private boolean hasDefaultHost;
public boolean getHasDefaultHost()
@@ -556,6 +569,7 @@
setHasTimeZone(AsyncDataProvider.isWindowsOsType(vm.getVmOsId()));
setTimeZone(vm.getTimeZone());
+ setSysprepTimeZone(vm.getSysprepTimeZone());
setHasCustomProperties(!StringHelper.stringsEqual(vm.getCustomProperties(),
"")); //$NON-NLS-1$
setCustomProperties(getHasCustomProperties() ? "Configured" :
"Not-Configured"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
index ef8038c..8532bcf 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
@@ -1360,6 +1360,9 @@
tempVar.setTimeZone(model.getTimeZone().getIsAvailable() &&
model.getTimeZone().getSelectedItem() != null ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey()
: ""); //$NON-NLS-1$
+ tempVar.setSysprepTimeZone(model.getSysprepTimeZone().getIsAvailable()
&& model.getSysprepTimeZone().getSelectedItem() != null ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey()
+ : ""); //$NON-NLS-1$
tempVar.setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
tempVar.setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer) model.getNumOfSockets().getSelectedItem());
@@ -1953,6 +1956,9 @@
getcurrentVm().setTimeZone((model.getTimeZone().getIsAvailable() &&
model.getTimeZone().getSelectedItem() != null) ? ((TimeZoneModel)
model.getTimeZone()
.getSelectedItem()).getTimeZoneKey()
: ""); //$NON-NLS-1$
+
getcurrentVm().setSysprepTimeZone((model.getSysprepTimeZone().getIsAvailable()
&& model.getSysprepTimeZone().getSelectedItem() != null) ? ((TimeZoneModel)
model.getSysprepTimeZone()
+ .getSelectedItem()).getTimeZoneKey()
+ : ""); //$NON-NLS-1$
getcurrentVm().setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
getcurrentVm().setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/ (Integer) model.getNumOfSockets().getSelectedItem());
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
index dae4cf1..3209f29 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
@@ -179,37 +179,52 @@
}
- protected void updateTimeZone(final String selectedTimeZone)
- {
+ // TODO refactor these methods
+ protected void updateTimeZone(final String selectedTimeZone) {
if (StringHelper.isNullOrEmpty(selectedTimeZone)) {
updateDefaultTimeZone();
} else {
- doUpdateTimeZone(selectedTimeZone);
+ doUpdateTimeZoneForField(selectedTimeZone,
getModel().getTimeZone());
}
}
- protected void updateDefaultTimeZone()
- {
+ protected void updateDefaultTimeZone() {
TimeZoneModel.withLoadedDefaultTimeZoneKey(getTimeZoneType(), new
Runnable() {
-
@Override
public void run() {
- doUpdateTimeZone(null);
+ doUpdateTimeZoneForField(null, getModel().getTimeZone());
}
-
});
}
- private void doUpdateTimeZone(final String selectedTimeZone) {
- TimeZoneModel.withLoadedTimeZones(getTimeZoneType(), new Runnable() {
+ protected void updateSysprepTimeZone(final String timeZone) {
+ if (StringHelper.isNullOrEmpty(timeZone)) {
+ updateDefaultSysprepTimeZone();
+ } else {
+ doUpdateTimeZoneForField(timeZone,
getModel().getSysprepTimeZone());
+ }
+ }
+ protected void updateDefaultSysprepTimeZone() {
+ TimeZoneModel.withLoadedDefaultTimeZoneKey(getTimeZoneType(), new
Runnable() {
+ @Override
+ public void run() {
+ doUpdateTimeZoneForField(null,
getModel().getSysprepTimeZone());
+ }
+ });
+ }
+
+ private void doUpdateTimeZoneForField(final String selectedTimeZone, final
ListModel field) {
+ TimeZoneModel.withLoadedTimeZones(getTimeZoneType(), new Runnable() {
@Override
public void run() {
final Iterable<TimeZoneModel> timeZones =
TimeZoneModel.getTimeZones(getTimeZoneType());
- getModel().getTimeZone().setItems(timeZones);
-
getModel().getTimeZone().setSelectedItem(Linq.firstOrDefault(timeZones, new
Linq.TimeZonePredicate(selectedTimeZone)));
-
getModel().getTimeZone().setChangeProhibitionReason(constants.timeZoneNotChangeableForLinuxVms());
-
getModel().getTimeZone().setIsChangable(!getModel().getIsLinuxOS());
+ field.setItems(timeZones);
+ field.setSelectedItem(Linq.firstOrDefault(timeZones, new
Linq.TimeZonePredicate(selectedTimeZone)));
+ if (field.equals(getModel().getSysprepTimeZone())) {
+
field.setChangeProhibitionReason(constants.sysprepTimeZoneNotChangeableForLinuxVms());
+ field.setIsChangable(!getModel().getIsLinuxOS());
+ }
}
});
}
diff --git
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index 1d99454..991e8e2 100644
---
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -599,6 +599,9 @@
getcurrentVm().setTimeZone(
(model.getTimeZone().getIsAvailable() &&
model.getTimeZone().getSelectedItem() != null) ?
((TimeZoneModel)
model.getTimeZone().getSelectedItem()).getTimeZoneKey() : ""); //$NON-NLS-1$
+ getcurrentVm().setSysprepTimeZone(
+ (model.getSysprepTimeZone().getIsAvailable() &&
model.getSysprepTimeZone().getSelectedItem() != null) ?
+ ((TimeZoneModel)
model.getSysprepTimeZone().getSelectedItem()).getTimeZoneKey() : "");
//$NON-NLS-1$
getcurrentVm().setNumOfSockets((Integer)
model.getNumOfSockets().getSelectedItem());
getcurrentVm().setCpuPerSocket(Integer.parseInt(model.getTotalCPUCores().getEntity().toString())
/
(Integer) model.getNumOfSockets().getSelectedItem());
diff --git
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 3d39686..55adc44 100644
---
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -1973,8 +1973,11 @@
@DefaultStringValue("Please select an action to continue")
String noActionSelectedManageGlusterSwift();
- @DefaultStringValue("Time Zone is not changeable for Linux VMs")
- String timeZoneNotChangeableForLinuxVms();
+ @DefaultStringValue("Time Zone for Sysprep is not changeable for Linux
VMs")
+ String sysprepTimeZoneNotChangeableForLinuxVms();
+
+ @DefaultStringValue("Time Zone cannot be change since the Virtual Machine
has already been booted once.")
+ String timeZoneNotEditableAlreadyRun();
@DefaultStringValue("Host cannot be set highly available when 'Do not
allow migration' or 'Allow manual migration' is selected")
String hostNonMigratable();
--
To view, visit http://gerrit.ovirt.org/17191
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id5da2b3ef9359cdbb096181513b661fab2eb07c0
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Frank Kobzik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches