diff --git a/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml b/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml
index d9175d6619c84ed61c084422a149414932dde6dc..4fa1a88c68309194863a0e6f069dd46254068d95 100644
--- a/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml
+++ b/protogeni/flack/src/com/flack/geni/display/areas/VirtualNodeArea.mxml
@@ -497,25 +497,31 @@ IN THE WORK.
private function addInstallService(installService:InstallService = null):void
{
var newInstallComponent:InstallServiceComponent = new InstallServiceComponent();
+ newInstallComponent.onChange = onChange;
if(installService != null)
{
newInstallComponent.url = installService.url;
newInstallComponent.path = installService.installPath;
}
installVgroup.addElement(newInstallComponent);
- if(!okButton.enabled)
- okButton.enabled = true;
+ onChange();
}
private function addExecuteService(executeService:ExecuteService = null):void
{
var newExecuteComponent:ExecuteServiceComponent = new ExecuteServiceComponent();
+ newExecuteComponent.onChange = onChange;
if(executeService != null)
{
newExecuteComponent.cmd = executeService.command;
newExecuteComponent.shell = executeService.shell;
}
executeVgroup.addElement(newExecuteComponent);
+ onChange();
+ }
+
+ private function onChange():void
+ {
if(!okButton.enabled)
okButton.enabled = true;
}
diff --git a/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml b/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml
index 28931268d337f07ea2c2bbb346b6d9bff40f0b55..c490940c58b5c558313a89f3f3399e632fec98de 100644
--- a/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml
+++ b/protogeni/flack/src/com/flack/geni/display/slicer/ExecuteServiceComponent.mxml
@@ -45,6 +45,8 @@ IN THE WORK.
import spark.components.Group;
+ public var onChange:Function;
+
[Bindable]
public var cmd:String = "";
[Bindable]
@@ -64,12 +66,14 @@ IN THE WORK.
+ prompt="Command"
+ change="if(onChange != null) onChange();" />
+ prompt="Shell? (sh, bash, etc.)"
+ change="if(onChange != null) onChange();" />
+ click="if(onChange != null) onChange(); (parent as Group).removeElement(this)" />
diff --git a/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml b/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml
index fce4e580d1d6bcf53a491722ac823953a485079c..00bd8df748df66fed5c838745b6fd2d3f36188f1 100644
--- a/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml
+++ b/protogeni/flack/src/com/flack/geni/display/slicer/InstallServiceComponent.mxml
@@ -45,6 +45,8 @@ IN THE WORK.
import spark.components.Group;
+ public var onChange:Function;
+
[Bindable]
public var url:String = "";
[Bindable]
@@ -64,12 +66,14 @@ IN THE WORK.
+ prompt="Archive URL"
+ change="if(onChange != null) onChange();" />
+ prompt="Install path"
+ change="if(onChange != null) onChange();" />
+ click="if(onChange != null) onChange(); (parent as Group).removeElement(this)" />
diff --git a/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as b/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as
index c693b5c19abdbf2723f01a0c2ad97a01253601a1..d7c22bfdacdb72cb3b27b38c15bf62d3a3c71b11 100644
--- a/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as
+++ b/protogeni/flack/src/com/flack/geni/resources/virtual/VirtualNode.as
@@ -317,18 +317,27 @@ package com.flack.geni.resources.virtual
newClone.hardwareType.name = hardwareType.name;
newClone.hardwareType.slots = hardwareType.slots;
}
- for each(var executeService:ExecuteService in services.executeServices)
+ if(services.executeServices != null)
{
- var newExecute:ExecuteService = new ExecuteService(executeService.command, executeService.shell);
- newExecute.extensions = executeService.extensions.Clone;
- newClone.services.executeServices.push(newExecute);
+ newClone.services.executeServices = new Vector.();
+ for each(var executeService:ExecuteService in services.executeServices)
+ {
+ var newExecute:ExecuteService = new ExecuteService(executeService.command, executeService.shell);
+ newExecute.extensions = executeService.extensions.Clone;
+ newClone.services.executeServices.push(newExecute);
+ }
}
- for each(var installService:InstallService in services.installServices)
+ if(services.installServices != null)
{
- var newInstall:InstallService = new InstallService(installService.url, installService.installPath, installService.fileType);
- newInstall.extensions = installService.extensions.Clone;
- newClone.services.installServices.push(newInstall);
+ newClone.services.installServices = new Vector.();
+ for each(var installService:InstallService in services.installServices)
+ {
+ var newInstall:InstallService = new InstallService(installService.url, installService.installPath, installService.fileType);
+ newInstall.extensions = installService.extensions.Clone;
+ newClone.services.installServices.push(newInstall);
+ }
}
+
newClone.extensions = extensions.Clone;
// Remove the emulab extensions, it's just manifest stuff
if(newClone.extensions.spaces != null)
diff --git a/protogeni/flack/src/com/flack/shared/SharedMain.as b/protogeni/flack/src/com/flack/shared/SharedMain.as
index 6dea5aa6b3188913378bb027912cb61207f5c285..26295c34d4a6c54f940d37c6fa76275d7ebd299c 100644
--- a/protogeni/flack/src/com/flack/shared/SharedMain.as
+++ b/protogeni/flack/src/com/flack/shared/SharedMain.as
@@ -51,7 +51,7 @@ package com.flack.shared
/**
* Flack version
*/
- public static const version:String = "v14.40";
+ public static const version:String = "v14.41";
public static const MODE_GENI:int = 0;
public static const MODE_EMULAB:int = 1;