subservices.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import logging
  2. from cloudbridge.cloud.interfaces.subservices import BucketObjectSubService
  3. from cloudbridge.cloud.interfaces.subservices import FloatingIPSubService
  4. from cloudbridge.cloud.interfaces.subservices import GatewaySubService
  5. from cloudbridge.cloud.interfaces.subservices import VMFirewallRuleSubService
  6. from .resources import BasePageableObjectMixin
  7. log = logging.getLogger(__name__)
  8. class BaseBucketObjectSubService(BasePageableObjectMixin,
  9. BucketObjectSubService):
  10. def __init__(self, provider, bucket):
  11. self.__provider = provider
  12. self.bucket = bucket
  13. @property
  14. def _provider(self):
  15. return self.__provider
  16. def get(self, name):
  17. return self._provider.storage._bucket_objects.get(self.bucket, name)
  18. def list(self, limit=None, marker=None, prefix=None):
  19. return self._provider.storage._bucket_objects.list(self.bucket, limit,
  20. marker, prefix)
  21. def find(self, **kwargs):
  22. return self._provider.storage._bucket_objects.find(self.bucket,
  23. **kwargs)
  24. def create(self, name):
  25. return self._provider.storage._bucket_objects.create(self.bucket, name)
  26. class BaseGatewaySubService(GatewaySubService, BasePageableObjectMixin):
  27. def __init__(self, provider, network):
  28. self._network = network
  29. self.__provider = provider
  30. @property
  31. def _provider(self):
  32. return self.__provider
  33. def get_or_create(self):
  34. return (self._provider.networking
  35. ._gateways
  36. .get_or_create(self._network))
  37. def delete(self, gateway):
  38. return (self._provider.networking
  39. ._gateways
  40. .delete(self._network, gateway))
  41. def list(self, limit=None, marker=None):
  42. return (self._provider.networking
  43. ._gateways
  44. .list(self._network, limit, marker))
  45. class BaseVMFirewallRuleSubService(BasePageableObjectMixin,
  46. VMFirewallRuleSubService):
  47. def __init__(self, provider, firewall):
  48. self.__provider = provider
  49. self._firewall = firewall
  50. @property
  51. def _provider(self):
  52. return self.__provider
  53. def get(self, rule_id):
  54. return self._provider.security._vm_firewall_rules.get(self._firewall,
  55. rule_id)
  56. def list(self, limit=None, marker=None):
  57. return self._provider.security._vm_firewall_rules.list(self._firewall,
  58. limit, marker)
  59. def create(self, direction, protocol=None, from_port=None,
  60. to_port=None, cidr=None, src_dest_fw=None):
  61. return (self._provider
  62. .security
  63. ._vm_firewall_rules
  64. .create(self._firewall, direction, protocol, from_port,
  65. to_port, cidr, src_dest_fw))
  66. def find(self, **kwargs):
  67. return self._provider.security._vm_firewall_rules.find(self._firewall,
  68. **kwargs)
  69. def delete(self, rule_id):
  70. return (self._provider
  71. .security
  72. ._vm_firewall_rules
  73. .delete(self._firewall, rule_id))
  74. class BaseFloatingIPSubService(FloatingIPSubService, BasePageableObjectMixin):
  75. def __init__(self, provider, gateway):
  76. self.__provider = provider
  77. self.gateway = gateway
  78. @property
  79. def _provider(self):
  80. return self.__provider
  81. def get(self, fip_id):
  82. return self._provider.networking._floating_ips.get(self.gateway,
  83. fip_id)
  84. def list(self, limit=None, marker=None):
  85. return self._provider.networking._floating_ips.list(self.gateway,
  86. limit, marker)
  87. def find(self, **kwargs):
  88. return self._provider.networking._floating_ips.find(self.gateway,
  89. **kwargs)
  90. def create(self):
  91. return self._provider.networking._floating_ips.create(self.gateway)
  92. def delete(self, fip):
  93. return self._provider.networking._floating_ips.delete(self.gateway,
  94. fip)