diff --git a/server/website/website/forms.py b/server/website/website/forms.py index 5cbf0e2..985edc7 100644 --- a/server/website/website/forms.py +++ b/server/website/website/forms.py @@ -90,7 +90,7 @@ class SessionForm(forms.ModelForm): model = Session fields = ('name', 'description', 'tuning_session', 'dbms', 'cpu', 'memory', 'storage', - 'target_objective') + 'algorithm', 'target_objective') widgets = { 'name': forms.TextInput(attrs={'required': True}), diff --git a/server/website/website/models.py b/server/website/website/models.py index a1e9180..3954a85 100644 --- a/server/website/website/models.py +++ b/server/website/website/models.py @@ -12,7 +12,7 @@ from django.utils.timezone import now from .types import (DBMSType, LabelStyleType, MetricType, KnobUnitType, PipelineTaskType, VarType, KnobResourceType, - WorkloadStatusType) + WorkloadStatusType, AlgorithmType) class BaseModel(models.Model): @@ -179,13 +179,13 @@ class Hardware(BaseModel): def __unicode__(self): return 'CPU:{}, RAM:{}, Storage:{}'.format(self.cpu, self.memory, self.storage) - class Session(BaseModel): user = models.ForeignKey(User) name = models.CharField(max_length=64, verbose_name="session name") description = models.TextField(null=True, blank=True) dbms = models.ForeignKey(DBMSCatalog) hardware = models.ForeignKey(Hardware) + algorithm = models.IntegerField(choices=AlgorithmType.choices()) project = models.ForeignKey(Project) creation_time = models.DateTimeField() diff --git a/server/website/website/templates/edit_session.html b/server/website/website/templates/edit_session.html index 7ee0d45..441c52c 100644 --- a/server/website/website/templates/edit_session.html +++ b/server/website/website/templates/edit_session.html @@ -21,7 +21,6 @@ {{ form.dbms.label_tag }} {{ form.dbms }} - {{ form.cpu.label_tag }} {{ form.cpu }} @@ -34,7 +33,10 @@ {{ form.storage.label_tag }} {{ form.storage }} - + + {{ form.algorithm.label_tag }} + {{ form.algorithm }} + {{ form.tuning_session.label_tag }} {{ form.tuning_session }} diff --git a/server/website/website/templates/session.html b/server/website/website/templates/session.html index abc78b8..21f614e 100644 --- a/server/website/website/templates/session.html +++ b/server/website/website/templates/session.html @@ -32,6 +32,10 @@
{{ labels.hardware }}
{{ session.hardware }} + +
{{ labels.algorithm }}
+ {{ algorithm_name }} +
{{ labels.creation_time }}
{{ session.creation_time }} diff --git a/server/website/website/types.py b/server/website/website/types.py index 1feae6c..b6eda9a 100644 --- a/server/website/website/types.py +++ b/server/website/website/types.py @@ -170,3 +170,16 @@ class LabelStyleType(BaseType): CAPFIRST: 'capfirst', LOWER: 'lower' } + +class AlgorithmType(BaseType): + OTTERTUNE = 1 + ALGORITHM1 = 2 + ALGORITHM2 = 3 + ALGORITHM3 = 4 + + TYPE_NAMES = { + OTTERTUNE: 'Ottertune Default', + ALGORITHM1: 'Algorithm 1', + ALGORITHM2: 'Algorithm 2', + ALGORITHM3: 'Algorithm 3' + } diff --git a/server/website/website/views.py b/server/website/website/views.py index 1ddcbe6..7637896 100644 --- a/server/website/website/views.py +++ b/server/website/website/views.py @@ -33,7 +33,7 @@ from .parser import Parser from .tasks import (aggregate_target_results, map_workload, configuration_recommendation) from .types import (DBMSType, KnobUnitType, MetricType, - TaskType, VarType, WorkloadStatusType) + TaskType, VarType, WorkloadStatusType, AlgorithmType) from .utils import JSONUtil, LabelUtil, MediaUtil, TaskUtil from .settings import TIME_ZONE @@ -261,6 +261,7 @@ def session_view(request, project_id, session_id): 'knob_names': knob_names, 'filters': [], 'session': session, + 'algorithm_name': AlgorithmType.TYPE_NAMES[session.algorithm], 'results': results, 'labels': form_labels, } @@ -313,6 +314,7 @@ def create_or_edit_session(request, project_id, session_id=''): initial={ 'dbms': DBMSCatalog.objects.get( type=DBMSType.POSTGRES, version='9.6'), + 'algorithm': AlgorithmType.OTTERTUNE, 'target_objective': 'throughput_txn_per_sec', }) context = {