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 = {