sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #07626
[Merge] ~bjornt/maas:move-metadataserver-script-models into maas:master
Björn Tillenius has proposed merging ~bjornt/maas:move-metadataserver-script-models into maas:master with ~bjornt/maas:move-metadataserver-node-models as a prerequisite.
Commit message:
Move Script metadataserver models to maasserver.
Requested reviews:
MAAS Maintainers (maas-maintainers)
For more details, see:
https://code.launchpad.net/~bjornt/maas/+git/maas/+merge/441920
--
Your team MAAS Committers is subscribed to branch maas:master.
diff --git a/src/maasserver/api/commissioning_scripts.py b/src/maasserver/api/commissioning_scripts.py
index 477b688..bf1e6e6 100644
--- a/src/maasserver/api/commissioning_scripts.py
+++ b/src/maasserver/api/commissioning_scripts.py
@@ -18,9 +18,9 @@ from maasserver.audit import create_audit_event
from maasserver.enum import ENDPOINT
from maasserver.exceptions import MAASAPIValidationError
from maasserver.forms.script import ScriptForm
+from maasserver.models import Script
from metadataserver.enum import SCRIPT_TYPE
from metadataserver.fields import Bin
-from metadataserver.models import Script
from provisioningserver.events import EVENT_TYPES
diff --git a/src/maasserver/api/nodedevices.py b/src/maasserver/api/nodedevices.py
index 354150a..f3243f7 100644
--- a/src/maasserver/api/nodedevices.py
+++ b/src/maasserver/api/nodedevices.py
@@ -11,8 +11,8 @@ from maasserver.api.utils import get_optional_param
from maasserver.exceptions import MAASAPIValidationError
from maasserver.models import Node, NodeDevice
from maasserver.models.nodedevice import translate_bus
+from maasserver.models.script import translate_hardware_type
from maasserver.permissions import NodePermission
-from metadataserver.models.script import translate_hardware_type
class NodeDevicesHandler(OperationsHandler):
diff --git a/src/maasserver/api/nodes.py b/src/maasserver/api/nodes.py
index 41eeeab..4294776 100644
--- a/src/maasserver/api/nodes.py
+++ b/src/maasserver/api/nodes.py
@@ -46,6 +46,7 @@ from maasserver.forms import BulkNodeSetZoneForm
from maasserver.forms.ephemeral import TestForm
from maasserver.models import Filesystem, Interface, Node, OwnerData
from maasserver.models.nodeprobeddetails import get_single_probed_details
+from maasserver.models.scriptset import get_status_from_qs
from maasserver.node_constraint_filter_forms import ReadNodesForm
from maasserver.permissions import NodePermission
from maasserver.utils.forms import compose_invalid_choice_text
@@ -56,7 +57,6 @@ from metadataserver.enum import (
SCRIPT_STATUS,
SCRIPT_STATUS_CHOICES,
)
-from metadataserver.models.scriptset import get_status_from_qs
NODES_SELECT_RELATED = (
"bmc",
diff --git a/src/maasserver/api/results.py b/src/maasserver/api/results.py
index 4b16445..424d7a9 100644
--- a/src/maasserver/api/results.py
+++ b/src/maasserver/api/results.py
@@ -11,10 +11,9 @@ from formencode.validators import Int
from maasserver.api.support import OperationsHandler
from maasserver.api.utils import get_optional_list, get_optional_param
-from maasserver.models import Node
+from maasserver.models import Node, ScriptResult
from maasserver.permissions import NodePermission
from metadataserver.enum import SCRIPT_STATUS
-from metadataserver.models import ScriptResult
class NodeResultsHandler(OperationsHandler):
diff --git a/src/maasserver/api/scriptresults.py b/src/maasserver/api/scriptresults.py
index 8ca1855..6051a56 100644
--- a/src/maasserver/api/scriptresults.py
+++ b/src/maasserver/api/scriptresults.py
@@ -22,11 +22,10 @@ from piston3.utils import rc
from maasserver.api.support import admin_method, operation, OperationsHandler
from maasserver.api.utils import get_optional_param
from maasserver.exceptions import MAASAPIValidationError
-from maasserver.models import Node
+from maasserver.models import Node, ScriptSet
+from maasserver.models.script import translate_hardware_type
+from maasserver.models.scriptset import translate_result_type
from maasserver.permissions import NodePermission
-from metadataserver.models import ScriptSet
-from metadataserver.models.script import translate_hardware_type
-from metadataserver.models.scriptset import translate_result_type
def fmt_time(dt):
diff --git a/src/maasserver/api/scripts.py b/src/maasserver/api/scripts.py
index 40b2221..6f3f2ea 100644
--- a/src/maasserver/api/scripts.py
+++ b/src/maasserver/api/scripts.py
@@ -19,8 +19,8 @@ from maasserver.audit import create_audit_event
from maasserver.enum import ENDPOINT
from maasserver.exceptions import MAASAPIValidationError
from maasserver.forms.script import ScriptForm
-from metadataserver.models import Script
-from metadataserver.models.script import (
+from maasserver.models import Script
+from maasserver.models.script import (
translate_hardware_type,
translate_script_type,
)
diff --git a/src/maasserver/api/tests/test_commissioning.py b/src/maasserver/api/tests/test_commissioning.py
index d413ddc..6b4903c 100644
--- a/src/maasserver/api/tests/test_commissioning.py
+++ b/src/maasserver/api/tests/test_commissioning.py
@@ -12,7 +12,7 @@ import random
from django.urls import reverse
from piston3.utils import rc
-from maasserver.models import Event
+from maasserver.models import Event, Script
from maasserver.testing.api import APITestCase
from maasserver.testing.factory import factory
from maasserver.testing.matchers import HasStatusCode
@@ -24,7 +24,6 @@ from metadataserver.enum import (
SCRIPT_TYPE,
)
from metadataserver.fields import Bin
-from metadataserver.models import Script
from provisioningserver.events import AUDIT
diff --git a/src/maasserver/api/tests/test_machines.py b/src/maasserver/api/tests/test_machines.py
index 821a2ce..0104f68 100644
--- a/src/maasserver/api/tests/test_machines.py
+++ b/src/maasserver/api/tests/test_machines.py
@@ -26,6 +26,7 @@ import maasserver.forms as forms_module
from maasserver.forms.pods import ComposeMachineForm, ComposeMachineForPodsForm
from maasserver.models import Config, Domain, Machine, Node
from maasserver.models import node as node_module
+from maasserver.models import ScriptSet
from maasserver.models.node import RELEASABLE_STATUSES
from maasserver.node_constraint_filter_forms import AcquireNodeForm
from maasserver.rpc.testing.fixtures import MockLiveRegionToClusterRPCFixture
@@ -50,7 +51,6 @@ from maastesting.matchers import (
from maastesting.testcase import MAASTestCase
from maastesting.twisted import always_succeed_with
from metadataserver.enum import SCRIPT_TYPE
-from metadataserver.models import ScriptSet
from provisioningserver.rpc import cluster as cluster_module
from provisioningserver.utils.enum import map_enum
diff --git a/src/maasserver/api/tests/test_node.py b/src/maasserver/api/tests/test_node.py
index 519a583..652eeec 100644
--- a/src/maasserver/api/tests/test_node.py
+++ b/src/maasserver/api/tests/test_node.py
@@ -16,6 +16,7 @@ from maasserver.enum import NODE_STATUS, NODE_STATUS_CHOICES, POWER_STATE
from maasserver.models import Config, Node
from maasserver.models import node as node_module
from maasserver.models import NodeKey
+from maasserver.models.scriptset import get_status_from_qs
from maasserver.testing.api import APITestCase
from maasserver.testing.architecture import make_usable_architecture
from maasserver.testing.factory import factory
@@ -35,7 +36,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_CHOICES,
SCRIPT_TYPE,
)
-from metadataserver.models.scriptset import get_status_from_qs
from metadataserver.nodeinituser import get_node_init_user
from provisioningserver.refresh.node_info_scripts import (
LLDP_OUTPUT_NAME,
diff --git a/src/maasserver/api/tests/test_scripts.py b/src/maasserver/api/tests/test_scripts.py
index 5b39fe3..f381e3c 100644
--- a/src/maasserver/api/tests/test_scripts.py
+++ b/src/maasserver/api/tests/test_scripts.py
@@ -13,7 +13,7 @@ import random
from django.urls import reverse
from testtools.matchers import ContainsAll
-from maasserver.models import Event, VersionedTextFile
+from maasserver.models import Event, Script, VersionedTextFile
from maasserver.testing.api import APITestCase
from maasserver.testing.factory import factory
from maasserver.testing.matchers import HasStatusCode
@@ -24,7 +24,6 @@ from metadataserver.enum import (
SCRIPT_PARALLEL_CHOICES,
SCRIPT_TYPE_CHOICES,
)
-from metadataserver.models import Script
from provisioningserver.events import AUDIT
diff --git a/src/maasserver/forms/__init__.py b/src/maasserver/forms/__init__.py
index e87279e..040ad5b 100644
--- a/src/maasserver/forms/__init__.py
+++ b/src/maasserver/forms/__init__.py
@@ -959,8 +959,7 @@ class MachineForm(NodeForm):
self.data["enable_hw_sync"] = enable_hw_sync
def save(self, *args, **kwargs):
- # Prevent circular imports
- from metadataserver.models import ScriptSet
+ from maasserver.models import ScriptSet
# LP:1807991 - If requested when creating a new Machine, set the status
# to COMMISSIONING when the object is created.
@@ -1207,8 +1206,7 @@ class AdminMachineForm(MachineForm, AdminNodeForm, WithPowerTypeMixin):
def _setup_deployed_machine(self, machine):
"""Configure the Machine before it has been saved."""
- from maasserver.models import NodeKey
- from metadataserver.models.scriptset import ScriptSet
+ from maasserver.models import NodeKey, ScriptSet
machine.update_status(NODE_STATUS.DEPLOYED, validate_transition=False)
machine.owner = self.request.user
diff --git a/src/maasserver/forms/ephemeral.py b/src/maasserver/forms/ephemeral.py
index 893ef37..16c165a 100644
--- a/src/maasserver/forms/ephemeral.py
+++ b/src/maasserver/forms/ephemeral.py
@@ -19,10 +19,10 @@ from django.forms import (
from django.http import QueryDict
from maasserver.enum import NODE_STATUS
+from maasserver.models import Script
from maasserver.node_action import get_node_action
from maasserver.utils.forms import set_form_error
from metadataserver.enum import SCRIPT_TYPE
-from metadataserver.models import Script
class TestForm(Form):
diff --git a/src/maasserver/forms/script.py b/src/maasserver/forms/script.py
index e23b6ed..4e5d689 100644
--- a/src/maasserver/forms/script.py
+++ b/src/maasserver/forms/script.py
@@ -25,14 +25,14 @@ from maasserver.audit import create_audit_event
from maasserver.enum import ENDPOINT
from maasserver.fields import VersionedTextFileField
from maasserver.forms.parameters import ParametersForm
-from maasserver.utils.forms import set_form_error
-from metadataserver.enum import HARDWARE_TYPE, SCRIPT_PARALLEL, SCRIPT_TYPE
-from metadataserver.models import Script
-from metadataserver.models.script import (
+from maasserver.models import Script
+from maasserver.models.script import (
translate_hardware_type,
translate_script_parallel,
translate_script_type,
)
+from maasserver.utils.forms import set_form_error
+from metadataserver.enum import HARDWARE_TYPE, SCRIPT_PARALLEL, SCRIPT_TYPE
from provisioningserver.events import EVENT_TYPES
diff --git a/src/maasserver/forms/tests/test_script.py b/src/maasserver/forms/tests/test_script.py
index 852a5e8..67cf1e0 100644
--- a/src/maasserver/forms/tests/test_script.py
+++ b/src/maasserver/forms/tests/test_script.py
@@ -17,7 +17,7 @@ from maasserver.forms.script import (
ScriptForm,
TestingScriptForm,
)
-from maasserver.models import Event, VersionedTextFile
+from maasserver.models import Event, Script, VersionedTextFile
from maasserver.testing.factory import factory
from maasserver.testing.testcase import MAASServerTestCase
from metadataserver.enum import (
@@ -28,7 +28,6 @@ from metadataserver.enum import (
SCRIPT_TYPE,
SCRIPT_TYPE_CHOICES,
)
-from metadataserver.models import Script
from provisioningserver.events import AUDIT
diff --git a/src/maasserver/migrations/maasserver/0297_move_metadata_script_models.py b/src/maasserver/migrations/maasserver/0297_move_metadata_script_models.py
new file mode 100644
index 0000000..41a312d
--- /dev/null
+++ b/src/maasserver/migrations/maasserver/0297_move_metadata_script_models.py
@@ -0,0 +1,394 @@
+# Generated by Django 3.2.12 on 2022-11-18 13:05
+
+import datetime
+
+import django.contrib.postgres.fields
+from django.db import migrations, models
+import django.db.models.deletion
+
+import maasserver.fields
+import maasserver.models.cleansave
+import metadataserver.fields
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("maasserver", "0296_move_metadata_node_models"),
+ ("metadataserver", "0036_move_metadata_script_models"),
+ ]
+
+ operations = [
+ migrations.SeparateDatabaseAndState(
+ state_operations=[
+ migrations.CreateModel(
+ name="Script",
+ fields=[
+ (
+ "id",
+ models.AutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("created", models.DateTimeField(editable=False)),
+ ("updated", models.DateTimeField(editable=False)),
+ (
+ "name",
+ models.CharField(max_length=255, unique=True),
+ ),
+ (
+ "title",
+ models.CharField(blank=True, max_length=255),
+ ),
+ ("description", models.TextField(blank=True)),
+ (
+ "tags",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.TextField(),
+ blank=True,
+ default=list,
+ null=True,
+ size=None,
+ ),
+ ),
+ (
+ "script_type",
+ models.IntegerField(
+ choices=[
+ (0, "Commissioning script"),
+ (2, "Testing script"),
+ ],
+ default=2,
+ ),
+ ),
+ (
+ "hardware_type",
+ models.IntegerField(
+ choices=[
+ (0, "Node"),
+ (1, "CPU"),
+ (2, "Memory"),
+ (3, "Storage"),
+ (4, "Network"),
+ (5, "GPU"),
+ ],
+ default=0,
+ ),
+ ),
+ (
+ "parallel",
+ models.IntegerField(
+ choices=[
+ (0, "Disabled"),
+ (
+ 1,
+ "Run along other instances of this script",
+ ),
+ (2, "Run along any other script."),
+ ],
+ default=0,
+ ),
+ ),
+ (
+ "results",
+ models.JSONField(blank=True, default=dict),
+ ),
+ (
+ "parameters",
+ models.JSONField(blank=True, default=dict),
+ ),
+ (
+ "packages",
+ models.JSONField(blank=True, default=dict),
+ ),
+ (
+ "timeout",
+ models.DurationField(
+ default=datetime.timedelta(0)
+ ),
+ ),
+ ("destructive", models.BooleanField(default=False)),
+ ("default", models.BooleanField(default=False)),
+ (
+ "for_hardware",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.CharField(max_length=255),
+ blank=True,
+ default=list,
+ size=None,
+ ),
+ ),
+ ("may_reboot", models.BooleanField(default=False)),
+ ("recommission", models.BooleanField(default=False)),
+ (
+ "apply_configured_networking",
+ models.BooleanField(default=False),
+ ),
+ (
+ "script",
+ models.OneToOneField(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.versionedtextfile",
+ ),
+ ),
+ ],
+ options={
+ "abstract": False,
+ },
+ bases=(
+ maasserver.models.cleansave.CleanSave,
+ models.Model,
+ ),
+ ),
+ migrations.CreateModel(
+ name="ScriptSet",
+ fields=[
+ (
+ "id",
+ models.AutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ (
+ "last_ping",
+ models.DateTimeField(blank=True, null=True),
+ ),
+ (
+ "result_type",
+ models.IntegerField(
+ choices=[
+ (0, "Commissioning"),
+ (1, "Installation"),
+ (2, "Testing"),
+ ],
+ default=0,
+ editable=False,
+ ),
+ ),
+ (
+ "power_state_before_transition",
+ models.CharField(
+ choices=[
+ ("on", "On"),
+ ("off", "Off"),
+ ("unknown", "Unknown"),
+ ("error", "Error"),
+ ],
+ default="unknown",
+ editable=False,
+ max_length=10,
+ ),
+ ),
+ (
+ "tags",
+ django.contrib.postgres.fields.ArrayField(
+ base_field=models.TextField(),
+ blank=True,
+ default=list,
+ null=True,
+ size=None,
+ ),
+ ),
+ (
+ "node",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.node",
+ ),
+ ),
+ ],
+ bases=(
+ maasserver.models.cleansave.CleanSave,
+ models.Model,
+ ),
+ ),
+ migrations.CreateModel(
+ name="ScriptResult",
+ fields=[
+ (
+ "id",
+ models.AutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("created", models.DateTimeField(editable=False)),
+ ("updated", models.DateTimeField(editable=False)),
+ (
+ "parameters",
+ models.JSONField(blank=True, default=dict),
+ ),
+ (
+ "status",
+ models.IntegerField(
+ choices=[
+ (0, "Pending"),
+ (1, "Running"),
+ (2, "Passed"),
+ (3, "Failed"),
+ (4, "Timed out"),
+ (5, "Aborted"),
+ (6, "Degraded"),
+ (7, "Installing dependencies"),
+ (8, "Failed installing dependencies"),
+ (9, "Skipped"),
+ (
+ 10,
+ "Applying custom network configuration",
+ ),
+ (
+ 11,
+ "Failed to apply custom network configuration",
+ ),
+ ],
+ default=0,
+ ),
+ ),
+ (
+ "exit_status",
+ models.IntegerField(blank=True, null=True),
+ ),
+ (
+ "script_name",
+ models.CharField(
+ editable=False, max_length=255, null=True
+ ),
+ ),
+ (
+ "output",
+ metadataserver.fields.BinaryField(
+ blank=True, default=b"", max_length=1048576
+ ),
+ ),
+ (
+ "stdout",
+ metadataserver.fields.BinaryField(
+ blank=True, default=b"", max_length=1048576
+ ),
+ ),
+ (
+ "stderr",
+ metadataserver.fields.BinaryField(
+ blank=True, default=b"", max_length=1048576
+ ),
+ ),
+ (
+ "result",
+ metadataserver.fields.BinaryField(
+ blank=True, default=b"", max_length=1048576
+ ),
+ ),
+ (
+ "started",
+ models.DateTimeField(
+ blank=True, editable=False, null=True
+ ),
+ ),
+ (
+ "ended",
+ models.DateTimeField(
+ blank=True, editable=False, null=True
+ ),
+ ),
+ ("suppressed", models.BooleanField(default=False)),
+ (
+ "interface",
+ models.ForeignKey(
+ blank=True,
+ editable=False,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.interface",
+ ),
+ ),
+ (
+ "physical_blockdevice",
+ models.ForeignKey(
+ blank=True,
+ editable=False,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.physicalblockdevice",
+ ),
+ ),
+ (
+ "script",
+ models.ForeignKey(
+ blank=True,
+ editable=False,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.script",
+ ),
+ ),
+ (
+ "script_set",
+ models.ForeignKey(
+ editable=False,
+ on_delete=django.db.models.deletion.CASCADE,
+ to="maasserver.scriptset",
+ ),
+ ),
+ (
+ "script_version",
+ models.ForeignKey(
+ blank=True,
+ editable=False,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ to="maasserver.versionedtextfile",
+ ),
+ ),
+ ],
+ options={
+ "abstract": False,
+ },
+ bases=(
+ maasserver.models.cleansave.CleanSave,
+ models.Model,
+ ),
+ ),
+ migrations.AlterField(
+ model_name="node",
+ name="current_commissioning_script_set",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="+",
+ to="maasserver.scriptset",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="node",
+ name="current_installation_script_set",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="+",
+ to="maasserver.scriptset",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="node",
+ name="current_testing_script_set",
+ field=models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.SET_NULL,
+ related_name="+",
+ to="maasserver.scriptset",
+ ),
+ ),
+ ],
+ database_operations=[],
+ ),
+ ]
diff --git a/src/maasserver/models/__init__.py b/src/maasserver/models/__init__.py
index 1327639..786d4c7 100644
--- a/src/maasserver/models/__init__.py
+++ b/src/maasserver/models/__init__.py
@@ -76,6 +76,9 @@ __all__ = [
"RegionRackRPCConnection",
"ResourcePool",
"RootKey",
+ "Script",
+ "ScriptResult",
+ "ScriptSet",
"Service",
"signals",
"Space",
@@ -189,6 +192,9 @@ from maasserver.models.regioncontrollerprocessendpoint import (
from maasserver.models.regionrackrpcconnection import RegionRackRPCConnection
from maasserver.models.resourcepool import ResourcePool
from maasserver.models.rootkey import RootKey
+from maasserver.models.script import Script
+from maasserver.models.scriptresult import ScriptResult
+from maasserver.models.scriptset import ScriptSet
from maasserver.models.secret import Secret, VaultSecret
from maasserver.models.service import Service
from maasserver.models.space import Space
diff --git a/src/maasserver/models/bmc.py b/src/maasserver/models/bmc.py
index f1c8356..b317f34 100644
--- a/src/maasserver/models/bmc.py
+++ b/src/maasserver/models/bmc.py
@@ -1691,7 +1691,7 @@ class Pod(BMC):
if node.is_device:
update["node_type"] = NODE_TYPE.MACHINE
if not node.current_commissioning_script_set:
- from metadataserver.models import ScriptSet
+ from maasserver.models import ScriptSet
# ScriptResults will be created on upload.
update[
diff --git a/src/maasserver/models/node.py b/src/maasserver/models/node.py
index ea6b233..2e5c84a 100644
--- a/src/maasserver/models/node.py
+++ b/src/maasserver/models/node.py
@@ -764,8 +764,7 @@ class RegionControllerManager(ControllerManager):
# A region needs to have a commissioning_script_set available to
# allow commissioning data to be sent on start.
if node.current_commissioning_script_set is None:
- # Avoid circular dependencies
- from metadataserver.models import ScriptSet
+ from maasserver.models import ScriptSet
script_set = ScriptSet.objects.create_commissioning_script_set(
node
@@ -1221,7 +1220,7 @@ class Node(CleanSave, TimestampedModel):
# The ScriptSet for the currently running, or last run, commissioning
# ScriptSet.
current_commissioning_script_set = ForeignKey(
- "metadataserver.ScriptSet",
+ "maasserver.ScriptSet",
blank=True,
null=True,
on_delete=SET_NULL,
@@ -1230,7 +1229,7 @@ class Node(CleanSave, TimestampedModel):
# The ScriptSet for the currently running, or last run, installation.
current_installation_script_set = ForeignKey(
- "metadataserver.ScriptSet",
+ "maasserver.ScriptSet",
blank=True,
null=True,
on_delete=SET_NULL,
@@ -1239,7 +1238,7 @@ class Node(CleanSave, TimestampedModel):
# The ScriptSet for the currently running, or last run, test ScriptSet.
current_testing_script_set = ForeignKey(
- "metadataserver.ScriptSet",
+ "maasserver.ScriptSet",
blank=True,
null=True,
on_delete=SET_NULL,
@@ -1758,9 +1757,8 @@ class Node(CleanSave, TimestampedModel):
def _start_deployment(self):
"""Mark a node as being deployed."""
- # Avoid circular dependencies
from maasserver.models.event import Event
- from metadataserver.models import ScriptSet
+ from maasserver.models.scriptset import ScriptSet
if not self.on_network():
raise ValidationError(
@@ -2227,8 +2225,7 @@ class Node(CleanSave, TimestampedModel):
@classmethod
@transactional
def _abort_all_tests(self, script_set_id):
- # Avoid circular imports.
- from metadataserver.models import ScriptSet
+ from maasserver.models import ScriptSet
try:
script_set = ScriptSet.objects.get(id=script_set_id)
@@ -2259,9 +2256,8 @@ class Node(CleanSave, TimestampedModel):
registered as a post-commit hook; it should not be added a second
time.
"""
- # Avoid circular imports.
from maasserver.models.event import Event
- from metadataserver.models import ScriptSet
+ from maasserver.models.scriptset import ScriptSet
# Only commission if power type is configured.
if self.power_type == "":
@@ -2468,9 +2464,8 @@ class Node(CleanSave, TimestampedModel):
self, user, enable_ssh=False, testing_scripts=None, script_input=None
):
"""Run tests on a node."""
- # Avoid circular imports.
from maasserver.models.event import Event
- from metadataserver.models import ScriptSet
+ from maasserver.models.scriptset import ScriptSet
if not user.has_perm(NodePermission.edit, self):
# You can't enter test mode on a node you don't own,
@@ -3884,8 +3879,7 @@ class Node(CleanSave, TimestampedModel):
user, event_type, action="mark_failed", comment=comment
)
- # Avoid circular dependencies
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
qs = ScriptResult.objects.filter(
script_set__in=[
@@ -3974,7 +3968,7 @@ class Node(CleanSave, TimestampedModel):
self.save()
def get_latest_failed_testing_script_results(self) -> List[int]:
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
script_results = (
ScriptResult.objects.filter(
@@ -5792,8 +5786,7 @@ class Node(CleanSave, TimestampedModel):
elif self.status in COMMISSIONING_LIKE_STATUSES:
if old_status is None:
old_status = self.status
- # Avoid circular dependencies
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
# Claim AUTO IP addresses if a script will be running in the
# ephemeral environment which needs network configuration applied.
@@ -6311,8 +6304,7 @@ class Node(CleanSave, TimestampedModel):
@property
def get_latest_script_results(self):
"""Returns a QuerySet of the latest results from all runs."""
- # Avoid circular dependencies
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
qs = ScriptResult.objects.filter(script_set__node_id=self.id)
qs = qs.select_related("script_set", "script")
diff --git a/src/maasserver/models/nodeprobeddetails.py b/src/maasserver/models/nodeprobeddetails.py
index 461faf3..0495d74 100644
--- a/src/maasserver/models/nodeprobeddetails.py
+++ b/src/maasserver/models/nodeprobeddetails.py
@@ -74,8 +74,8 @@ def get_probed_details(nodes):
script_set.node_id, script_result.script_name,
script_result.stdout
FROM
- metadataserver_scriptresult AS script_result,
- metadataserver_scriptset AS script_set,
+ maasserver_scriptresult AS script_result,
+ maasserver_scriptset AS script_set,
maasserver_node AS node
WHERE
script_set.node_id IN %s AND
diff --git a/src/metadataserver/models/script.py b/src/maasserver/models/script.py
similarity index 100%
rename from src/metadataserver/models/script.py
rename to src/maasserver/models/script.py
diff --git a/src/metadataserver/models/scriptresult.py b/src/maasserver/models/scriptresult.py
similarity index 99%
rename from src/metadataserver/models/scriptresult.py
rename to src/maasserver/models/scriptresult.py
index 5b1ffa3..cdd89f3 100644
--- a/src/metadataserver/models/scriptresult.py
+++ b/src/maasserver/models/scriptresult.py
@@ -22,6 +22,8 @@ from maasserver.models.cleansave import CleanSave
from maasserver.models.event import Event
from maasserver.models.interface import Interface
from maasserver.models.physicalblockdevice import PhysicalBlockDevice
+from maasserver.models.script import Script
+from maasserver.models.scriptset import ScriptSet
from maasserver.models.timestampedmodel import now, TimestampedModel
from maasserver.models.versionedtextfile import VersionedTextFile
from metadataserver import logger
@@ -34,8 +36,6 @@ from metadataserver.enum import (
SCRIPT_TYPE,
)
from metadataserver.fields import Bin, BinaryField
-from metadataserver.models.script import Script
-from metadataserver.models.scriptset import ScriptSet
from provisioningserver.events import EVENT_TYPES
diff --git a/src/metadataserver/models/scriptset.py b/src/maasserver/models/scriptset.py
similarity index 90%
rename from src/metadataserver/models/scriptset.py
rename to src/maasserver/models/scriptset.py
index 590f1f8..3ac3940 100644
--- a/src/metadataserver/models/scriptset.py
+++ b/src/maasserver/models/scriptset.py
@@ -27,7 +27,7 @@ from django.db.models.query import QuerySet
from maasserver.enum import POWER_STATE, POWER_STATE_CHOICES
from maasserver.exceptions import NoScriptsFound
from maasserver.forms.parameters import ParametersForm
-from maasserver.models import Config, Event
+from maasserver.models import Config, Event, Script
from maasserver.models.cleansave import CleanSave
from maasserver.preseed import CURTIN_INSTALL_LOG
from metadataserver import logger
@@ -42,7 +42,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_RUNNING_OR_PENDING,
SCRIPT_TYPE,
)
-from metadataserver.models.script import Script
from provisioningserver.events import EVENT_TYPES
@@ -210,7 +209,7 @@ class ScriptSetManager(Manager):
def create_installation_script_set(self, node):
"""Create a new installation ScriptSet with a ScriptResult."""
# Avoid circular dependencies.
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
script_set = self.create(
node=node,
@@ -302,8 +301,7 @@ class ScriptSetManager(Manager):
raise
def _clean_old(self, node, result_type, new_script_set):
- # Avoid circular dependencies.
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
config_var = {
RESULT_TYPE.COMMISSIONING: "max_node_commissioning_results",
@@ -572,8 +570,7 @@ class ScriptSet(CleanSave, Model):
storage parameter. Used after commissioning has completed when there
are tests to be run.
"""
- # Avoid circular dependencies.
- from metadataserver.models import ScriptResult
+ from maasserver.models import ScriptResult
regenerate_scripts = {}
for script_result in (
diff --git a/src/maasserver/models/signals/scriptresult.py b/src/maasserver/models/signals/scriptresult.py
index 1e29d7e..24bee48 100644
--- a/src/maasserver/models/signals/scriptresult.py
+++ b/src/maasserver/models/signals/scriptresult.py
@@ -4,7 +4,7 @@
"""Emit ScriptResult status transition event."""
-from maasserver.models import Event
+from maasserver.models import Event, ScriptResult
from maasserver.preseed import CURTIN_INSTALL_LOG
from maasserver.utils.signals import SignalsManager
from metadataserver.enum import (
@@ -14,7 +14,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_FAILED,
SCRIPT_STATUS_RUNNING,
)
-from metadataserver.models.scriptresult import ScriptResult
from provisioningserver.events import EVENT_TYPES
signals = SignalsManager()
diff --git a/src/maasserver/models/tests/test_node.py b/src/maasserver/models/tests/test_node.py
index 04890bf..4eb10d4 100644
--- a/src/maasserver/models/tests/test_node.py
+++ b/src/maasserver/models/tests/test_node.py
@@ -101,6 +101,8 @@ from maasserver.models import (
RegionController,
RegionRackRPCConnection,
ResourcePool,
+ ScriptResult,
+ ScriptSet,
Service,
StaticIPAddress,
Subnet,
@@ -183,7 +185,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_RUNNING_OR_PENDING,
SCRIPT_TYPE,
)
-from metadataserver.models import ScriptResult, ScriptSet
from provisioningserver.drivers.pod import Capabilities, DiscoveredPodHints
from provisioningserver.drivers.power.ipmi import IPMI_BOOT_TYPE
from provisioningserver.drivers.power.registry import PowerDriverRegistry
diff --git a/src/metadataserver/models/tests/test_script.py b/src/maasserver/models/tests/test_script.py
similarity index 94%
rename from src/metadataserver/models/tests/test_script.py
rename to src/maasserver/models/tests/test_script.py
index a4fa24b..93c5218 100644
--- a/src/metadataserver/models/tests/test_script.py
+++ b/src/maasserver/models/tests/test_script.py
@@ -7,7 +7,12 @@ import random
from django.core.exceptions import ValidationError
-from maasserver.models import VersionedTextFile
+from maasserver.models import Script, VersionedTextFile
+from maasserver.models.script import (
+ translate_hardware_type,
+ translate_script_parallel,
+ translate_script_type,
+)
from maasserver.testing.factory import factory
from maasserver.testing.testcase import MAASServerTestCase
from maasserver.utils.orm import reload_object
@@ -17,12 +22,6 @@ from metadataserver.enum import (
SCRIPT_PARALLEL,
SCRIPT_TYPE,
)
-from metadataserver.models import Script
-from metadataserver.models.script import (
- translate_hardware_type,
- translate_script_parallel,
- translate_script_type,
-)
class TestTranslateScriptType(MAASServerTestCase):
diff --git a/src/metadataserver/models/tests/test_scriptresult.py b/src/maasserver/models/tests/test_scriptresult.py
similarity index 95%
rename from src/metadataserver/models/tests/test_scriptresult.py
rename to src/maasserver/models/tests/test_scriptresult.py
index 7675ace..d4d9ef1 100644
--- a/src/metadataserver/models/tests/test_scriptresult.py
+++ b/src/maasserver/models/tests/test_scriptresult.py
@@ -10,7 +10,8 @@ from django.core.exceptions import ValidationError
import yaml
from maasserver.enum import NODE_STATUS
-from maasserver.models import Event, EventType
+from maasserver.models import Event, EventType, ScriptResult
+from maasserver.models import scriptresult as scriptresult_module
from maasserver.testing.factory import factory
from maasserver.testing.testcase import MAASServerTestCase
from maasserver.utils.orm import reload_object
@@ -24,8 +25,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_RUNNING_OR_PENDING,
SCRIPT_TYPE,
)
-from metadataserver.models import ScriptResult
-from metadataserver.models import scriptresult as scriptresult_module
from provisioningserver.events import EVENT_TYPES
diff --git a/src/metadataserver/models/tests/test_scriptset.py b/src/maasserver/models/tests/test_scriptset.py
similarity index 96%
rename from src/metadataserver/models/tests/test_scriptset.py
rename to src/maasserver/models/tests/test_scriptset.py
index 9ca7554..08017d2 100644
--- a/src/metadataserver/models/tests/test_scriptset.py
+++ b/src/maasserver/models/tests/test_scriptset.py
@@ -12,7 +12,17 @@ from django.db.models import Q
from maasserver.enum import NODE_STATUS, NODE_TYPE
from maasserver.exceptions import NoScriptsFound
-from maasserver.models import Config, Event, EventType, Node
+from maasserver.models import (
+ Config,
+ Event,
+ EventType,
+ Node,
+ Script,
+ ScriptResult,
+ ScriptSet,
+)
+from maasserver.models import scriptset as scriptset_module
+from maasserver.models.scriptset import translate_result_type
from maasserver.preseed import CURTIN_INSTALL_LOG
from maasserver.testing.factory import factory
from maasserver.testing.testcase import MAASServerTestCase
@@ -25,9 +35,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_RUNNING_OR_PENDING,
SCRIPT_TYPE,
)
-from metadataserver.models import Script, ScriptResult, ScriptSet
-from metadataserver.models import scriptset as scriptset_module
-from metadataserver.models.scriptset import translate_result_type
from provisioningserver.events import EVENT_TYPES
from provisioningserver.refresh.node_info_scripts import NODE_INFO_SCRIPTS
diff --git a/src/maasserver/node_action.py b/src/maasserver/node_action.py
index e35a09b..e9f836d 100644
--- a/src/maasserver/node_action.py
+++ b/src/maasserver/node_action.py
@@ -41,6 +41,7 @@ from maasserver.exceptions import (
from maasserver.forms.clone import CloneForm
from maasserver.models import Config, ResourcePool, Zone
from maasserver.models.bootresource import LINUX_OSYSTEMS
+from maasserver.models.scriptresult import ScriptResult
from maasserver.node_status import is_failed_status, NON_MONITORED_STATUSES
from maasserver.permissions import NodePermission
from maasserver.preseed import get_base_osystem_series, get_curtin_config
@@ -50,7 +51,6 @@ from maasserver.utils.osystems import (
validate_osystem_and_distro_series,
)
from metadataserver.enum import SCRIPT_STATUS
-from metadataserver.models.scriptresult import ScriptResult
from provisioningserver.events import EVENT_TYPES
from provisioningserver.rpc.exceptions import (
NoConnectionsAvailable,
diff --git a/src/maasserver/rpc/rackcontrollers.py b/src/maasserver/rpc/rackcontrollers.py
index 24e4153..bfd12b0 100644
--- a/src/maasserver/rpc/rackcontrollers.py
+++ b/src/maasserver/rpc/rackcontrollers.py
@@ -23,12 +23,12 @@ from maasserver.models import (
NodeGroupToRackController,
RackController,
RegionController,
+ ScriptSet,
StaticIPAddress,
)
from maasserver.models.timestampedmodel import now
from maasserver.utils import synchronised
from maasserver.utils.orm import transactional, with_connection
-from metadataserver.models import ScriptSet
from provisioningserver.logger import get_maas_logger
from provisioningserver.rpc.exceptions import NoSuchNode, NoSuchScope
from provisioningserver.utils.deb import DebVersionsInfo
diff --git a/src/maasserver/status_monitor.py b/src/maasserver/status_monitor.py
index 5211991..9a3147d 100644
--- a/src/maasserver/status_monitor.py
+++ b/src/maasserver/status_monitor.py
@@ -10,6 +10,7 @@ from django.db.models import Prefetch
from twisted.application.internet import TimerService
from maasserver.enum import NODE_STATUS, NODE_STATUS_CHOICES_DICT
+from maasserver.models import Script, ScriptResult, ScriptSet
from maasserver.models.config import Config
from maasserver.models.node import Node
from maasserver.models.timestampedmodel import now
@@ -17,7 +18,6 @@ from maasserver.node_status import get_node_timeout, MONITORED_STATUSES
from maasserver.utils.orm import transactional
from maasserver.utils.threads import deferToDatabase
from metadataserver.enum import SCRIPT_STATUS
-from metadataserver.models import Script, ScriptResult, ScriptSet
from provisioningserver.logger import get_maas_logger
from provisioningserver.refresh.node_info_scripts import NODE_INFO_SCRIPTS
from provisioningserver.utils.twisted import synchronous
diff --git a/src/maasserver/testing/factory.py b/src/maasserver/testing/factory.py
index e78b84b..8446d70 100644
--- a/src/maasserver/testing/factory.py
+++ b/src/maasserver/testing/factory.py
@@ -90,6 +90,9 @@ from maasserver.models import (
RegionRackRPCConnection,
ResourcePool,
RootKey,
+ Script,
+ ScriptResult,
+ ScriptSet,
Service,
Space,
SSHKey,
@@ -139,7 +142,6 @@ from metadataserver.enum import (
SCRIPT_TYPE_CHOICES,
)
from metadataserver.fields import Bin
-from metadataserver.models import Script, ScriptResult, ScriptSet
from provisioningserver.boot import BootMethodRegistry
from provisioningserver.drivers.osystem import OperatingSystemRegistry
from provisioningserver.security import to_hex
diff --git a/src/maasserver/testing/sampledata/script.py b/src/maasserver/testing/sampledata/script.py
index 5b0908f..aa677f6 100644
--- a/src/maasserver/testing/sampledata/script.py
+++ b/src/maasserver/testing/sampledata/script.py
@@ -1,5 +1,5 @@
from maasserver.enum import NODE_STATUS
-from metadataserver.models import ScriptSet
+from maasserver.models import ScriptSet
from provisioningserver.refresh.node_info_scripts import (
COMMISSIONING_OUTPUT_NAME,
)
diff --git a/src/maasserver/tests/test_node_action.py b/src/maasserver/tests/test_node_action.py
index f0d7a1a..4593e3b 100644
--- a/src/maasserver/tests/test_node_action.py
+++ b/src/maasserver/tests/test_node_action.py
@@ -25,7 +25,13 @@ from maasserver.enum import (
POWER_STATE,
)
from maasserver.exceptions import NodeActionError
-from maasserver.models import Config, Event, signals, StaticIPAddress
+from maasserver.models import (
+ Config,
+ Event,
+ ScriptSet,
+ signals,
+ StaticIPAddress,
+)
from maasserver.models.signals.testing import SignalsDisabled
import maasserver.node_action as node_action_module
from maasserver.node_action import (
@@ -77,7 +83,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_FAILED,
SCRIPT_TYPE,
)
-from metadataserver.models import ScriptSet
from provisioningserver.events import AUDIT
from provisioningserver.utils.shell import ExternalProcessError
diff --git a/src/maasserver/tests/test_stats.py b/src/maasserver/tests/test_stats.py
index 7a33d87..204938f 100644
--- a/src/maasserver/tests/test_stats.py
+++ b/src/maasserver/tests/test_stats.py
@@ -27,6 +27,8 @@ from maasserver.models import (
Fabric,
Machine,
OwnerData,
+ ScriptResult,
+ ScriptSet,
Space,
Subnet,
VLAN,
@@ -61,8 +63,6 @@ from maastesting.testcase import MAASTestCase
from maastesting.twisted import extract_result
from metadataserver.builtin_scripts import load_builtin_scripts
from metadataserver.enum import RESULT_TYPE, SCRIPT_STATUS
-from metadataserver.models.scriptresult import ScriptResult
-from metadataserver.models.scriptset import ScriptSet
from provisioningserver.drivers.pod import DiscoveredPod
from provisioningserver.refresh.node_info_scripts import (
COMMISSIONING_OUTPUT_NAME,
diff --git a/src/maasserver/tests/test_storage_layouts.py b/src/maasserver/tests/test_storage_layouts.py
index a088b49..0fd7a94 100644
--- a/src/maasserver/tests/test_storage_layouts.py
+++ b/src/maasserver/tests/test_storage_layouts.py
@@ -21,6 +21,7 @@ from maasserver.models.partitiontable import (
PARTITION_TABLE_EXTRA_SPACE,
PREP_PARTITION_SIZE,
)
+from maasserver.models.scriptset import ScriptSet
from maasserver.storage_layouts import (
BcacheStorageLayout,
BlankStorageLayout,
@@ -49,7 +50,6 @@ from maasserver.utils.converters import round_size_to_nearest_block
from maastesting.matchers import MockCalledOnceWith
from metadataserver.builtin_scripts.tests import test_hooks
from metadataserver.enum import SCRIPT_TYPE
-from metadataserver.models import ScriptSet
from provisioningserver.refresh.node_info_scripts import (
COMMISSIONING_OUTPUT_NAME,
)
diff --git a/src/maasserver/triggers/testing.py b/src/maasserver/triggers/testing.py
index 3e6fa68..4a89313 100644
--- a/src/maasserver/triggers/testing.py
+++ b/src/maasserver/triggers/testing.py
@@ -11,6 +11,7 @@ from twisted.internet.defer import DeferredQueue, inlineCallbacks, returnValue
from maasserver.enum import INTERFACE_TYPE, NODE_TYPE
from maasserver.listener import PostgresListenerService
+from maasserver.models import Script, ScriptSet
from maasserver.models.blockdevice import BlockDevice
from maasserver.models.bmc import BMC, Pod
from maasserver.models.cacheset import CacheSet
@@ -56,7 +57,6 @@ from maasserver.triggers import register_trigger
from maasserver.utils.orm import reload_object, transactional
from maasserver.utils.threads import deferToDatabase
from maastesting.crochet import wait_for
-from metadataserver.models import Script, ScriptSet
wait_for_reactor = wait_for()
diff --git a/src/maasserver/triggers/tests/test_init.py b/src/maasserver/triggers/tests/test_init.py
index 73bfcde..9e614b5 100644
--- a/src/maasserver/triggers/tests/test_init.py
+++ b/src/maasserver/triggers/tests/test_init.py
@@ -190,17 +190,17 @@ class TestTriggersUsed(MAASServerTestCase):
"iprange_iprange_subnet_insert_notify",
"iprange_iprange_subnet_update_notify",
"iprange_iprange_update_notify",
- "metadataserver_script_script_create_notify",
- "metadataserver_script_script_delete_notify",
- "metadataserver_script_script_update_notify",
- "metadataserver_scriptresult_nd_scriptresult_link_notify",
- "metadataserver_scriptresult_nd_scriptresult_unlink_notify",
- "metadataserver_scriptresult_nd_scriptresult_update_notify",
- "metadataserver_scriptresult_scriptresult_create_notify",
- "metadataserver_scriptresult_scriptresult_delete_notify",
- "metadataserver_scriptresult_scriptresult_update_notify",
- "metadataserver_scriptset_nd_scriptset_link_notify",
- "metadataserver_scriptset_nd_scriptset_unlink_notify",
+ "script_script_create_notify",
+ "script_script_delete_notify",
+ "script_script_update_notify",
+ "scriptresult_nd_scriptresult_link_notify",
+ "scriptresult_nd_scriptresult_unlink_notify",
+ "scriptresult_nd_scriptresult_update_notify",
+ "scriptresult_scriptresult_create_notify",
+ "scriptresult_scriptresult_delete_notify",
+ "scriptresult_scriptresult_update_notify",
+ "scriptset_nd_scriptset_link_notify",
+ "scriptset_nd_scriptset_unlink_notify",
"neighbour_neighbour_create_notify",
"neighbour_neighbour_delete_notify",
"neighbour_neighbour_update_notify",
diff --git a/src/maasserver/triggers/tests/test_websocket_listener.py b/src/maasserver/triggers/tests/test_websocket_listener.py
index 90ea0a7..23a8a20 100644
--- a/src/maasserver/triggers/tests/test_websocket_listener.py
+++ b/src/maasserver/triggers/tests/test_websocket_listener.py
@@ -1461,7 +1461,7 @@ class TestScriptSetListener(
MAASTransactionServerTestCase, TransactionalHelpersMixin
):
"""End-to-end test of both the listeners code and the triggers on
- metadataserver_scriptset table that notifies its node."""
+ maasserver_scriptset table that notifies its node."""
scenarios = (
(
@@ -1538,7 +1538,7 @@ class TestDeviceWithParentScriptSetListener(
MAASTransactionServerTestCase, TransactionalHelpersMixin
):
"""End-to-end test of both the listeners code and the triggers on
- metadataserver_scriptset table that notifies its node."""
+ maasserver_scriptset table that notifies its node."""
@wait_for_reactor
@inlineCallbacks
@@ -1580,7 +1580,7 @@ class TestNDScriptResultListener(
MAASTransactionServerTestCase, TransactionalHelpersMixin
):
"""End-to-end test of both the listeners code and the triggers on
- metadataserver_scriptresult table that notifies its node."""
+ maasserver_scriptresult table that notifies its node."""
scenarios = (
(
@@ -1684,7 +1684,7 @@ class TestScriptResultListener(
MAASTransactionServerTestCase, TransactionalHelpersMixin
):
"""End-to-end test of both the listers code and the triggers on
- the metadataserver_Scriptresult table that notifies the node-results
+ the maasserver_scriptresult table that notifies the node-results
websocket."""
@wait_for_reactor
diff --git a/src/maasserver/triggers/websocket.py b/src/maasserver/triggers/websocket.py
index 08acb6a..43c6dc2 100644
--- a/src/maasserver/triggers/websocket.py
+++ b/src/maasserver/triggers/websocket.py
@@ -1572,7 +1572,7 @@ def render_script_result_notify(proc_name, script_set_id):
system_id, node_type INTO node
FROM
maasserver_node AS nodet,
- metadataserver_scriptset AS scriptset
+ maasserver_scriptset AS scriptset
WHERE
scriptset.id = {script_set_id} AND
scriptset.node_id = nodet.id;
@@ -2384,10 +2384,10 @@ def register_websocket_triggers():
)
)
register_trigger(
- "metadataserver_scriptset", "nd_scriptset_link_notify", "insert"
+ "maasserver_scriptset", "nd_scriptset_link_notify", "insert"
)
register_trigger(
- "metadataserver_scriptset", "nd_scriptset_unlink_notify", "delete"
+ "maasserver_scriptset", "nd_scriptset_unlink_notify", "delete"
)
# ScriptResult triggers to the node for the nodes-listing page.
@@ -2407,15 +2407,15 @@ def register_websocket_triggers():
)
)
register_trigger(
- "metadataserver_scriptresult", "nd_scriptresult_link_notify", "insert"
+ "maasserver_scriptresult", "nd_scriptresult_link_notify", "insert"
)
register_trigger(
- "metadataserver_scriptresult",
+ "maasserver_scriptresult",
"nd_scriptresult_update_notify",
"update",
)
register_trigger(
- "metadataserver_scriptresult",
+ "maasserver_scriptresult",
"nd_scriptresult_unlink_notify",
"delete",
)
@@ -2436,7 +2436,7 @@ def register_websocket_triggers():
"scriptresult_delete_notify", "scriptresult_delete", "OLD.id"
)
)
- register_triggers("metadataserver_scriptresult", "scriptresult")
+ register_triggers("maasserver_scriptresult", "scriptresult")
# Interface address table, update to linked node.
register_procedure(
@@ -2886,7 +2886,7 @@ def register_websocket_triggers():
"script_delete_notify", "script_delete", "OLD.id"
)
)
- register_triggers("metadataserver_script", "script")
+ register_triggers("maasserver_script", "script")
# NodeDevice table
register_procedure(
diff --git a/src/maasserver/websockets/handlers/node.py b/src/maasserver/websockets/handlers/node.py
index 5fa038d..486c497 100644
--- a/src/maasserver/websockets/handlers/node.py
+++ b/src/maasserver/websockets/handlers/node.py
@@ -52,6 +52,7 @@ from maasserver.models import (
Partition,
PhysicalBlockDevice,
ResourcePool,
+ ScriptResult,
Space,
StaticIPAddress,
Subnet,
@@ -63,6 +64,7 @@ from maasserver.models import (
Zone,
)
from maasserver.models.nodeprobeddetails import script_output_nsmap
+from maasserver.models.scriptset import get_status_from_qs
from maasserver.node_action import compile_node_actions
from maasserver.node_constraint_filter_forms import (
FreeTextFilterNodeForm,
@@ -92,8 +94,6 @@ from metadataserver.enum import (
SCRIPT_STATUS,
SCRIPT_STATUS_FAILED,
)
-from metadataserver.models.scriptresult import ScriptResult
-from metadataserver.models.scriptset import get_status_from_qs
from provisioningserver.refresh.node_info_scripts import (
LIST_MODALIASES_OUTPUT_NAME,
)
diff --git a/src/maasserver/websockets/handlers/node_result.py b/src/maasserver/websockets/handlers/node_result.py
index 86b2dcc..2d76811 100644
--- a/src/maasserver/websockets/handlers/node_result.py
+++ b/src/maasserver/websockets/handlers/node_result.py
@@ -8,7 +8,7 @@ from operator import attrgetter
from django.core.exceptions import ValidationError
-from maasserver.models.node import Node
+from maasserver.models import Node, ScriptResult
from maasserver.websockets.base import (
dehydrate_datetime,
HandlerDoesNotExistError,
@@ -18,7 +18,6 @@ from maasserver.websockets.handlers.timestampedmodel import (
TimestampedModelHandler,
)
from metadataserver.enum import HARDWARE_TYPE
-from metadataserver.models import ScriptResult
class NodeResultHandler(TimestampedModelHandler):
diff --git a/src/maasserver/websockets/handlers/script.py b/src/maasserver/websockets/handlers/script.py
index c46a4f9..219c4b1 100644
--- a/src/maasserver/websockets/handlers/script.py
+++ b/src/maasserver/websockets/handlers/script.py
@@ -4,6 +4,7 @@
"""The Script handler for the WebSocket connection."""
+from maasserver.models import Script
from maasserver.permissions import NodePermission
from maasserver.websockets.base import (
HandlerDoesNotExistError,
@@ -12,7 +13,6 @@ from maasserver.websockets.base import (
from maasserver.websockets.handlers.timestampedmodel import (
TimestampedModelHandler,
)
-from metadataserver.models import Script
class ScriptHandler(TimestampedModelHandler):
diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
index 5ea2e31..b5ab34c 100644
--- a/src/maasserver/websockets/handlers/tests/test_machine.py
+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
@@ -76,6 +76,7 @@ from maasserver.models.partition import (
MIN_PARTITION_SIZE,
PARTITION_ALIGNMENT_SIZE,
)
+from maasserver.models.scriptset import get_status_from_qs
import maasserver.node_action as node_action_module
from maasserver.node_action import compile_node_actions
from maasserver.permissions import NodePermission
@@ -133,7 +134,6 @@ from metadataserver.enum import (
SCRIPT_STATUS_FAILED,
SCRIPT_TYPE,
)
-from metadataserver.models.scriptset import get_status_from_qs
from provisioningserver.refresh.node_info_scripts import (
LIST_MODALIASES_OUTPUT_NAME,
LLDP_OUTPUT_NAME,
diff --git a/src/metadataserver/api.py b/src/metadataserver/api.py
index faf237c..2ba1601 100644
--- a/src/metadataserver/api.py
+++ b/src/metadataserver/api.py
@@ -62,6 +62,9 @@ from maasserver.models import (
NodeKey,
NodeMetadata,
NodeUserData,
+ Script,
+ ScriptResult,
+ ScriptSet,
SSHKey,
SSLKey,
)
@@ -90,7 +93,6 @@ from metadataserver.enum import (
SIGNAL_STATUS,
SIGNAL_STATUS_CHOICES,
)
-from metadataserver.models import Script, ScriptResult, ScriptSet
from metadataserver.user_data import (
generate_user_data_for_poweroff,
generate_user_data_for_status,
diff --git a/src/metadataserver/builtin_scripts/__init__.py b/src/metadataserver/builtin_scripts/__init__.py
index 32e302a..57ab6d1 100644
--- a/src/metadataserver/builtin_scripts/__init__.py
+++ b/src/metadataserver/builtin_scripts/__init__.py
@@ -14,7 +14,7 @@ from zope.interface.verify import verifyObject
from maasserver.forms.script import ScriptForm
from maasserver.models.controllerinfo import get_maas_version
-from metadataserver.models import Script
+from maasserver.models.script import Script
from provisioningserver.refresh.node_info_scripts import (
BMC_DETECTION,
COMMISSIONING_OUTPUT_NAME,
diff --git a/src/metadataserver/builtin_scripts/tests/test_builtin_scripts.py b/src/metadataserver/builtin_scripts/tests/test_builtin_scripts.py
index f32b21f..9490c3d 100644
--- a/src/metadataserver/builtin_scripts/tests/test_builtin_scripts.py
+++ b/src/metadataserver/builtin_scripts/tests/test_builtin_scripts.py
@@ -8,7 +8,7 @@ import random
from testtools.matchers import ContainsAll
-from maasserver.models import ControllerInfo, VersionedTextFile
+from maasserver.models import ControllerInfo, Script, VersionedTextFile
from maasserver.testing.factory import factory
from maasserver.testing.testcase import MAASServerTestCase
from maasserver.utils.orm import reload_object
@@ -17,7 +17,6 @@ from metadataserver.builtin_scripts import (
load_builtin_scripts,
)
from metadataserver.enum import SCRIPT_TYPE_CHOICES
-from metadataserver.models import Script
from provisioningserver.refresh.node_info_scripts import NODE_INFO_SCRIPTS
diff --git a/src/metadataserver/builtin_scripts/tests/test_hooks.py b/src/metadataserver/builtin_scripts/tests/test_hooks.py
index 0b77357..d790987 100644
--- a/src/metadataserver/builtin_scripts/tests/test_hooks.py
+++ b/src/metadataserver/builtin_scripts/tests/test_hooks.py
@@ -25,6 +25,7 @@ from maasserver.models import (
NodeMetadata,
NUMANode,
PhysicalInterface,
+ ScriptSet,
Tag,
VLAN,
)
@@ -69,7 +70,6 @@ from metadataserver.enum import (
HARDWARE_TYPE,
SCRIPT_TYPE,
)
-from metadataserver.models import ScriptSet
from provisioningserver.events import EVENT_DETAILS, EVENT_TYPES
from provisioningserver.refresh.node_info_scripts import (
KERNEL_CMDLINE_OUTPUT_NAME,
diff --git a/src/metadataserver/migrations/0036_move_metadata_script_models.py b/src/metadataserver/migrations/0036_move_metadata_script_models.py
new file mode 100644
index 0000000..0cb1abb
--- /dev/null
+++ b/src/metadataserver/migrations/0036_move_metadata_script_models.py
@@ -0,0 +1,60 @@
+# Generated by Django 3.2.12 on 2022-11-18 13:05
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("metadataserver", "0035_move_metadata_node_models"),
+ ]
+
+ operations = [
+ migrations.SeparateDatabaseAndState(
+ state_operations=[
+ migrations.RemoveField(
+ model_name="scriptresult",
+ name="interface",
+ ),
+ migrations.RemoveField(
+ model_name="scriptresult",
+ name="physical_blockdevice",
+ ),
+ migrations.RemoveField(
+ model_name="scriptresult",
+ name="script",
+ ),
+ migrations.RemoveField(
+ model_name="scriptresult",
+ name="script_set",
+ ),
+ migrations.RemoveField(
+ model_name="scriptresult",
+ name="script_version",
+ ),
+ migrations.RemoveField(
+ model_name="scriptset",
+ name="node",
+ ),
+ migrations.DeleteModel(
+ name="Script",
+ ),
+ migrations.DeleteModel(
+ name="ScriptResult",
+ ),
+ migrations.DeleteModel(
+ name="ScriptSet",
+ ),
+ ],
+ database_operations=[
+ migrations.AlterModelTable(
+ name="Script", table="maasserver_script"
+ ),
+ migrations.AlterModelTable(
+ name="ScriptResult", table="maasserver_scriptresult"
+ ),
+ migrations.AlterModelTable(
+ name="ScriptSet", table="maasserver_scriptset"
+ ),
+ ],
+ ),
+ ]
diff --git a/src/metadataserver/models/__init__.py b/src/metadataserver/models/__init__.py
index 7e863ff..0a22a92 100644
--- a/src/metadataserver/models/__init__.py
+++ b/src/metadataserver/models/__init__.py
@@ -4,8 +4,4 @@
"""Model export and helpers for metadataserver.
"""
-__all__ = ["Script", "ScriptResult", "ScriptSet"]
-
-from metadataserver.models.script import Script
-from metadataserver.models.scriptresult import ScriptResult
-from metadataserver.models.scriptset import ScriptSet
+__all__ = []
diff --git a/src/metadataserver/tests/test_api.py b/src/metadataserver/tests/test_api.py
index dcff7ac..fea95f5 100644
--- a/src/metadataserver/tests/test_api.py
+++ b/src/metadataserver/tests/test_api.py
@@ -44,6 +44,8 @@ from maasserver.models import (
NodeKey,
NodeMetadata,
NodeUserData,
+ Script,
+ ScriptSet,
SSHKey,
VersionedTextFile,
)
@@ -92,7 +94,6 @@ from metadataserver.enum import (
SIGNAL_STATUS,
SIGNAL_STATUS_CHOICES,
)
-from metadataserver.models import Script, ScriptSet
from metadataserver.nodeinituser import get_node_init_user
from provisioningserver.events import (
EVENT_DETAILS,
Follow ups