50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
# coding: utf-8
|
|
|
|
from SWSCloudCore import models
|
|
|
|
|
|
class ControllerDataCenters:
|
|
def get(self):
|
|
"""
|
|
Get active data centers list
|
|
|
|
select * from datacenters where status=1 AND id in (
|
|
select datacenter_id from servers where id in (
|
|
select server_id from ips where status=0 group by server_id
|
|
)
|
|
);
|
|
:return:
|
|
"""
|
|
|
|
# server id's with ip with status = 0
|
|
dclist = models.DataCenters.select().where(
|
|
models.DataCenters.status == 1 and
|
|
models.DataCenters.id << models.Servers.select(models.Servers.datacenter).where(
|
|
models.Servers.status == 1 and
|
|
models.Servers.id << models.Ips.select(models.Ips.server).where(
|
|
models.Ips.status == 0
|
|
).group_by(models.Ips.server)
|
|
).group_by(models.Servers.datacenter)
|
|
)
|
|
|
|
items = dict()
|
|
items['total'] = dclist.count()
|
|
items['items'] = []
|
|
|
|
for item in dclist.execute():
|
|
items['items'].append({
|
|
'id': item.id,
|
|
'name': item.name,
|
|
'country': item.country,
|
|
'city': item.city,
|
|
})
|
|
return items
|
|
|
|
@staticmethod
|
|
def exists(datacenter_id, status=1):
|
|
if models.DataCenters.select().where(
|
|
models.DataCenters.id == datacenter_id,
|
|
models.DataCenters.status == status
|
|
).count() == 0:
|
|
return False
|
|
return True
|