subservices.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. import logging
  2. from cloudbridge.interfaces.subservices import BucketObjectSubService
  3. from cloudbridge.interfaces.subservices import FloatingIPSubService
  4. from cloudbridge.interfaces.subservices import GatewaySubService
  5. from cloudbridge.interfaces.subservices import SubnetSubService
  6. from cloudbridge.interfaces.subservices import VMFirewallRuleSubService
  7. from .resources import BasePageableObjectMixin
  8. log = logging.getLogger(__name__)
  9. class BaseBucketObjectSubService(BasePageableObjectMixin,
  10. BucketObjectSubService):
  11. def __init__(self, provider, bucket):
  12. self.__provider = provider
  13. self.bucket = bucket
  14. @property
  15. def _provider(self):
  16. return self.__provider
  17. def get(self, name):
  18. return self._provider.storage._bucket_objects.get(self.bucket, name)
  19. def list(self, limit=None, marker=None, prefix=None):
  20. return self._provider.storage._bucket_objects.list(self.bucket, limit,
  21. marker, prefix)
  22. def find(self, **kwargs):
  23. return self._provider.storage._bucket_objects.find(self.bucket,
  24. **kwargs)
  25. def create(self, name):
  26. return self._provider.storage._bucket_objects.create(self.bucket, name)
  27. class BaseGatewaySubService(GatewaySubService, BasePageableObjectMixin):
  28. def __init__(self, provider, network):
  29. self._network = network
  30. self.__provider = provider
  31. @property
  32. def _provider(self):
  33. return self.__provider
  34. def get_or_create(self):
  35. return (self._provider.networking
  36. ._gateways
  37. .get_or_create(self._network))
  38. def delete(self, gateway):
  39. return (self._provider.networking
  40. ._gateways
  41. .delete(self._network, gateway))
  42. def list(self, limit=None, marker=None):
  43. return (self._provider.networking
  44. ._gateways
  45. .list(self._network, limit, marker))
  46. class BaseVMFirewallRuleSubService(BasePageableObjectMixin,
  47. VMFirewallRuleSubService):
  48. def __init__(self, provider, firewall):
  49. self.__provider = provider
  50. self._firewall = firewall
  51. @property
  52. def _provider(self):
  53. return self.__provider
  54. def get(self, rule_id):
  55. return self._provider.security._vm_firewall_rules.get(self._firewall,
  56. rule_id)
  57. def list(self, limit=None, marker=None):
  58. return self._provider.security._vm_firewall_rules.list(self._firewall,
  59. limit, marker)
  60. def create(self, direction, protocol=None, from_port=None,
  61. to_port=None, cidr=None, src_dest_fw=None):
  62. return (self._provider
  63. .security
  64. ._vm_firewall_rules
  65. .create(self._firewall, direction, protocol, from_port,
  66. to_port, cidr, src_dest_fw))
  67. def find(self, **kwargs):
  68. return self._provider.security._vm_firewall_rules.find(self._firewall,
  69. **kwargs)
  70. def delete(self, rule_id):
  71. return (self._provider
  72. .security
  73. ._vm_firewall_rules
  74. .delete(self._firewall, rule_id))
  75. class BaseFloatingIPSubService(FloatingIPSubService, BasePageableObjectMixin):
  76. def __init__(self, provider, gateway):
  77. self.__provider = provider
  78. self.gateway = gateway
  79. @property
  80. def _provider(self):
  81. return self.__provider
  82. def get(self, fip_id):
  83. return self._provider.networking._floating_ips.get(self.gateway,
  84. fip_id)
  85. def list(self, limit=None, marker=None):
  86. return self._provider.networking._floating_ips.list(self.gateway,
  87. limit, marker)
  88. def find(self, **kwargs):
  89. return self._provider.networking._floating_ips.find(self.gateway,
  90. **kwargs)
  91. def create(self):
  92. return self._provider.networking._floating_ips.create(self.gateway)
  93. def delete(self, fip):
  94. return self._provider.networking._floating_ips.delete(self.gateway,
  95. fip)
  96. class BaseSubnetSubService(SubnetSubService, BasePageableObjectMixin):
  97. def __init__(self, provider, network):
  98. self.__provider = provider
  99. self.network = network
  100. @property
  101. def _provider(self):
  102. return self.__provider
  103. def get(self, subnet_id):
  104. sn = self._provider.networking.subnets.get(self.network, subnet_id)
  105. if sn.network_id != self.network.id:
  106. log.warning("The SubnetSubService nested in the network '{}' "
  107. "returned subnet '{}' which is attached to another "
  108. "network '{}'".format(str(self.network), str(sn),
  109. str(sn.network)))
  110. return sn
  111. def list(self, limit=None, marker=None):
  112. return self._provider.networking.subnets.list(network=self.network,
  113. limit=limit,
  114. marker=marker)
  115. def find(self, **kwargs):
  116. return self._provider.networking.subnets.find(network=self.network,
  117. **kwargs)
  118. def create(self, label, cidr_block):
  119. return self._provider.networking.subnets.create(label,
  120. self.network,
  121. cidr_block)
  122. def delete(self, subnet):
  123. return self._provider.networking.subnets.delete(subnet)