Пример #1
0
 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
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
 def delete(self, id):
     scenario = Scenario.fetchone(id=id)
     scenario.delete()
     return jsonify(message="ok")