git://git.onelab.eu
/
plcapi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- merge from PlanetLab Europe
[plcapi.git]
/
PLC
/
Methods
/
AddSliceToNodes.py
diff --git
a/PLC/Methods/AddSliceToNodes.py
b/PLC/Methods/AddSliceToNodes.py
index
ce8bb1c
..
d5a2c8c
100644
(file)
--- a/
PLC/Methods/AddSliceToNodes.py
+++ b/
PLC/Methods/AddSliceToNodes.py
@@
-3,6
+3,7
@@
from PLC.Method import Method
from PLC.Parameter import Parameter, Mixed
from PLC.Nodes import Node, Nodes
from PLC.Slices import Slice, Slices
from PLC.Parameter import Parameter, Mixed
from PLC.Nodes import Node, Nodes
from PLC.Slices import Slice, Slices
+from PLC.Persons import Person, Persons
from PLC.Auth import Auth
class AddSliceToNodes(Method):
from PLC.Auth import Auth
class AddSliceToNodes(Method):
@@
-47,12
+48,15
@@
class AddSliceToNodes(Method):
raise PLCPermissionDenied, "Specified slice not associated with any of your sites"
# Get specified nodes, add them to the slice
raise PLCPermissionDenied, "Specified slice not associated with any of your sites"
# Get specified nodes, add them to the slice
- nodes = Nodes(self.api, node_id_or_hostname_list, ['node_id', 'hostname', 'slice_ids', 'slice_ids_whitelist'])
+ nodes = Nodes(self.api, node_id_or_hostname_list, ['node_id', 'hostname', 'slice_ids', 'slice_ids_whitelist', 'site_id'])
+
for node in nodes:
# check the slice whitelist on each node first
for node in nodes:
# check the slice whitelist on each node first
+ # allow users at site to add node to slice, ignoring whitelist
if node['slice_ids_whitelist'] and \
if node['slice_ids_whitelist'] and \
- slice['slice_id'] not in node['slice_ids_whitelist']:
- raise PLCInvalidArgument, "%s is not on %s's whitelist" % \
+ slice['slice_id'] not in node['slice_ids_whitelist'] and \
+ not set(self.caller['site_ids']).intersection([node['site_id']]):
+ raise PLCInvalidArgument, "%s is not allowed on %s (not on the whitelist)" % \
(slice['name'], node['hostname'])
if slice['slice_id'] not in node['slice_ids']:
slice.add_node(node, commit = False)
(slice['name'], node['hostname'])
if slice['slice_id'] not in node['slice_ids']:
slice.add_node(node, commit = False)