Added CreateSliver
authorJosh Karlin <jkarlin@bbn.com>
Fri, 26 Mar 2010 16:37:45 +0000 (16:37 +0000)
committerJosh Karlin <jkarlin@bbn.com>
Fri, 26 Mar 2010 16:37:45 +0000 (16:37 +0000)
sfa/client/sfi.py
sfa/managers/geni_am_pl.py
sfa/methods/GetVersion.py
sfa/methods/__init__.py
sfa/trust/rights.py
tests/testGeniAM.py [new file with mode: 0644]

index 92fe1ff..ed8b250 100755 (executable)
@@ -152,8 +152,8 @@ class Sfi:
                   "stop": "name",
                   "delegate": "name",
                   "GetVersion": "name",
-                  "ListResources": "name"
-                   
+                  "ListResources": "name",
+                  "CreateSliver": "name" 
                  }
 
         if additional_cmdargs:
@@ -912,17 +912,27 @@ class Sfi:
         user_cred = self.get_user_cred().save_to_string(save_parents=True)
         server = self.geni_am
         call_options = {'geni_compressed': True}
+        xrn = None
+        cred = user_cred
         if args:
-            urn = args[0]
-        else:
-            urn = None
-        if urn:
-            call_options['geni_slice_urn'] = urn
+            xrn = args[0]
+            cred = self.get_slice_cred(xrn).save_to_string(save_parents=True)
+
+        if xrn:
+            call_options['geni_slice_urn'] = xrn
             
         rspec = server.ListResources([user_cred], call_options)
         rspec = zlib.decompress(rspec.decode('base64'))
         print rspec
-    
+        
+    def CreateSliver(self,opts,args):
+        slice_xrn = args[0]
+        user_cred = self.get_user_cred()
+        slice_cred = self.get_slice_cred(slice_xrn).save_to_string(save_parents=True)
+        rspec_file = self.get_rspec_file(args[1])
+        rspec = open(rspec_file).read()
+        server = self.geni_am
+        return server.CreateSliver(slice_xrn, [slice_cred], rspec)
     #
     # Main: parse arguments and dispatch to command
     #
index f144430..87a159e 100644 (file)
@@ -27,19 +27,20 @@ def GetVersion():
     version['geni_stitching'] = False
     return version
 
+
 def ListResources(api, creds, options):
     manager_base = 'sfa.managers'
     mgr_type = 'pl'
     manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
     manager = __import__(manager_module, fromlist=[manager_base])
 
-    hrn = None
+    xrn = None
     if options.has_key('geni_slice_urn'):
         xrn = options['geni_slice_urn']
-        hrn, type = urn_to_hrn(xrn)
+        api.logger.info(xrn)
 
 
-    rspec = manager.get_rspec(api, hrn, None)
+    rspec = manager.get_rspec(api, xrn, None)
     #outgoing_rules = SFATablesRules('OUTGOING')
     
     if options.has_key('geni_compressed') and options['geni_compressed'] == True:
@@ -48,3 +49,12 @@ def ListResources(api, creds, options):
     return rspec
 
 
+def CreateSlice(api, slice_xrn, creds, rspec):
+    manager_base = 'sfa.managers'
+    mgr_type = 'pl'
+    manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
+    manager = __import__(manager_module, fromlist=[manager-base])
+
+    allocated = manager.create_slice(api, slice_xrn, rspec)
+    return allocated
+
index c5a41f6..afead1d 100644 (file)
@@ -16,7 +16,7 @@ class GetVersion(Method):
     returns = Parameter(dict, "Version information")
 
     def call(self):
-        self.api.logger.info("interface: %s" % (self.name))
+        self.api.logger.info("interface: %s\tmethod-name: %s" % (self.api.interface, self.name))
 
         manager_base = 'sfa.managers'
 
index 5334d44..ab9fa1f 100644 (file)
@@ -28,4 +28,5 @@ update
 remove_peer_object
 GetVersion
 ListResources
+CreateSliver
 """.split()
index ab99b44..922ace7 100644 (file)
@@ -19,10 +19,10 @@ privilege_table = {"authority": ["register", "remove", "update", "resolve", "lis
                    "resolve": ["resolve", "list", "getcredential", "listresources", "getversion"],
                    "sa": ["getticket", "redeemslice", "redeemticket", "createslice", "deleteslice", "updateslice", 
                           "getsliceresources", "getticket", "loanresources", "stopslice", "startslice", 
-                          "deleteslice", "resetslice", "listslices", "listnodes", "getpolicy"],
-                   "embed": ["getticket", "redeemslice", "redeemticket", "createslice", "deleteslice", "updateslice", "getsliceresources"],
+                          "deleteslice", "resetslice", "listslices", "listnodes", "getpolicy", "createsliver"],
+                   "embed": ["getticket", "redeemslice", "redeemticket", "createslice", "createsliver",  "deleteslice", "updateslice", "getsliceresources"],
                    "bind": ["getticket", "loanresources", "redeemticket"],
-                   "control": ["updateslice", "createslice", "stopslice", "startslice", "deleteslice", "resetslice", "getsliceresources", "getgids"],
+                   "control": ["updateslice", "createslice", "createsliver", "stopslice", "startslice", "deleteslice", "resetslice", "getsliceresources", "getgids"],
                    "info": ["listslices", "listnodes", "getpolicy"],
                    "ma": ["setbootstate", "getbootstate", "reboot", "getgids", "gettrustedcerts"],
                    "operator": ["gettrustedcerts", "getgids"]}
diff --git a/tests/testGeniAM.py b/tests/testGeniAM.py
new file mode 100644 (file)
index 0000000..e69de29