class NodePublicIface(Base): master = fields.String(default="") type = fields.Enum(NicType) ipv4 = fields.IPRange() ipv6 = fields.IPRange() gw4 = fields.IPRange() gw6 = fields.IPRange() version = fields.Integer()
class NetworkResource(Base): id = fields.Integer() name = fields.String(default="") network_iprange = fields.IPRange(default="10.10.0.0/16") wireguard_private_key_encrypted = fields.String(default="") wireguard_public_key = fields.String(default="") wireguard_listen_port = fields.Integer() iprange = fields.IPRange(default="10.10.10.0/24") peers = fields.List(fields.Object(WireguardPeer)) info = fields.Object(ReservationInfo)
class KubernetesNode(VDCHostBase): role = fields.Enum(KubernetesRole) public_ip = fields.IPRange() _size = fields.Integer() @property def size(self): return VDC_SIZE.K8SNodeFlavor(self._size) @classmethod def from_workload(cls, workload): node = cls() node.wid = workload.id node.ip_address = workload.ipaddress if workload.master_ips: node.role = KubernetesRole.WORKER else: node.role = KubernetesRole.MASTER node.node_id = workload.info.node_id node.pool_id = workload.info.pool_id if workload.public_ip: zos = get_zos() public_ip_workload = zos.workloads.get(workload.public_ip) address = str(netaddr.IPNetwork(public_ip_workload.ipaddress).ip) node.public_ip = address node._size = ( VDC_SIZE.K8SNodeFlavor(workload.size).value if workload.size in [size.value for size in K8S_SIZES] else VDC_SIZE.K8SNodeFlavor.SMALL.value ) return node
class Network(Base): name = fields.String(default="") workload_id = fields.Integer() iprange = fields.IPRange(default="10.10.0.0/16") stats_aggregator = fields.List(fields.Object(Statsaggregator)) network_resources = fields.List(fields.Object(NetworkResource)) farmer_tid = fields.Integer()
class PublicIP(Base): id = fields.Integer() ipaddress = fields.IPRange() info = fields.Object(ReservationInfo) def resource_units(self): resource_units = ResourceUnitAmount() resource_units.ipv4u = 1 return resource_units
class Farm(Base): id = fields.Integer() threebot_id = fields.Integer() iyo_organization = fields.String(default="") name = fields.String(default="") wallet_addresses = fields.List(fields.Object(WalletAddress)) location = fields.Object(Location) email = fields.Email() resource_prices = fields.List(fields.Object(ResourceUnitPrice)) prefix_zero = fields.IPRange() def __str__(self): return " - ".join([x for x in [self.name, str(self.location)] if x])
class Farm(Base): id = fields.Integer() threebot_id = fields.Integer() iyo_organization = fields.String(default="") name = fields.String(default="") wallet_addresses = fields.List(fields.Object(WalletAddress)) location = fields.Object(Location) email = fields.Email() resource_prices = fields.List(fields.Object(ResourceUnitPrice)) prefix_zero = fields.IPRange() ipaddresses = fields.List(fields.Object(FarmerIP)) enable_custom_pricing = fields.Boolean(default=False) farm_cloudunits_price = fields.Object(CloudUnitMonthPrice) is_grid3_compliant = fields.Boolean(default=False) def __str__(self): return " - ".join([x for x in [self.name, str(self.location)] if x])
class WireguardPeer(Base): public_key = fields.String(default="") allowed_iprange = fields.List(fields.IPRange()) endpoint = fields.String(default="") iprange = fields.IPRange(default="10.10.11.0/24")
class FarmerIP(Base): address = fields.IPRange() gateway = fields.IPAddress() reservation_id = fields.Integer()
class NodeIface(Base): name = fields.String(default="") addrs = fields.List(fields.IPRange()) gateway = fields.List(fields.IPRange())
class Server(Base): host = fields.IPAddress() network = fields.IPRange() port = fields.Port() uid = fields.GUID() key = fields.Bytes()
def test_ipaddress_network(self): """Success scenario for ipaddress network validation""" ipaddress = fields.IPRange("192.168.0.0/28") self.assertEqual(ipaddress.default, "192.168.0.0/28") self.assertIsNone(ipaddress.validate("192.168.0.0/28"))