You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2012/03/15 15:11:12 UTC

svn commit: r1300989 - in /incubator/vcl/trunk/web/.ht-inc: serverprofiles.php xmlrpcWrappers.php

Author: jfthomps
Date: Thu Mar 15 14:11:11 2012
New Revision: 1300989

URL: http://svn.apache.org/viewvc?rev=1300989&view=rev
Log:
VCL-463
add ability to deploy images as servers

serverprofiles.php:
-modified deployHTML - only allow server profiles with serverCheckOut permission to be deployed; allow any user group to be selected for admin and login groups instead of just the ones the user can edit; commented out fixedIP and fixedMAC
-modified manageProfilesHTML - only include profiles with serverProfileAdmin to be managed; commented out fixedIP and fixedMAC; allow any user group to be selected for admin and login groups instead of just the ones the user can edit
-modified AJdeployServer - set reservation.remoteIP at reservation time instead of waiting until the Connect button is clicked

xmlrpcWrappers.php: modified XMLRPCdeployServer - set reservation.remoteIP at reservation time instead of waiting until the Connect button is clicked

Modified:
    incubator/vcl/trunk/web/.ht-inc/serverprofiles.php
    incubator/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php

Modified: incubator/vcl/trunk/web/.ht-inc/serverprofiles.php
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/serverprofiles.php?rev=1300989&r1=1300988&r2=1300989&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/serverprofiles.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/serverprofiles.php Thu Mar 15 14:11:11 2012
@@ -62,12 +62,12 @@ function serverProfiles() {
 ////////////////////////////////////////////////////////////////////////////////
 function deployHTML() {
 	global $user, $skin;
-	$profiles = getServerProfiles();
+	$profiles = getUserResources(array("serverCheckOut"), array("available"));
 
 	$h = '';
 	$h .= "<h2>Deploy Server</h2>\n";
 	$h .= "<span id=\"deployprofileslist\"";
-	if(! count($profiles))
+	if(! count($profiles['serverprofile']))
 		$h .= " class=\"hidden\"";
 	$h .= ">\n";
 	$h .= "Profile: ";
@@ -113,57 +113,69 @@ function deployHTML() {
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
-	$h .= "  <tr>\n";
+	/*$h .= "  <tr>\n";
 	$h .= "    <th align=right>Fixed IP Address:</th>\n";
 	$h .= "    <td><input type=\"text\" id=\"deployfixedIP\" ";
 	$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
 	$h .= "regExp=\"([0-9]{1,3}\\.){3}([0-9]{1,3})\">(optional)</td>\n";
-	$h .= "  </tr>\n";
-	$h .= "  <tr>\n";
+	$h .= "  </tr>\n";*/
+	/*$h .= "  <tr>\n";
 	$h .= "    <th align=right>Fixed MAC Address:</th>\n";
 	$h .= "    <td><input type=\"text\" id=\"deployfixedMAC\" ";
 	$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
 	$h .= "regExp=\"([0-9a-fA-F]{2}:){5}([0-9a-fA-F]{2})\">(optional)</td>\n";
-	$h .= "  </tr>\n";
+	$h .= "  </tr>\n";*/
 	$h .= "  <tr>\n";
 	$h .= "    <th align=right>Admin User Group:</th>\n";
 	$h .= "    <td>\n";
-	$admingroups = getUserEditGroups($user['id']);
+	$admingroups = getUserGroups();
+	$logingroups = $admingroups;
+	/*$admingroups = getUserEditGroups($user['id']);
 	$logingroups = $admingroups;
 	$extraadmingroups = getServerProfileGroups($user['id'], 'admin');
 	foreach($extraadmingroups as $id => $group)
 		$admingroups[$id] = $group;
-	uasort($admingroups, 'sortKeepIndex');
+	uasort($admingroups, 'sortKeepIndex');*/
 	if(USEFILTERINGSELECT && count($admingroups) < FILTERINGSELECTTHRESHOLD) {
 		$h .= "      <select dojoType=\"dijit.form.FilteringSelect\" id=\"deployadmingroup\" ";
 		$h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
 		$h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
 	}
 	else
-		$h .= "      <select dojoType=\"dijit.form.Select\" id=\"deployadmingroup\">\n";
+		$h .= "      <select id=\"deployadmingroup\">\n";
 	$h .= "        <option value=\"0\">None</option>\n";
-	foreach($admingroups as $id => $group)
-		$h .= "        <option value=\"$id\">$group</option>\n";
+	foreach($admingroups as $id => $group) {
+		if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
+			continue;
+		$h .= "        <option value=\"$id\">{$group['name']}</option>\n";
+	}
+	#foreach($admingroups as $id => $group)
+	#	$h .= "        <option value=\"$id\">$group</option>\n";
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
 	$h .= "  <tr>\n";
 	$h .= "    <th align=right>Access User Group:</th>\n";
 	$h .= "    <td>\n";
-	$extralogingroups = getServerProfileGroups($user['id'], 'login');
+	/*$extralogingroups = getServerProfileGroups($user['id'], 'login');
 	foreach($extralogingroups as $id => $group)
 		$logingroups[$id] = $group;
-	uasort($logingroups, 'sortKeepIndex');
+	uasort($logingroups, 'sortKeepIndex');*/
 	if(USEFILTERINGSELECT && count($logingroups) < FILTERINGSELECTTHRESHOLD) {
 		$h .= "      <select dojoType=\"dijit.form.FilteringSelect\" id=\"deploylogingroup\" ";
 		$h .= "style=\"width: 400px\" queryExpr=\"*\${0}*\" required=\"true\" ";
 		$h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
 	}
 	else
-		$h .= "      <select dojoType=\"dijit.form.Select\" id=\"deploylogingroup\">\n";
+		$h .= "      <select id=\"deploylogingroup\">\n";
 	$h .= "        <option value=\"0\">None</option>\n";
-	foreach($logingroups as $id => $group)
-		$h .= "        <option value=\"$id\">$group</option>\n";
+	foreach($logingroups as $id => $group) {
+		if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
+			continue;
+		$h .= "        <option value=\"$id\">{$group['name']}</option>\n";
+	}
+	#foreach($logingroups as $id => $group)
+	#	$h .= "        <option value=\"$id\">$group</option>\n";
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
@@ -256,12 +268,12 @@ function deployHTML() {
 ////////////////////////////////////////////////////////////////////////////////
 function manageProfilesHTML() {
 	global $user;
-	$profiles = getServerProfiles();
+	$profiles = getUserResources(array("serverProfileAdmin"), array("administer"));
 
 	$h = '';
 	$h .= "<h2>Manage Server Profiles</h2>\n";
 	$h .= "<span id=\"profileslist\"";
-	if(! count($profiles))
+	if(! count($profiles['serverprofile']))
 		$h .= " class=\"hidden\"";
 	$h .= ">\n";
 	$h .= "Profile: ";
@@ -320,57 +332,69 @@ function manageProfilesHTML() {
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
-	$h .= "  <tr>\n";
+	/*$h .= "  <tr>\n";
 	$h .= "    <th align=right>Fixed IP Address:</th>\n";
 	$h .= "    <td><input type=\"text\" name=\"profilefixedIP\" id=\"profilefixedIP\" ";
 	$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
 	$h .= "regExp=\"([0-9]{1,3}\\.){3}([0-9]{1,3})\">(optional)</td>\n";
-	$h .= "  </tr>\n";
-	$h .= "  <tr>\n";
+	$h .= "  </tr>\n";*/
+	/*$h .= "  <tr>\n";
 	$h .= "    <th align=right>Fixed MAC Address:</th>\n";
 	$h .= "    <td><input type=\"text\" name=\"profilefixedMAC\" id=\"profilefixedMAC\" ";
 	$h .= "dojoType=\"dijit.form.ValidationTextBox\" ";
 	$h .= "regExp=\"([0-9a-fA-F]{2}:){5}([0-9a-fA-F]{2})\">(optional)</td>\n";
-	$h .= "  </tr>\n";
+	$h .= "  </tr>\n";*/
 	$h .= "  <tr>\n";
 	$h .= "    <th align=right>Admin User Group:</th>\n";
 	$h .= "    <td>\n";
-	$admingroups = getUserEditGroups($user['id']);
+	$admingroups = getUserGroups();
+	$logingroups = $admingroups;
+	/*$admingroups = getUserEditGroups($user['id']);
 	$logingroups = $admingroups;
 	$extraadmingroups = getServerProfileGroups($user['id'], 'admin');
 	foreach($extraadmingroups as $id => $group)
 		$admingroups[$id] = $group;
-	uasort($admingroups, 'sortKeepIndex');
+	uasort($admingroups, 'sortKeepIndex');*/
 	if(USEFILTERINGSELECT && count($admingroups) < FILTERINGSELECTTHRESHOLD) {
 		$h .= "      <select dojoType=\"dijit.form.FilteringSelect\" id=\"profileadmingroup\" ";
 		$h .= "style=\"width: 400px\" name=\"profileadmingroup\" queryExpr=\"*\${0}*\" ";
 		$h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
 	}
 	else
-		$h .= "      <select dojoType=\"dijit.form.Select\" name=\"profileadmingroup\" id=\"profileadmingroup\">\n";
+		$h .= "      <select name=\"profileadmingroup\" id=\"profileadmingroup\">\n";
 	$h .= "        <option value=\"0\">None</option>\n";
-	foreach($admingroups as $id => $group)
-		$h .= "        <option value=\"$id\">$group</option>\n";
+	foreach($admingroups as $id => $group) {
+		if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
+			continue;
+		$h .= "        <option value=\"$id\">{$group['name']}</option>\n";
+	}
+	#foreach($admingroups as $id => $group) {
+	#	$h .= "        <option value=\"$id\">$group</option>\n";
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
 	$h .= "  <tr>\n";
 	$h .= "    <th align=right>Access User Group:</th>\n";
 	$h .= "    <td>\n";
-	$extralogingroups = getServerProfileGroups($user['id'], 'login');
+	/*$extralogingroups = getServerProfileGroups($user['id'], 'login');
 	foreach($extralogingroups as $id => $group)
 		$logingroups[$id] = $group;
-	uasort($logingroups, 'sortKeepIndex');
+	uasort($logingroups, 'sortKeepIndex');*/
 	if(USEFILTERINGSELECT && count($logingroups) < FILTERINGSELECTTHRESHOLD) {
 		$h .= "      <select dojoType=\"dijit.form.FilteringSelect\" id=\"profilelogingroup\" ";
 		$h .= "style=\"width: 400px\" name=\"profilelogingroup\" queryExpr=\"*\${0}*\" ";
 		$h .= "highlightMatch=\"all\" autoComplete=\"false\">\n";
 	}
 	else
-		$h .= "      <select dojoType=\"dijit.form.Select\" name=\"profilelogingroup\" id=\"profilelogingroup\">\n";
+		$h .= "      <select name=\"profilelogingroup\" id=\"profilelogingroup\">\n";
 	$h .= "        <option value=\"0\">None</option>\n";
-	foreach($logingroups as $id => $group)
-		$h .= "        <option value=\"$id\">$group</option>\n";
+	foreach($logingroups as $id => $group) {
+		if($group['name'] == 'None' || preg_match('/^None@.*$/', $group['name']))
+			continue;
+		$h .= "        <option value=\"$id\">{$group['name']}</option>\n";
+	}
+	#foreach($logingroups as $id => $group)
+	#	$h .= "        <option value=\"$id\">$group</option>\n";
 	$h .= "      </select>\n";
 	$h .= "    </td>\n";
 	$h .= "  </tr>\n";
@@ -653,7 +677,7 @@ function AJserverProfileStoreData() {
 ///
 ////////////////////////////////////////////////////////////////////////////////
 function AJdeployServer() {
-	global $user;
+	global $user, $remoteIP;
 	$profileid = processInputVar('profileid', ARG_NUMERIC);
 	$imageid = processInputVar('imageid', ARG_NUMERIC);
 	$resources = getUserResources(array("imageAdmin", "imageCheckOut"));
@@ -878,6 +902,10 @@ function AJdeployServer() {
 		return;
 	}
 	$requestid = addRequest();
+	$query = "UPDATE reservation "
+	       . "SET remoteIP = '$remoteIP' "
+	       . "WHERE requestid = $requestid";
+	doQuery($query);
 	$fields = array('requestid', 'serverprofileid');
 	# 	TODO test deploying server with various combinations of profile items changed
 	$values = array($requestid, $profileid);

Modified: incubator/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php?rev=1300989&r1=1300988&r2=1300989&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php Thu Mar 15 14:11:11 2012
@@ -1943,7 +1943,7 @@ function XMLRPCautoCapture($requestid) {
 function XMLRPCdeployServer($imageid, $start, $end, $admingroup='',
                             $logingroup='', $ipaddr='', $macaddr='',
                             $monitored=0, $foruser='') {
-	global $user;
+	global $user, $remoteIP;
 	if(! in_array("serverProfileAdmin", $user["privileges"])) {
 		return array('status' => 'error',
 		             'errorcode' => 60,
@@ -2106,6 +2106,10 @@ function XMLRPCdeployServer($imageid, $s
 		return array('status' => 'notavailable');
 	}
 	$return['requestid']= addRequest();
+	$query = "UPDATE reservation "
+	       . "SET remoteIP = '$remoteIP' "
+	       . "WHERE requestid = {$return['requestid']}";
+	doQuery($query);
 	$fields = array('requestid');
 	$values = array($return['requestid']);
 	if($ipaddr != '') {