Skip to content

Commit b7b77ce

Browse files
author
Jessica Wang
committed
CS-14559: cloudstack 3.0 UI - VM Wizard - last step - screen doesn't change, but user-entered VM name will be passed as hostname and displayname to deployVirtualMachine API. Add validation of user-entered name field to match naming rule of hostname.
1 parent d7f4d5d commit b7b77ce

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

ui/scripts/instances.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,10 @@
496496
}
497497

498498
var displayname = args.data.displayname;
499-
if(displayname != null && displayname.length > 0)
499+
if(displayname != null && displayname.length > 0) {
500500
array1.push("&displayname="+todb(displayname));
501+
array1.push("&name="+todb(displayname));
502+
}
501503

502504
var group = args.data.groupname;
503505
if (group != null && group.length > 0)

ui/scripts/sharedFunctions.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// See the License for the specific language governing permissions and
1010
// limitations under the License.
1111
//
12-
// Automatically generated by addcopyright.py at 04/03/2012
12+
// Automatically generated by addcopyright.py at 04/02/2012
1313
var g_mySession = null;
1414
var g_sessionKey = null;
1515
var g_role = null; // roles - root, domain-admin, ro-admin, user
@@ -197,6 +197,20 @@ function isValidJsonString(str) {
197197
return true;
198198
}
199199

200+
cloudStack.validate = {
201+
vmHostName: function(args) {
202+
// 1 ~ 63 characters long
203+
// ASCII letters 'a' through 'z' (case-insensitive), digits '0' through '9', hyphen ('-')
204+
// must start with a letter
205+
// must end with a letter or a digit (must not end with a hyphen)
206+
var regexp = /^[a-z]{1}[a-z0-9\-]{0,61}[a-z0-9]{0,1}$/;
207+
var b = regexp.test(args); //true or false
208+
if(b == false)
209+
cloudStack.dialog.notice({ message: 'Instance name can not be longer than 63 characters. Only ASCII letters a~z, digits 0~9, hyphen are allowed. Must start with a letter and end with a letter or a digit.' });
210+
return b;
211+
}
212+
}
213+
200214
cloudStack.preFilter = {
201215
createTemplate: function(args) {
202216
if(isAdmin()) {

ui/scripts/ui-custom/instanceWizard.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,17 @@
640640
return false;
641641
}
642642
}
643-
643+
644+
//step 6 - review (spcifiy displyname, group as well)
645+
if ($activeStep.hasClass('review')) {
646+
if($activeStep.find('input[name=displayname]').size() > 0 && $activeStep.find('input[name=displayname]').val().length > 0) {
647+
//validate
648+
var b = cloudStack.validate.vmHostName($activeStep.find('input[name=displayname]').val());
649+
if(b == false)
650+
return false;
651+
}
652+
}
653+
644654
if (!$form.valid()) {
645655
if ($form.find('input.error:visible, select.error:visible').size()) {
646656
return false;

0 commit comments

Comments
 (0)