Change Customer to Account and add get_system_by_account

This commit is contained in:
Endre Karlson 2012-11-04 19:40:15 +01:00
parent a4a44578d2
commit ec43422775
2 changed files with 65 additions and 27 deletions

View File

@ -73,31 +73,69 @@ class Connection(base.Connection):
else: else:
return obj return obj
def _add(self, context, model, values):
obj = model()
obj.update(values)
obj.save(self.session)
return obj
def _update(self, context, model, id, values):
obj = self._get_id(context, model, id)
obj.update(values)
try:
obj.save(self.session)
except exceptions.Duplicate:
raise
return dict(obj)
def _add_or_update(self, context, model, values, id=None):
if id is None:
return self._add(context, model, values)
else:
return self._update(context, model, values, id)
# NOTE: Rates
def add_rate(self, context, values, session=None): def add_rate(self, context, values, session=None):
rate = models.Rate() return self._add(context, models.Rate, values)
rate.update(values)
rate.save(self.session)
return rate
def get_rates(self, context, session=None): def get_rates(self, context, session=None):
query = self.session.query(models.Rate) query = self.session.query(models.Rate)
return [row2dict(row) for row in query.all()] return [row2dict(row) for row in query.all()]
def update_rate(self, context, rate_id, values): def update_rate(self, context, rate_id, values):
rate = self._get_id(context, models.Rate, rate_id) return self._update(context, models.Rate, rate_id, values)
rate.update(values)
try:
rate.save(self.session)
except exceptions.Duplicate:
raise
return dict(rate)
def delete_rate(self, context, rate_id): def delete_rate(self, context, rate_id):
rate = self._get_id(context, models.Rate, rate_id) obj = self._get_id(context, models.Rate, rate_id)
rate.delete(self.session) obj.delete(self.session)
def process_record(self, context, values): # NOTE: Systems
print pformat(values) def add_system(self, context, values, session=None):
return self._add(context, models.SystemAccount, values)
def get_systems(self, context, session=None):
query = self.session.query(models.SystemAccount)
return [row2dict(row) for row in query.all()]
def update_system(self, context, system_id, values):
return self._update(context, models.SystemAccount, system_id, values)
def delete_system(self, context, system_id):
obj = self._get_id(context, models.SystemAccount, system_id)
obj.delete(self.session)
# NOTE: Accounts
def get_system_by_account(self, context, system_id, session=None):
q = self.session.query(models.SystemAccount)
q.filter_by(system_id=system_id)
obj = q.first()
if not obj:
raise exceptions.NotFound(system_id)
return obj
# NOTE: Records
def add_record(self, context, values):
self._add(context, models.Record, values)
def row2dict(row): def row2dict(row):

View File

@ -116,29 +116,29 @@ class Base(object):
Base = declarative_base(cls=Base) Base = declarative_base(cls=Base)
class Customer(Base): class Account(Base):
""" """
A way to correlate multiple tenants or future Domains in OpenStack into A way to correlate multiple tenants or future Domains in OpenStack into
a single aggregation point a single aggregation point
""" """
__tablename__ = 'customers' __tablename__ = 'accounts'
name = Column(Unicode(100), nullable=False) name = Column(Unicode(100), nullable=False)
class CustomerSystem(Base): class SystemAccount(Base):
""" """
A way of tying a "System's Customer" to a Billistix Customer Bind a System's Account representation to a Account
Examples: Examples:
OpenStack Domain or Tenant to a Customer OpenStack Domain or Tenant to a Account
Credit card system ID Credit card Account representation to a Account
""" """
__tablename__ = "customer_systems" __tablename__ = "system_accounts"
system_id = Column(Unicode(100), index=True) system_id = Column(Unicode(100), index=True)
system_name = Column(Unicode(100)) system_name = Column(Unicode(100))
customer = relationship("Customer", backref="systems") account = relationship("Account", backref="systems")
customer_id = Column(UUID, ForeignKey('customers.id')) account_id = Column(UUID, ForeignKey('accounts.id'))
class Record(Base): class Record(Base):
@ -151,9 +151,9 @@ class Record(Base):
start_timestamp = Column(DateTime) start_timestamp = Column(DateTime)
end_timestamp = Column(DateTime) end_timestamp = Column(DateTime)
customer_system = relationship("CustomerSystem", backref="records") system_account = relationship("SystemAccount", backref="records")
customer_system_id = Column(Unicode(100), system_account_id = Column(Unicode(100),
ForeignKey('customer_systems.system_id'), ForeignKey('system_accounts.account_id'),
nullable=False) nullable=False)