Author: jfthomps
Date: Fri Oct 25 19:55:44 2013
New Revision: 1535845

URL: http://svn.apache.org/r1535845
Log:
VCL-409
Improvements to vcld -setup

utils.php - modified xmlrpccall - added line to register 
XMLRPCfinishBaseImageCapture
xmlrpcWrappers.php - added XMLRPCfinishBaseImageCapture
images.php - modified addImage - split permission, grouping, and mapping out 
into new function named addImagePermissions so that it can be called by an 
XMLRPC function


Modified:
    vcl/trunk/web/.ht-inc/conf-default.php
    vcl/trunk/web/.ht-inc/images.php
    vcl/trunk/web/.ht-inc/utils.php
    vcl/trunk/web/.ht-inc/xmlrpcWrappers.php

Modified: vcl/trunk/web/.ht-inc/conf-default.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/conf-default.php?rev=1535845&r1=1535844&r2=1535845&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/conf-default.php (original)
+++ vcl/trunk/web/.ht-inc/conf-default.php Fri Oct 25 19:55:44 2013
@@ -98,6 +98,8 @@ define("ALLOWADDSHIBUSERS", 0); // this 
 
 $ENABLE_ITECSAUTH = 0;     // use ITECS accounts (also called "Non-NCSU" 
accounts)
 
+# xmlrpcBlockAPIUsers is an array of ids from user table for users that are
+# allowed to call XMLRPC functions designed specifically to be called by vcld
 $xmlrpcBlockAPIUsers = array(3, # 3 = vclsystem
 );
 

Modified: vcl/trunk/web/.ht-inc/images.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/images.php?rev=1535845&r1=1535844&r2=1535845&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/images.php (original)
+++ vcl/trunk/web/.ht-inc/images.php Fri Oct 25 19:55:44 2013
@@ -3405,13 +3405,36 @@ function addImage($data) {
        $row = mysql_fetch_row($qh);
        $resourceid = $row[0];
 
-       if(strncmp($OSs[$data['osid']]['name'], 'vmware', 6) == 0)
-               $vmware = 1;
+       $installtype = $OSs[$data['osid']]['installtype'];
+       if($installtype == 'none' ||
+          $installtype == 'partimage' ||
+          $installtype == 'kickstart')
+               $virtual = 0;
        else
-               $vmware = 0;
+               $virtual = 1;
 
+       addImagePermissions($ownerdata, $resourceid, $virtual);
+
+       return $imageid;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn addImagePermissions($ownerdata, $resourceid, $virtual)
+///
+/// \param $ownerdata - array of data returned from getUserInfo for the owner 
of
+/// the image
+/// \param $resourceid - id from resource table for the image
+/// \param $virtual - (bool) 0 if bare metal image, 1 if virtual
+///
+/// \brief sets up permissions, grouping, and mapping for the owner of the 
image
+/// to be able to make a reservation for it
+///
+////////////////////////////////////////////////////////////////////////////////
+function addImagePermissions($ownerdata, $resourceid, $virtual) {
+       $ownerid = $ownerdata['id'];
        // create new node if it does not exist
-       if($vmware)
+       if($virtual)
                $nodename = 'newvmimages';
        else
                $nodename = 'newimages';
@@ -3460,7 +3483,7 @@ function addImage($data) {
        $qh = doQuery($query, 101);
        $row = mysql_fetch_assoc($qh);
        $ownergroupid = $row['id'];
-       if($vmware)
+       if($virtual)
                $prefix = 'newvmimages';
        else
                $prefix = 'newimages';
@@ -3486,7 +3509,7 @@ function addImage($data) {
                $resourcegroupid = $row[0];
 
                // map group to newimages/newvmimages comp group
-               if($vmware)
+               if($virtual)
                        $rgroupname = 'newvmimages';
                else
                        $rgroupname = 'newimages';
@@ -3511,7 +3534,7 @@ function addImage($data) {
 
        // make image group available at new node
        $adds = array('available', 'administer');
-       if($vmware)
+       if($virtual)
                
updateResourcePrivs("image/newvmimages-{$ownerdata['login']}-$ownerid", 
$newnode, $adds, array());
        else
                
updateResourcePrivs("image/newimages-{$ownerdata['login']}-$ownerid", $newnode, 
$adds, array());
@@ -3521,8 +3544,6 @@ function addImage($data) {
               . "(resourceid, resourcegroupid) "
               . "VALUES ($resourceid, $resourcegroupid)";
        doQuery($query, 101);
-
-       return $imageid;
 }
 
 
////////////////////////////////////////////////////////////////////////////////

Modified: vcl/trunk/web/.ht-inc/utils.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/utils.php?rev=1535845&r1=1535844&r2=1535845&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/utils.php (original)
+++ vcl/trunk/web/.ht-inc/utils.php Fri Oct 25 19:55:44 2013
@@ -9841,6 +9841,7 @@ function xmlrpccall() {
        xmlrpc_server_register_method($xmlrpc_handle, "XMLRPCgetGroupImages", 
"xmlRPChandler");
        xmlrpc_server_register_method($xmlrpc_handle, 
"XMLRPCaddImageGroupToComputerGroup", "xmlRPChandler");
        xmlrpc_server_register_method($xmlrpc_handle, 
"XMLRPCremoveImageGroupFromComputerGroup", "xmlRPChandler");
+       xmlrpc_server_register_method($xmlrpc_handle, 
"XMLRPCfinishBaseImageCapture", "xmlRPChandler");
 
        print xmlrpc_server_call_method($xmlrpc_handle, $HTTP_RAW_POST_DATA, 
'');
        xmlrpc_server_destroy($xmlrpc_handle);

Modified: vcl/trunk/web/.ht-inc/xmlrpcWrappers.php
URL: 
http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/xmlrpcWrappers.php?rev=1535845&r1=1535844&r2=1535845&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/xmlrpcWrappers.php (original)
+++ vcl/trunk/web/.ht-inc/xmlrpcWrappers.php Fri Oct 25 19:55:44 2013
@@ -3505,4 +3505,69 @@ function XMLRPCprocessBlockTime($blockTi
        $return['unallocated'] = $rqdata['numMachines'] - $return['allocated'];
        return $return;
 }
+
+////////////////////////////////////////////////////////////////////////////////
+///
+/// \fn XMLRPCfinishBaseImageCapture($ownerid, $resourceid, $virtual=1)
+///
+/// \param $ownerdata - array of data returned from getUserInfo for the owner 
of
+/// the image
+/// \param $resourceid - id from resource table for the image
+/// \param $virtual - (bool) 0 if bare metal image, 1 if virtual
+///
+/// \return an array with at least one index named 'status' which will have
+/// one of these values\n
+/// \b error - error occurred; there will be 2 additional elements in the 
array:
+/// \li \b errorcode - error number\n
+/// \li \b errormsg - error string\n
+///
+/// \b success - the permissions, groupings, and mappings were set up
+/// successfully
+///
+/// \brief calls addImagePermissions to create and set up permissions,
+/// groupings, and mappings so that the owner of a new base image will be able
+/// to make a reservation for it after capturing it using 'vcld -setup';
+/// specifically designed to be called by vcld as part of the process of
+/// capturing a new base image
+///
+////////////////////////////////////////////////////////////////////////////////
+function XMLRPCfinishBaseImageCapture($ownerid, $resourceid, $virtual=1) {
+       global $user, $xmlrpcBlockAPIUsers;
+       if(! in_array($user['id'], $xmlrpcBlockAPIUsers)) {
+               return array('status' => 'error',
+                            'errorcode' => 89,
+                            'errormsg' => 'access denied for call to 
XMLRPCfinishBaseImageCapture');
+       }
+       if(! is_numeric($ownerid)) {
+               return array('status' => 'error',
+                            'errorcode' => 90,
+                            'errormsg' => 'Invalid ownerid submitted');
+       }
+       if(! is_numeric($resourceid)) {
+               return array('status' => 'error',
+                            'errorcode' => 91,
+                            'errormsg' => 'Invalid resourceid submitted');
+       }
+       $ownerdata = getUserInfo($ownerid, 1, 1);
+       if(is_null($ownerdata) || empty($ownerdata)) {
+               return array('status' => 'error',
+                            'errorcode' => 90,
+                            'errormsg' => 'Invalid ownerid passed as second 
argument');
+       }
+       $query = "SELECT i.id "
+              . "FROM image i, "
+              .      "resource r "
+              . "WHERE r.id = $resourceid AND "
+              .       "r.subid = i.id AND "
+              .       "r.resourcetypeid = 13";
+       $qh = doQuery($query);
+       if(mysql_num_rows($qh) != 1) {
+               return array('status' => 'error',
+                            'errorcode' => 91,
+                            'errormsg' => 'Invalid resourceid submitted');
+       }
+       require_once(".ht-inc/images.php");
+       addImagePermissions($ownerdata, $resourceid, $virtual);
+       return array('status' => 'success');
+}
 ?>


Reply via email to