From 6a23b3b2757b771d4ba177445f1d52b4c78c41a8 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Fri, 27 Apr 2018 21:31:48 +0200
Subject: [PATCH] Redefine default device types

- rename physical to physical machine
- IOC should be a tag

JIRA INFRA-302
---
 app/defaults.py                               | 11 ++++----
 app/inventory/views.py                        |  2 +-
 ...a606be23b95_rename_physical_device_type.py | 26 +++++++++++++++++++
 tests/functional/test_api.py                  |  2 +-
 4 files changed, 33 insertions(+), 8 deletions(-)
 create mode 100644 migrations/versions/ea606be23b95_rename_physical_device_type.py

diff --git a/app/defaults.py b/app/defaults.py
index 2f7f20c..afc5efa 100644
--- a/app/defaults.py
+++ b/app/defaults.py
@@ -21,14 +21,13 @@ defaults = [
     models.Action(name='Set as parent'),
     models.Action(name='Update'),
 
-    models.DeviceType(name='Physical'),
+    models.DeviceType(name='Physical Machine'),
     models.DeviceType(name='Virtual Machine'),
-    models.DeviceType(name='Switch'),
-    models.DeviceType(name='Virtual IOC'),
-    models.DeviceType(name='Industrial PC IOC'),
-    models.DeviceType(name='MicroTCA IOC'),
-    models.DeviceType(name='VME IOC'),
+    models.DeviceType(name='Network'),
+    models.DeviceType(name='MicroTCA'),
+    models.DeviceType(name='VME'),
     models.DeviceType(name='PLC'),
 
     models.Tag(name='gateway', admin_only=True),
+    models.Tag(name='IOC', admin_only=False),
 ]
diff --git a/app/inventory/views.py b/app/inventory/views.py
index 7095eaf..898ad9d 100644
--- a/app/inventory/views.py
+++ b/app/inventory/views.py
@@ -331,7 +331,7 @@ def retrieve_free_stack_members(host_id):
         # In case of unknown host_id or if host_id is None
         current_app.logger.debug(f'Invalid host_id: {host_id}')
         return jsonify(data=disabled_data)
-    if str(host.device_type) != 'Switch':
+    if str(host.device_type) != 'Network':
         return jsonify(data=disabled_data)
     members = host.free_stack_members()
     selected_member = 'None'
diff --git a/migrations/versions/ea606be23b95_rename_physical_device_type.py b/migrations/versions/ea606be23b95_rename_physical_device_type.py
new file mode 100644
index 0000000..e5e0866
--- /dev/null
+++ b/migrations/versions/ea606be23b95_rename_physical_device_type.py
@@ -0,0 +1,26 @@
+"""Rename physical device type
+
+Revision ID: ea606be23b95
+Revises: 8f135d5efde2
+Create Date: 2018-04-27 19:30:16.398508
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'ea606be23b95'
+down_revision = '8f135d5efde2'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    device_type = sa.sql.table('device_type', sa.sql.column('id'), sa.sql.column('name'))
+    op.execute(device_type.update().where(device_type.c.name == 'Physical').values(name='Physical Machine'))
+
+
+def downgrade():
+    device_type = sa.sql.table('device_type', sa.sql.column('id'), sa.sql.column('name'))
+    op.execute(device_type.update().where(device_type.c.name == 'Physical Machine').values(name='Physical'))
diff --git a/tests/functional/test_api.py b/tests/functional/test_api.py
index 2a71aa0..3fe122d 100644
--- a/tests/functional/test_api.py
+++ b/tests/functional/test_api.py
@@ -797,7 +797,7 @@ def test_create_host(client, device_type_factory, user_token):
 
 
 def test_create_host_with_items(client, item_factory, device_type_factory, user_token):
-    device_type = device_type_factory(name='Switch')
+    device_type = device_type_factory(name='Network')
     item1 = item_factory(ics_id='AAA001')
     item2 = item_factory(ics_id='AAA002')
     # Check that we can pass a list of items ics_id
-- 
GitLab