Revert "Revert "[autotest] Add shard tables and models to Autotest""
This reverts commit c1a9d91f65d8fa5225ab673266d165e759c645ab.
Change-Id: Ic6e01cbf06279e19b87926a076548731677024fa
Reviewed-on: https://chromium-review.googlesource.com/214027
Reviewed-by: Alex Miller <milleral@chromium.org>
Tested-by: Jakob Jülich <jakobjuelich@chromium.org>
Commit-Queue: Jakob Jülich <jakobjuelich@chromium.org>
diff --git a/frontend/afe/doctests/001_rpc_test.txt b/frontend/afe/doctests/001_rpc_test.txt
index 57f4497..d05d6cd 100644
--- a/frontend/afe/doctests/001_rpc_test.txt
+++ b/frontend/afe/doctests/001_rpc_test.txt
@@ -66,7 +66,7 @@
... 'name': 'test_label',
... 'platform': 1,
... 'kernel_config': '/my/kernel/config',
-... 'only_if_needed' : False,
+... 'only_if_needed' : False,
... 'invalid': 0,
... 'atomic_group': None}]
True
@@ -559,7 +559,8 @@
... 'drone_set': drone_set,
... 'parameterized_job': None,
... 'test_retry': 0,
-... 'parent_job': None}
+... 'parent_job': None,
+... 'shard': None}
True
# get_host_queue_entries returns a lot of data, so let's only check a couple
diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index 5bb2889..53700ea 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -142,6 +142,16 @@
return unicode(self.name)
+class Shard(dbmodels.Model, model_logic.ModelExtensions):
+
+ labels = dbmodels.ManyToManyField(Label, blank=True,
+ db_table='afe_shards_labels')
+
+ class Meta:
+ """Metadata for class ParameterizedJob."""
+ db_table = 'afe_shards'
+
+
class Drone(dbmodels.Model, model_logic.ModelExtensions):
"""
A scheduler drone
@@ -1066,6 +1076,8 @@
timeout_mins = dbmodels.IntegerField(default=DEFAULT_TIMEOUT_MINS)
+ shard = dbmodels.ForeignKey(Shard, blank=True, null=True)
+
# custom manager
objects = JobManager()
diff --git a/frontend/migrations/094_add_shards.py b/frontend/migrations/094_add_shards.py
new file mode 100644
index 0000000..fbf4c8a
--- /dev/null
+++ b/frontend/migrations/094_add_shards.py
@@ -0,0 +1,31 @@
+UP_SQL = """
+CREATE TABLE afe_shards (
+ id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
+) ENGINE=innodb;
+
+ALTER TABLE afe_jobs ADD COLUMN shard_id INT NULL;
+ALTER TABLE afe_jobs ADD CONSTRAINT jobs_to_shard_ibfk
+ FOREIGN KEY (shard_id) REFERENCES afe_shards(id);
+
+CREATE TABLE afe_shards_labels (
+ id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ shard_id INT NOT NULL,
+ label_id INT NOT NULL
+) ENGINE=InnoDB;
+
+ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_shard_id_fk
+ FOREIGN KEY (`shard_id`) REFERENCES `afe_shards` (`id`);
+ALTER TABLE `afe_shards_labels` ADD CONSTRAINT shard_label_id_fk
+ FOREIGN KEY (`label_id`) REFERENCES `afe_labels` (`id`);
+"""
+
+DOWN_SQL = """
+ALTER TABLE afe_jobs DROP FOREIGN KEY jobs_to_shard_ibfk;
+ALTER TABLE afe_jobs DROP COLUMN shard_id;
+
+ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_label_id_fk;
+ALTER TABLE afe_shards_labels DROP FOREIGN KEY shard_shard_id_fk;
+DROP TABLE afe_shards_labels;
+
+DROP TABLE afe_shards;
+"""