def create_sliver(self, slice_urn, slice_hrn, creds, rspec_string, users, options): aggregate = DummyAggregate(self) slices = DummySlices(self) sfa_peer = slices.get_sfa_peer(slice_hrn) slice_record = None if users: slice_record = users[0].get("slice_record", {}) # parse rspec rspec = RSpec(rspec_string) requested_attributes = rspec.version.get_slice_attributes() # ensure slice record exists slice = slices.verify_slice(slice_hrn, slice_record, sfa_peer, options=options) # ensure user records exists # users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options) # add/remove slice from nodes requested_slivers = [] for node in rspec.version.get_nodes_with_slivers(): hostname = None if node.get("component_name"): hostname = node.get("component_name").strip() elif node.get("component_id"): hostname = xrn_to_hostname(node.get("component_id").strip()) if hostname: requested_slivers.append(hostname) requested_slivers_ids = [] for hostname in requested_slivers: node_id = self.shell.GetNodes({"hostname": hostname})[0]["node_id"] requested_slivers_ids.append(node_id) nodes = slices.verify_slice_nodes(slice, requested_slivers_ids) return aggregate.get_rspec(slice_xrn=slice_urn, version=rspec.version)
def allocate(self, urn, rspec_string, expiration, options={}): xrn = Xrn(urn) aggregate = DummyAggregate(self) slices = DummySlices(self) slice_record = None users = options.get('geni_users', []) if users: slice_record = users[0].get('slice_record', {}) # parse rspec rspec = RSpec(rspec_string) requested_attributes = rspec.version.get_slice_attributes() # ensure slice record exists slice = slices.verify_slice(xrn.hrn, slice_record, expiration=expiration, options=options) # ensure person records exists #persons = slices.verify_persons(xrn.hrn, slice, users, peer, sfa_peer, options=options) # add/remove slice from nodes request_nodes = rspec.version.get_nodes_with_slivers() nodes = slices.verify_slice_nodes(urn, slice, request_nodes) return aggregate.describe([xrn.get_urn()], version=rspec.version)
def allocate (self, urn, rspec_string, expiration, options={}): xrn = Xrn(urn) aggregate = DummyAggregate(self) slices = DummySlices(self) slice_record=None users = options.get('geni_users', []) if users: slice_record = users[0].get('slice_record', {}) # parse rspec rspec = RSpec(rspec_string) requested_attributes = rspec.version.get_slice_attributes() # ensure slice record exists slice = slices.verify_slice(xrn.hrn, slice_record, expiration=expiration, options=options) # ensure person records exists #persons = slices.verify_persons(xrn.hrn, slice, users, peer, sfa_peer, options=options) # add/remove slice from nodes request_nodes = rspec.version.get_nodes_with_slivers() nodes = slices.verify_slice_nodes(urn, slice, request_nodes) return aggregate.describe([xrn.get_urn()], version=rspec.version)
def provision(self, urns, options={}): # update users slices = DummySlices(self) aggregate = DummyAggregate(self) slivers = aggregate.get_slivers(urns) slice = slivers[0] geni_users = options.get('geni_users', []) #users = slices.verify_users(None, slice, geni_users, options=options) # update sliver allocation states and set them to geni_provisioned sliver_ids = [sliver['sliver_id'] for sliver in slivers] dbsession = self.api.dbsession() SliverAllocation.set_allocations(sliver_ids, 'geni_provisioned', dbsession) version_manager = VersionManager() rspec_version = version_manager.get_version( options['geni_rspec_version']) return self.describe(urns, rspec_version, options=options)