async def test_add_node_from_template(controller):
    """
    For a local server we send the project path
    """

    compute = MagicMock()
    compute.id = "local"
    project = Project(controller=controller, name="Test")
    project.emit_notification = MagicMock()
    template = Template(
        str(uuid.uuid4()), {
            "compute_id": "local",
            "name": "Test",
            "template_type": "vpcs",
            "builtin": False,
        })
    controller.template_manager.templates[template.id] = template
    controller._computes["local"] = compute

    response = MagicMock()
    response.json = {"console": 2048}
    compute.post = AsyncioMagicMock(return_value=response)

    node = await project.add_node_from_template(template.id, x=23, y=12)
    compute.post.assert_any_call('/projects',
                                 data={
                                     "name": project._name,
                                     "project_id": project._id,
                                     "path": project._path
                                 })

    assert compute in project._project_created_on_compute
    project.emit_notification.assert_any_call("node.created", node.__json__())
async def test_delete_node_delete_link(controller):
    """
    Delete a node delete all the node connected
    """
    compute = MagicMock()
    project = Project(controller=controller, name="Test")
    project.emit_notification = MagicMock()

    response = MagicMock()
    response.json = {"console": 2048}
    compute.post = AsyncioMagicMock(return_value=response)

    node = await project.add_node(compute,
                                  "test",
                                  None,
                                  node_type="vpcs",
                                  properties={"startup_config": "test.cfg"})

    link = await project.add_link()
    await link.add_node(node, 0, 0)

    await project.delete_node(node.id)
    assert node.id not in project._nodes
    assert link.id not in project._links

    compute.delete.assert_any_call('/projects/{}/vpcs/nodes/{}'.format(
        project.id, node.id))
    project.emit_notification.assert_any_call("node.deleted", node.__json__())
    project.emit_notification.assert_any_call("link.deleted", link.__json__())
async def test_add_node_non_local(controller):
    """
    For a non local server we do not send the project path
    """

    compute = MagicMock()
    compute.id = "remote"
    project = Project(controller=controller, name="Test")
    project.emit_notification = MagicMock()

    response = MagicMock()
    response.json = {"console": 2048}
    compute.post = AsyncioMagicMock(return_value=response)

    node = await project.add_node(compute,
                                  "test",
                                  None,
                                  node_type="vpcs",
                                  properties={"startup_script": "test.cfg"})

    compute.post.assert_any_call('/projects',
                                 data={
                                     "name": project._name,
                                     "project_id": project._id
                                 })
    compute.post.assert_any_call('/projects/{}/vpcs/nodes'.format(project.id),
                                 data={
                                     'node_id': node.id,
                                     'startup_script': 'test.cfg',
                                     'name': 'test'
                                 },
                                 timeout=1200)
    assert compute in project._project_created_on_compute
    project.emit_notification.assert_any_call("node.created", node.__json__())
Beispiel #4
0
def test_delete_node(async_run, controller):
    """
    For a local server we send the project path
    """
    compute = MagicMock()
    project = Project(controller=controller, name="Test")
    project.emit_notification = MagicMock()

    response = MagicMock()
    response.json = {"console": 2048}
    compute.post = AsyncioMagicMock(return_value=response)

    node = async_run(
        project.add_node(compute,
                         "test",
                         None,
                         node_type="vpcs",
                         properties={"startup_config": "test.cfg"}))
    assert node.id in project._nodes
    async_run(project.delete_node(node.id))
    assert node.id not in project._nodes

    compute.delete.assert_any_call('/projects/{}/vpcs/nodes/{}'.format(
        project.id, node.id))
    project.emit_notification.assert_any_call("node.deleted", node.__json__())
Beispiel #5
0
def test_update(controller, async_run):
    project = Project(controller=controller, name="Hello")
    project.emit_notification = MagicMock()
    assert project.name == "Hello"
    async_run(project.update(name="World"))
    assert project.name == "World"
    project.emit_notification.assert_any_call("project.updated",
                                              project.__json__())
async def test_update_on_compute(controller):

    variables = [{"name": "TEST", "value": "VAL1"}]
    compute = MagicMock()
    compute.id = "local"
    project = Project(controller=controller, name="Test")
    project._project_created_on_compute = [compute]
    project.emit_notification = MagicMock()
    await project.update(variables=variables)
    compute.put.assert_any_call('/projects/{}'.format(project.id),
                                {"variables": variables})
Beispiel #7
0
def test_open_close(async_run, controller):
    project = Project(controller=controller, name="Test")
    assert project.status == "opened"
    async_run(project.close())
    project.start_all = AsyncioMagicMock()
    async_run(project.open())
    assert not project.start_all.called
    assert project.status == "opened"
    project.emit_notification = MagicMock()
    async_run(project.close())
    assert project.status == "closed"
    project.emit_notification.assert_any_call("project.closed",
                                              project.__json__())
async def test_delete_locked_node(controller):
    """
    For a local server we send the project path
    """

    compute = MagicMock()
    project = Project(controller=controller, name="Test")
    project.emit_notification = MagicMock()

    response = MagicMock()
    response.json = {"console": 2048}
    compute.post = AsyncioMagicMock(return_value=response)

    node = await project.add_node(compute,
                                  "test",
                                  None,
                                  node_type="vpcs",
                                  properties={"startup_config": "test.cfg"})
    assert node.id in project._nodes
    node.locked = True
    with pytest.raises(aiohttp.web_exceptions.HTTPConflict):
        await project.delete_node(node.id)