def get(self, id): scenario = Scenario.fetchone(id=id) if scenario is not None: return jsonify(id=scenario.id, name=scenario.name, description=scenario.description, sgRules=scenario.sg_rules, topo=scenario.topo.value, isPublic=scenario.is_public.value) else: return jsonify(message="scenario not found"), 404
def deploy(self, id): cloudconfig_id = request.get_json()['cloudConfigId'] cloudconfig = CloudConfig.fetchone(id=cloudconfig_id) users = request.get_json()['users'] lab = Lab.fetchone(id=id) lab.update(status='deploying') """Chances are you are redeploying a lab, whose slices are already created""" slices = Slice.fetchall(lab_id=lab.id) """Otherwise, create slices for the lab""" if len(slices) == 0: for index, user in enumerate(users): new_slice = Slice.insert(lab_id=lab.id, status='deploying', user_id=user['id'], name=lab.name + ' / slice_' + str(index), cloud_attrs={}) slices.append(new_slice) scenario = Scenario.fetchone(id=lab.scenario_id) if cloudconfig.provider == 'Openstack': return _deploy_openstack(id, cloudconfig, slices, scenario)
def patch(self, id): scenario = Scenario.fetchone(id=id) if scenario.owner_id != g.user['id']: return jsonify( message="You are not the owner of this scenario"), 405 name = request.get_json()['name'] description = request.get_json()['description'] topo = request.get_json()['topo'] valid, errs = validate_topo(topo) if not valid: return jsonify(errors=errs), 400 isPublic = request.get_json()['isPublic'] sgRules = request.get_json()['sgRules'] scenario.name = name scenario.description = description scenario.topo = topo scenario.is_public = isPublic scenario.sg_rules = sgRules scenario.save() return jsonify(id=id)
def delete(self, id): scenario = Scenario.fetchone(id=id) scenario.delete() return jsonify(message="ok")