All pages
Powered by GitBook
1 of 1

Projects

What's in a Project?

Creating a Project

From Scratch

You can create a Project either via the UI or the SDK:

Simply click the "Create Project" button from the Project list view.

Copying a Project

You can quickly copy an existing Project to get up and running with a new one. This will copy the following items into your new Project:

  • Test specifications

  • Test tags

  • Notification rules

There are a couple of ways to copy a Project.

Exporting and Importing

Any Project can be exported to a JSON file; that JSON file can then be adjusted to your liking and imported as a new Project. This is doable both via the UI and the SDK:

Exporting

To export a Project, simply click the download icon on the Project page, in the header.

This will download the Project's JSON to your computer. There is an example JSON in the expandable section below.

Importing

Once you have a Project JSON, you can edit it as you'd like, and then import it by clicking the "Create Project" button on the Project list and then clicking the "Import from File" tab.

Fill out the name and description, click "Create Project", and you're all set!

Exporting and importing a Project is done easily via the SDK functions export_project_as_json and import_project_from_json.

import dbnl
dbnl.login()

# Export
project_1 = dbnl.get_or_create_project(name="Existing Project")
export_json = dbnl.export_project_as_json(project=proj1)
# Adjust the project values as you'd like. You will need to change the name.
# An example of the JSON structure is in the collapsible section below
export_json["project"]["name"] = "New Project"

# Import
project_2 = dbnl.import_project_from_json(params=export_json)
Sample Project JSON
{
    "project": {
        "name": "My Project",
        "description": "This is my project."
    },
    "notification_rules": [
        {
            "conditions": [
                {
                    "assertion_name": "less_than",
                    "assertion_params": { "other": 0.85 },
                    "query_name": "test_status_percentage_query",
                    "query_params": {
                        "exclude_tag_ids": [],
                        "include_tag_ids": [],
                        "require_tag_ids": [],
                        "statuses": ["PASSED"]
                    }
                }
            ],
            "name": "Alert if passed tests are less than 85%",
            "notification_integration_names": ["Notification channel"],
            "status": "ENABLED",
            "trigger": "test_session.failed"
        }
    ],
    "tags": [
        {
            "name": "my-tag",
            "description" :"This is my tag."
        }
    ],
    "test_specs": [
        {
            "assertion": { "name": "less_than", "params": { "other": 0.5 } },
            "description": "Testing the difference in the example statistic",
            "name": "Gr.0: Non Parametric Difference: Example_Statistic",
            "statistic_inputs": [
                {
                    "select_query_template": {
                        "filter": null,
                        "select": "{EXPERIMENT}.Example_Statistic"
                    }
                },
                {
                    "select_query_template": {
                        "filter": null,
                        "select": "{BASELINE}.Example_Statistic"
                    }
                }
            ],
            "statistic_name": "my_stat",
            "statistic_params": {},
            "tag_names": ["my-tag"]
        }
    ]
}

Copying

You can also just directly copy a given Project. Again, this can be done via the UI or the SDK:

There are two ways to copy a Project from the UI:

From the "Create Project" Modal

In the Project list, after you click "Create Project", you can navigate to the "Copy Existing" tab and choose a Project from the dropdown.

From a Project Page

While viewing a Project, you can click the copy icon in the header to copy it to a new Project.

Copying a Project is done easily via the SDK function copy_project.

import dbnl
dbnl.login()


project_1 = dbnl.get_or_create_project(name="Existing Project")
project_2 = dbnl.copy_project(project=project_1, name="New Project")