87 lines
2.5 KiB
Python
87 lines
2.5 KiB
Python
# coding: utf-8
|
||
|
||
import socket
|
||
|
||
from SWSCloudCore import models
|
||
|
||
|
||
class ControllerManageIPs:
|
||
def item_create(self, datacenter_id, server_id, ipv4, ipv4_gateway, ipv6, ipv6_gateway, status):
|
||
"""
|
||
Запись данных об IP
|
||
:param datacenter_id:
|
||
:param server_id:
|
||
:param ipv4:
|
||
:param ipv4_gateway:
|
||
:param ipv6:
|
||
:param ipv6_gateway:
|
||
:param status:
|
||
:return:
|
||
"""
|
||
models.Ips.create(
|
||
server=server_id,
|
||
datacenter=datacenter_id,
|
||
ipv4=ipv4,
|
||
ipv4_gateway=ipv4_gateway,
|
||
ipv6=ipv6,
|
||
ipv6_gateway=ipv6_gateway,
|
||
status=status
|
||
)
|
||
|
||
def item_update(self, ip_id, server_id, ipv4, ipv4_gateway, ipv6, ipv6_gateway, status):
|
||
# def update(self, user_id, **kwargs):
|
||
x = models.Ips.update(
|
||
server=server_id,
|
||
ipv4=ipv4,
|
||
ipv4_gateway=ipv4_gateway,
|
||
ipv6=ipv6,
|
||
ipv6_gateway=ipv6_gateway,
|
||
status=status
|
||
).where(
|
||
models.Ips.id == ip_id
|
||
)
|
||
x.execute()
|
||
return True
|
||
|
||
|
||
def items_get(self):
|
||
return {
|
||
'total': models.Ips.select().count(),
|
||
'items': models.Ips.select()
|
||
}
|
||
|
||
def item_get(self, ip_id):
|
||
return models.Ips.select().where(models.Ips.id == ip_id)[0]
|
||
|
||
def check_ipv4_exists(self, ipv4):
|
||
if models.Ips.select().where(models.Ips.ipv4 == ipv4).count() == 0:
|
||
return False
|
||
return True
|
||
|
||
def check_ipv6_exists(self, ipv6):
|
||
if models.Ips.select().where(models.Ips.ipv4 == ipv6).count() > 0:
|
||
return False
|
||
return True
|
||
|
||
def is_valid_ipv4_address(self, address):
|
||
# from: http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python
|
||
try:
|
||
socket.inet_pton(socket.AF_INET, address)
|
||
except AttributeError: # no inet_pton here, sorry
|
||
try:
|
||
socket.inet_aton(address)
|
||
except socket.error:
|
||
return False
|
||
return address.count('.') == 3
|
||
except socket.error: # not a valid address
|
||
return False
|
||
|
||
return True
|
||
|
||
def is_valid_ipv6_address(self, address):
|
||
# from: http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python
|
||
try:
|
||
socket.inet_pton(socket.AF_INET6, address)
|
||
except socket.error: # not a valid address
|
||
return False
|
||
return True
|