From 089d7621221294e7d43605ff418cc95297844384 Mon Sep 17 00:00:00 2001 From: Harry Huang Date: Fri, 10 Aug 2018 15:35:27 +0800 Subject: Support multiple mac addresses in db JIRA: COMPASS-613 Change-Id: I1828c512d04060271cd0dc4884d892aa8f5adf97 Signed-off-by: Harry Huang --- compass-deck/db/api/machine.py | 2 +- compass-deck/db/models.py | 7 ++++--- compass-tasks-base/db/api/machine.py | 2 +- compass-tasks-base/db/models.py | 7 ++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/compass-deck/db/api/machine.py b/compass-deck/db/api/machine.py index b7b16b2..7991ada 100644 --- a/compass-deck/db/api/machine.py +++ b/compass-deck/db/api/machine.py @@ -29,7 +29,7 @@ from compass.utils import util MACHINE_PRIMARY_FILEDS = ['mac', 'owner_id'] SUPPORTED_FIELDS = [ - 'mac', 'tag', 'location', + 'mac', 'tag', 'location', 'ipmi_credentials', 'machine_attributes', 'owner_id'] IGNORE_FIELDS = ['id', 'created_at', 'updated_at'] UPDATED_FIELDS = [ diff --git a/compass-deck/db/models.py b/compass-deck/db/models.py index d4b0324..5f8fb52 100644 --- a/compass-deck/db/models.py +++ b/compass-deck/db/models.py @@ -1532,11 +1532,11 @@ class Machine(BASE, HelperMixin, TimestampMixin): """Machine table.""" __tablename__ = 'machine' id = Column(Integer, primary_key=True) - mac = Column(String(24), unique=True, nullable=False) + mac = Column(JSONEncoded, nullable=False) ipmi_credentials = Column(JSONEncoded, default={}) tag = Column(JSONEncoded, default={}) location = Column(JSONEncoded, default={}) - owner_id = Column(Integer, ForeignKey('user.id')) + owner_id = Column(Integer, nullable=True) machine_attributes = Column(JSONEncoded, default={}) switch_machines = relationship( @@ -1564,7 +1564,8 @@ class Machine(BASE, HelperMixin, TimestampMixin): # TODO(xicheng): some validation can be moved to column. super(Machine, self).validate() try: - netaddr.EUI(self.mac) + for key, value in self.mac.items(): + netaddr.EUI(value) except Exception: raise exception.InvalidParameter( 'mac address %s format uncorrect' % self.mac diff --git a/compass-tasks-base/db/api/machine.py b/compass-tasks-base/db/api/machine.py index b7b16b2..7991ada 100644 --- a/compass-tasks-base/db/api/machine.py +++ b/compass-tasks-base/db/api/machine.py @@ -29,7 +29,7 @@ from compass.utils import util MACHINE_PRIMARY_FILEDS = ['mac', 'owner_id'] SUPPORTED_FIELDS = [ - 'mac', 'tag', 'location', + 'mac', 'tag', 'location', 'ipmi_credentials', 'machine_attributes', 'owner_id'] IGNORE_FIELDS = ['id', 'created_at', 'updated_at'] UPDATED_FIELDS = [ diff --git a/compass-tasks-base/db/models.py b/compass-tasks-base/db/models.py index d4b0324..5f8fb52 100644 --- a/compass-tasks-base/db/models.py +++ b/compass-tasks-base/db/models.py @@ -1532,11 +1532,11 @@ class Machine(BASE, HelperMixin, TimestampMixin): """Machine table.""" __tablename__ = 'machine' id = Column(Integer, primary_key=True) - mac = Column(String(24), unique=True, nullable=False) + mac = Column(JSONEncoded, nullable=False) ipmi_credentials = Column(JSONEncoded, default={}) tag = Column(JSONEncoded, default={}) location = Column(JSONEncoded, default={}) - owner_id = Column(Integer, ForeignKey('user.id')) + owner_id = Column(Integer, nullable=True) machine_attributes = Column(JSONEncoded, default={}) switch_machines = relationship( @@ -1564,7 +1564,8 @@ class Machine(BASE, HelperMixin, TimestampMixin): # TODO(xicheng): some validation can be moved to column. super(Machine, self).validate() try: - netaddr.EUI(self.mac) + for key, value in self.mac.items(): + netaddr.EUI(value) except Exception: raise exception.InvalidParameter( 'mac address %s format uncorrect' % self.mac -- cgit 1.2.3-korg