Creating a custom object involves defining a new object, adding attributes to the object, and adding actions to the object.
Example 18-9. Creating a License object to track license usage and charges.
Invoke the gold control program in interactive mode.
$ goldsh
Create the License Object.
gold> Object Create Name=License Description=License
Successfully created 1 Object
Next we can define its attributes. We'll give each record a unique id (so the record can be more easily modified), a license type that can be one of (Matlab,Mathematica,Compiler,AutoCAD,Oracle), the user who is using it, the start and end time, how many instances of the license were used, and how much was charged.
gold> Attribute Create Object=License Name=Id DataType=AutoGen PrimaryKey=True Description="Record Id"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=Type DataType=String Required=True Values="(Matlab,Mathematica,Compiler,AutoCAD,Oracle)" Fixed=True Description="License Type"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=User Required=True Values="@User" Description="User Name"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=StartTime DataType=TimeStamp Description="Start Time"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=EndTime DataType=TimeStamp Description="End Time"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=Count DataType=Integer Description="Number of Licenses Used"
Successfully created 1 Attribute
gold> Attribute Create Object=License Name=Charge DataType=Currency Description="Amount Charged"
Successfully created 1 Attribute
Finally, we designate the actions we will allow on the object. The standard set of actions includes Create, Query, Delete, Modify and Undelete. Since we would like to manage licenses from the web GUI we will set Display=True.
gold> Action Create Object=License Name=Create Display=True Description=Create
Successfully created 1 Action
gold> Action Create Object=License Name=Query Display=True Description=Query
Successfully created 1 Action
gold> Action Create Object=License Name=Modify Display=True Description=Modify
Successfully created 1 Action
gold> Action Create Object=License Name=Delete Display=True Description=Delete
Successfully created 1 Action
gold> Action Create Object=License Name=Undelete Display=True Description=Undelete
Successfully created 1 Action
When we are done we can exit the goldsh prompt.
gold> quit
That's about it. Licenses should now be able to be managed via the GUI and goldsh. The data source will need to use one of the methods of interacting with Gold (see Methods of interacting with Gold) in order to push license record usage info to Gold.
Apart from being used as an Allocation Manager, Gold can be used as a generalized information service. It can be used to manage just about any object oriented information over the web. For example, Gold could be used to provide meta-schedulers with machine/user mappings, or node/resource information.
Example 18-10. Using Gold as a Grid Map File.
Invoke the gold control program in interactive mode.
$ goldsh
Create the GridMap Object.
gold> Object Create Name=GridMap Description="Online Grid Map File"
Successfully created 1 Object
Next, we can define its attributes. Each entry will consist of a userid (which will serve as the primary key) and a required public X.509 certificate.
gold> Attribute Create Object=GridMap Name=User PrimaryKey=True Values=@User Description="User Name"
Successfully created 1 Attribute
gold> Attribute Create Object=GridMap Name=Certificate DataType=String Required=True Description="X.509 Public Key"
Successfully created 1 Attribute
Finally, we designate the actions we will allow on the object. Since we would like to manage certificates from the web GUI we will set Display=True.
gold> Action Create Object=GridMap Name=Create Display=True Description=Create
Successfully created 1 Action
gold> Action Create Object=GridMap Name=Query Display=True Description=Query
Successfully created 1 Action
gold> Action Create Object=GridMap Name=Modify Display=True Description=Modify
Successfully created 1 Action
gold> Action Create Object=GridMap Name=Delete Display=True Description=Delete
Successfully created 1 Action
gold> Action Create Object=GridMap Name=Undelete Display=True Description=Undelete
Successfully created 1 Action
Exit the goldsh prompt.
gold> quit
From this point, a peer service will need to use one of the methods of interacting with Gold (see Methods of interacting with Gold) in order to query the GridMap information.