Browse Source

Renamed security_groups to vm_firewall

Nuwan Goonasekera 8 years ago
parent
commit
e645fbe5fc

+ 23 - 23
cloudbridge/cloud/base/resources.py

@@ -34,12 +34,12 @@ from cloudbridge.cloud.interfaces.resources import PlacementZone
 from cloudbridge.cloud.interfaces.resources import Region
 from cloudbridge.cloud.interfaces.resources import Region
 from cloudbridge.cloud.interfaces.resources import ResultList
 from cloudbridge.cloud.interfaces.resources import ResultList
 from cloudbridge.cloud.interfaces.resources import Router
 from cloudbridge.cloud.interfaces.resources import Router
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
-from cloudbridge.cloud.interfaces.resources import SecurityGroupRule
 from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import Subnet
 from cloudbridge.cloud.interfaces.resources import Subnet
 from cloudbridge.cloud.interfaces.resources import SubnetState
 from cloudbridge.cloud.interfaces.resources import SubnetState
+from cloudbridge.cloud.interfaces.resources import VMFirewall
+from cloudbridge.cloud.interfaces.resources import VMFirewallRule
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.interfaces.resources import VolumeState
 from cloudbridge.cloud.interfaces.resources import VolumeState
@@ -395,7 +395,7 @@ class BaseInstance(BaseCloudResource, BaseObjectLifeCycleMixin, Instance):
                 # check from most to least likely mutables
                 # check from most to least likely mutables
                 self.state == other.state and
                 self.state == other.state and
                 self.name == other.name and
                 self.name == other.name and
-                self.security_groups == other.security_groups and
+                self.vm_firewalls == other.vm_firewalls and
                 self.public_ips == other.public_ips and
                 self.public_ips == other.public_ips and
                 self.private_ips == other.private_ips and
                 self.private_ips == other.private_ips and
                 self.image_id == other.image_id)
                 self.image_id == other.image_id)
@@ -614,17 +614,17 @@ class BaseKeyPair(BaseCloudResource, KeyPair):
         return "<CBKeyPair: {0}>".format(self.name)
         return "<CBKeyPair: {0}>".format(self.name)
 
 
 
 
-class BaseSecurityGroup(BaseCloudResource, SecurityGroup):
+class BaseVMFirewall(BaseCloudResource, VMFirewall):
 
 
-    def __init__(self, provider, security_group):
-        super(BaseSecurityGroup, self).__init__(provider)
-        self._security_group = security_group
+    def __init__(self, provider, vm_firewall):
+        super(BaseVMFirewall, self).__init__(provider)
+        self._vm_firewall = vm_firewall
 
 
     def __eq__(self, other):
     def __eq__(self, other):
         """
         """
-        Check if all the defined rules match across both security groups.
+        Check if all the defined rules match across both VM firewalls.
         """
         """
-        return (isinstance(other, SecurityGroup) and
+        return (isinstance(other, VMFirewall) and
                 # pylint:disable=protected-access
                 # pylint:disable=protected-access
                 self._provider == other._provider and
                 self._provider == other._provider and
                 len(self.rules) == len(other.rules) and  # Shortcut
                 len(self.rules) == len(other.rules) and  # Shortcut
@@ -636,53 +636,53 @@ class BaseSecurityGroup(BaseCloudResource, SecurityGroup):
     @property
     @property
     def id(self):
     def id(self):
         """
         """
-        Get the ID of this security group.
+        Get the ID of this VM firewall.
 
 
         :rtype: str
         :rtype: str
-        :return: Security group ID
+        :return: VM firewall ID
         """
         """
-        return self._security_group.id
+        return self._vm_firewall.id
 
 
     @property
     @property
     def name(self):
     def name(self):
         """
         """
-        Return the name of this security group.
+        Return the name of this VM firewall.
         """
         """
-        return self._security_group.name
+        return self._vm_firewall.name
 
 
     @property
     @property
     def description(self):
     def description(self):
         """
         """
-        Return the description of this security group.
+        Return the description of this VM firewall.
         """
         """
-        return self._security_group.description
+        return self._vm_firewall.description
 
 
     def delete(self):
     def delete(self):
         """
         """
-        Delete this security group.
+        Delete this VM firewall.
         """
         """
-        return self._security_group.delete()
+        return self._vm_firewall.delete()
 
 
     def __repr__(self):
     def __repr__(self):
         return "<CB-{0}: {1} ({2})>".format(self.__class__.__name__,
         return "<CB-{0}: {1} ({2})>".format(self.__class__.__name__,
                                             self.id, self.name)
                                             self.id, self.name)
 
 
 
 
-class BaseSecurityGroupRule(BaseCloudResource, SecurityGroupRule):
+class BaseVMFirewallRule(BaseCloudResource, VMFirewallRule):
 
 
     def __init__(self, provider, rule, parent):
     def __init__(self, provider, rule, parent):
-        super(BaseSecurityGroupRule, self).__init__(provider)
+        super(BaseVMFirewallRule, self).__init__(provider)
         self._rule = rule
         self._rule = rule
         self.parent = parent
         self.parent = parent
 
 
     def name(self):
     def name(self):
         """
         """
-        Security group rules don't support names, so pass
+        VM firewall rules don't support names, so pass
         """
         """
         pass
         pass
 
 
     def __repr__(self):
     def __repr__(self):
-        return ("<CBSecurityGroupRule: IP: {0}; from: {1}; to: {2}; grp: {3}>"
+        return ("<CBVMFirewallRule: IP: {0}; from: {1}; to: {2}; grp: {3}>"
                 .format(self.ip_protocol, self.from_port, self.to_port,
                 .format(self.ip_protocol, self.from_port, self.to_port,
                         self.group))
                         self.group))
 
 
@@ -891,7 +891,7 @@ class BaseFloatingIP(BaseCloudResource, FloatingIP):
 
 
     def name(self):
     def name(self):
         """
         """
-        Security group rules don't support names, so pass
+        VM firewall rules don't support names, so pass
         """
         """
         pass
         pass
 
 

+ 4 - 4
cloudbridge/cloud/base/services.py

@@ -15,10 +15,10 @@ from cloudbridge.cloud.interfaces.services import NetworkingService
 from cloudbridge.cloud.interfaces.services import ObjectStoreService
 from cloudbridge.cloud.interfaces.services import ObjectStoreService
 from cloudbridge.cloud.interfaces.services import RegionService
 from cloudbridge.cloud.interfaces.services import RegionService
 from cloudbridge.cloud.interfaces.services import RouterService
 from cloudbridge.cloud.interfaces.services import RouterService
-from cloudbridge.cloud.interfaces.services import SecurityGroupService
 from cloudbridge.cloud.interfaces.services import SecurityService
 from cloudbridge.cloud.interfaces.services import SecurityService
 from cloudbridge.cloud.interfaces.services import SnapshotService
 from cloudbridge.cloud.interfaces.services import SnapshotService
 from cloudbridge.cloud.interfaces.services import SubnetService
 from cloudbridge.cloud.interfaces.services import SubnetService
+from cloudbridge.cloud.interfaces.services import VMFirewallService
 from cloudbridge.cloud.interfaces.services import VMTypeService
 from cloudbridge.cloud.interfaces.services import VMTypeService
 from cloudbridge.cloud.interfaces.services import VolumeService
 from cloudbridge.cloud.interfaces.services import VolumeService
 
 
@@ -105,11 +105,11 @@ class BaseKeyPairService(
         return True
         return True
 
 
 
 
-class BaseSecurityGroupService(
-        BasePageableObjectMixin, SecurityGroupService, BaseCloudService):
+class BaseVMFirewallService(
+        BasePageableObjectMixin, VMFirewallService, BaseCloudService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
-        super(BaseSecurityGroupService, self).__init__(provider)
+        super(BaseVMFirewallService, self).__init__(provider)
 
 
 
 
 class BaseVMTypeService(
 class BaseVMTypeService(

+ 1 - 1
cloudbridge/cloud/interfaces/provider.py

@@ -163,7 +163,7 @@ class CloudProvider(object):
         .. code-block:: python
         .. code-block:: python
 
 
             keypairs = provider.security.keypairs.list()
             keypairs = provider.security.keypairs.list()
-            security_groups = provider.security.security_groups.list()
+            vm_firewalls = provider.security.vm_firewalls.list()
 
 
 
 
         :rtype: ``object`` of :class:`.SecurityService`
         :rtype: ``object`` of :class:`.SecurityService`

+ 42 - 42
cloudbridge/cloud/interfaces/resources.py

@@ -539,22 +539,22 @@ class Instance(ObjectLifeCycleMixin, CloudResource):
 #         pass
 #         pass
 
 
     @abstractproperty
     @abstractproperty
-    def security_groups(self):
+    def vm_firewalls(self):
         """
         """
-        Get the security groups associated with this instance.
+        Get the firewalls (security groups) associated with this instance.
 
 
-        :rtype: list or :class:`.SecurityGroup` objects
-        :return: A list of SecurityGroup objects associated with this instance.
+        :rtype: list or :class:`.VMFirewall` objects
+        :return: A list of VMFirewall objects associated with this instance.
         """
         """
         pass
         pass
 
 
     @abstractproperty
     @abstractproperty
-    def security_group_ids(self):
+    def vm_firewall_ids(self):
         """
         """
-        Get the IDs of the security groups associated with this instance.
+        Get the IDs of the VM firewalls associated with this instance.
 
 
         :rtype: list or :class:``str``
         :rtype: list or :class:``str``
-        :return: A list of the SecurityGroup IDs associated with this instance.
+        :return: A list of the VMFirewall IDs associated with this instance.
         """
         """
         pass
         pass
 
 
@@ -599,22 +599,22 @@ class Instance(ObjectLifeCycleMixin, CloudResource):
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
-    def add_security_group(self, sg):
+    def add_vm_firewall(self, firewall):
         """
         """
-        Add a security group to this instance
+        Add a VM firewall to this instance
 
 
-        :type sg: ``SecurityGroup``
-        :param sg: The SecurityGroup to associate with the instance.
+        :type firewall: ``VMFirewall``
+        :param firewall: The VMFirewall to associate with the instance.
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
-    def remove_security_group(self, sg):
+    def remove_vm_firewall(self, firewall):
         """
         """
-        Remove a security group from this instance
+        Remove a VM firewall from this instance
 
 
-        :type sg: ``SecurityGroup``
-        :param sg: The SecurityGroup to associate with the instance.
+        :type firewall: ``VMFirewall``
+        :param firewall: The VMFirewall to associate with the instance.
         """
         """
         pass
         pass
 
 
@@ -1672,24 +1672,24 @@ class VMType(CloudResource):
         pass
         pass
 
 
 
 
-class SecurityGroup(CloudResource):
+class VMFirewall(CloudResource):
 
 
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
     @abstractproperty
     @abstractproperty
     def description(self):
     def description(self):
         """
         """
-        Return the description of this security group.
+        Return the description of this VM firewall.
 
 
         :rtype: ``str``
         :rtype: ``str``
-        :return: A description of this security group.
+        :return: A description of this VM firewall.
         """
         """
         pass
         pass
 
 
     @abstractproperty
     @abstractproperty
     def network_id(self):
     def network_id(self):
         """
         """
-        Network ID with which this security group is associated.
+        Network ID with which this VM firewall is associated.
 
 
         :rtype: ``str``
         :rtype: ``str``
         :return: Provider-supplied network ID or ``None`` is not available.
         :return: Provider-supplied network ID or ``None`` is not available.
@@ -1699,17 +1699,17 @@ class SecurityGroup(CloudResource):
     @abstractproperty
     @abstractproperty
     def rules(self):
     def rules(self):
         """
         """
-        Get the list of rules for this security group.
+        Get the list of rules for this VM firewall.
 
 
-        :rtype: list of :class:`.SecurityGroupRule`
-        :return: A list of security group rule objects.
+        :rtype: list of :class:`.VMFirewallRule`
+        :return: A list of VM firewall rule objects.
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
     def delete(self):
     def delete(self):
         """
         """
-        Delete this security group.
+        Delete this VM firewall.
 
 
         :rtype: ``bool``
         :rtype: ``bool``
         :return: ``True`` if successful.
         :return: ``True`` if successful.
@@ -1718,12 +1718,12 @@ class SecurityGroup(CloudResource):
 
 
     @abstractmethod
     @abstractmethod
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
+                 cidr_ip=None, src_firewall=None):
         """
         """
-        Create a security group rule. If the rule already exists, simply
+        Create a VM firewall rule. If the rule already exists, simply
         returns it.
         returns it.
 
 
-        You need to pass in either ``src_group`` OR ``ip_protocol`` AND
+        You need to pass in either ``src_firewall`` OR ``ip_protocol`` AND
         ``from_port``, ``to_port``, ``cidr_ip``. In other words, either
         ``from_port``, ``to_port``, ``cidr_ip``. In other words, either
         you are authorizing another group or you are authorizing some
         you are authorizing another group or you are authorizing some
         ip-based rule.
         ip-based rule.
@@ -1740,20 +1740,20 @@ class SecurityGroup(CloudResource):
         :type cidr_ip: ``str`` or list of ``str``
         :type cidr_ip: ``str`` or list of ``str``
         :param cidr_ip: The CIDR block you are providing access to.
         :param cidr_ip: The CIDR block you are providing access to.
 
 
-        :type src_group: :class:`.SecurityGroup`
-        :param src_group: The Security Group object you are granting access to.
+        :type src_firewall: :class:`.VMFirewall`
+        :param src_firewall: The VM firewall object you are granting access to.
 
 
-        :rtype: :class:`.SecurityGroupRule`
+        :rtype: :class:`.VMFirewallRule`
         :return: Rule object if successful or ``None``.
         :return: Rule object if successful or ``None``.
         """
         """
         pass
         pass
 
 
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
+                 cidr_ip=None, src_firewall=None):
         """
         """
-        Get a security group rule with the specified parameters.
+        Get a VM firewall rule with the specified parameters.
 
 
-        You need to pass in either ``src_group`` OR ``ip_protocol`` AND
+        You need to pass in either ``src_firewall`` OR ``ip_protocol`` AND
         ``from_port``, ``to_port``, and ``cidr_ip``. Note that when retrieving
         ``from_port``, ``to_port``, and ``cidr_ip``. Note that when retrieving
         a group rule, this method will return only one rule although possibly
         a group rule, this method will return only one rule although possibly
         several rules exist for the group rule. In that case, use the
         several rules exist for the group rule. In that case, use the
@@ -1771,19 +1771,19 @@ class SecurityGroup(CloudResource):
         :type cidr_ip: ``str`` or list of ``str``
         :type cidr_ip: ``str`` or list of ``str``
         :param cidr_ip: The CIDR block you are providing access to.
         :param cidr_ip: The CIDR block you are providing access to.
 
 
-        :type src_group: :class:`.SecurityGroup`
-        :param src_group: The Security Group object you are granting access to.
+        :type src_firewall: :class:`.VMFirewall`
+        :param src_firewall: The VM firewall object you are granting access to.
 
 
-        :rtype: :class:`.SecurityGroupRule`
-        :return: Role object if one can be found or ``None``.
+        :rtype: :class:`.VMFirewallRule`
+        :return: Rule object if one can be found or ``None``.
         """
         """
         pass
         pass
 
 
 
 
-class SecurityGroupRule(CloudResource):
+class VMFirewallRule(CloudResource):
 
 
     """
     """
-    Represents a security group rule.
+    Represents a VM firewall rule.
     """
     """
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
@@ -1820,7 +1820,7 @@ class SecurityGroupRule(CloudResource):
     @abstractproperty
     @abstractproperty
     def cidr_ip(self):
     def cidr_ip(self):
         """
         """
-        CIDR block this security group is providing access to.
+        CIDR block this VM firewall is providing access to.
 
 
         :rtype: ``str``
         :rtype: ``str``
         :return: CIDR block.
         :return: CIDR block.
@@ -1830,10 +1830,10 @@ class SecurityGroupRule(CloudResource):
     @abstractproperty
     @abstractproperty
     def group(self):
     def group(self):
         """
         """
-        Security group given access permissions by this rule.
+        VM firewall given access permissions by this rule.
 
 
-        :rtype: :class:``.SecurityGroup``
-        :return: The Security Group with granting access.
+        :rtype: :class:``.VMFirewall``
+        :return: The VM firewall with granting access.
         """
         """
         pass
         pass
 
 

+ 46 - 46
cloudbridge/cloud/interfaces/services.py

@@ -206,7 +206,7 @@ class InstanceService(PageableObjectMixin, CloudService):
 
 
     @abstractmethod
     @abstractmethod
     def create(self, name, image, vm_type, subnet, zone=None,
     def create(self, name, image, vm_type, subnet, zone=None,
-               key_pair=None, security_groups=None, user_data=None,
+               key_pair=None, vm_firewalls=None, user_data=None,
                launch_config=None,
                launch_config=None,
                **kwargs):
                **kwargs):
         """
         """
@@ -246,16 +246,16 @@ class InstanceService(PageableObjectMixin, CloudService):
         :param key_pair: The KeyPair object or its name, to set for the
         :param key_pair: The KeyPair object or its name, to set for the
                          instance.
                          instance.
 
 
-        :type  security_groups: A ``list`` of ``SecurityGroup`` objects or a
-                                list of ``str`` object IDs
-        :param security_groups: A list of ``SecurityGroup`` objects or a list
-                                of ``SecurityGroup`` IDs, which should be
-                                assigned to this instance.
+        :type  vm_firewalls: A ``list`` of ``VMFirewall`` objects or a
+                             list of ``str`` object IDs
+        :param vm_firewalls: A list of ``VMFirewall`` objects or a list
+                             of ``VMFirewall`` IDs, which should be
+                             assigned to this instance.
 
 
-                                The security groups must be associated with the
-                                same network as the supplied subnet. Use
-                                ``network.security_groups`` to retrieve a list
-                                of security groups belonging to a network.
+                             The VM firewalls must be associated with the
+                             same network as the supplied subnet. Use
+                             ``network.vm_firewalls`` to retrieve a list
+                             of firewalls belonging to a network.
 
 
         :type  user_data: ``str``
         :type  user_data: ``str``
         :param user_data: An extra userdata object which is compatible with
         :param user_data: An extra userdata object which is compatible with
@@ -1008,24 +1008,24 @@ class SecurityService(CloudService):
         pass
         pass
 
 
     @abstractproperty
     @abstractproperty
-    def security_groups(self):
+    def vm_firewalls(self):
         """
         """
-        Provides access to security groups for this provider.
+        Provides access to firewalls (security groups) for this provider.
 
 
         Example:
         Example:
 
 
         .. code-block:: python
         .. code-block:: python
 
 
-            # print all security groups
-            for sg in provider.security.security_groups:
-                print(sg.id, sg.name)
+            # print all VM firewalls
+            for fw in provider.security.vm_firewalls:
+                print(fw.id, fw.name)
 
 
-            # find security group by name
-            sg = provider.security.security_groups.find(name='my_sg')[0]
-            print(sg.id, sg.name)
+            # find firewall by name
+            fw = provider.security.vm_firewalls.find(name='my_vm_fw')[0]
+            print(fw.id, fw.name)
 
 
-        :rtype: :class:`.SecurityGroupService`
-        :return: a SecurityGroupService object
+        :rtype: :class:`.VMFirewallService`
+        :return: a VMFirewallService object
         """
         """
         pass
         pass
 
 
@@ -1093,7 +1093,7 @@ class KeyPairService(PageableObjectMixin, CloudService):
     @abstractmethod
     @abstractmethod
     def delete(self, key_pair_id):
     def delete(self, key_pair_id):
         """
         """
-        Delete an existing SecurityGroup.
+        Delete an existing VMFirewall.
 
 
         :type key_pair_id: str
         :type key_pair_id: str
         :param key_pair_id: The id of the key pair to be deleted.
         :param key_pair_id: The id of the key pair to be deleted.
@@ -1106,70 +1106,70 @@ class KeyPairService(PageableObjectMixin, CloudService):
         pass
         pass
 
 
 
 
-class SecurityGroupService(PageableObjectMixin, CloudService):
+class VMFirewallService(PageableObjectMixin, CloudService):
 
 
     """
     """
-    Base interface for security groups.
+    Base interface for VM firewalls.
     """
     """
     __metaclass__ = ABCMeta
     __metaclass__ = ABCMeta
 
 
     @abstractmethod
     @abstractmethod
-    def get(self, security_group_id):
+    def get(self, vm_firewall_id):
         """
         """
-        Returns a SecurityGroup given its ID. Returns ``None`` if the
-        SecurityGroup does not exist.
+        Returns a VMFirewall given its ID. Returns ``None`` if the
+        VMFirewall does not exist.
 
 
         Example:
         Example:
 
 
         .. code-block:: python
         .. code-block:: python
 
 
-            sg = provider.security.security_groups.get('my_sg_id')
-            print(sg.id, sg.name)
+            fw = provider.security.vm_firewalls.get('my_fw_id')
+            print(fw.id, fw.name)
 
 
-        :rtype: :class:`.SecurityGroup`
-        :return:  a SecurityGroup instance
+        :rtype: :class:`.VMFirewall`
+        :return:  a VMFirewall instance
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         """
         """
-        List all security groups associated with this account.
+        List all VM firewalls associated with this account.
 
 
-        :rtype: ``list`` of :class:`.SecurityGroup`
-        :return:  list of SecurityGroup objects
+        :rtype: ``list`` of :class:`.VMFirewall`
+        :return:  list of VMFirewall objects
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
     def create(self, name, description, network_id):
     def create(self, name, description, network_id):
         """
         """
-        Create a new SecurityGroup.
+        Create a new VMFirewall.
 
 
         :type name: str
         :type name: str
-        :param name: The name of the new security group.
+        :param name: The name of the new VM firewall.
 
 
         :type description: str
         :type description: str
-        :param description: The description of the new security group.
+        :param description: The description of the new VM firewall.
 
 
         :type  network_id: ``str``
         :type  network_id: ``str``
-        :param network_id: Network ID under which to create the security group.
+        :param network_id: Network ID under which to create the VM firewall.
 
 
-        :rtype: ``object`` of :class:`.SecurityGroup`
-        :return:  A SecurityGroup instance or ``None`` if one was not created.
+        :rtype: ``object`` of :class:`.VMFirewall`
+        :return:  A VMFirewall instance or ``None`` if one was not created.
         """
         """
         pass
         pass
 
 
     @abstractmethod
     @abstractmethod
     def find(self, name, limit=None, marker=None):
     def find(self, name, limit=None, marker=None):
         """
         """
-        Get security groups associated with your account filtered by name.
+        Get VM firewalls associated with your account filtered by name.
 
 
         :type name: str
         :type name: str
-        :param name: The name of the security group to retrieve.
+        :param name: The name of the VM firewall to retrieve.
 
 
-        :rtype: list of :class:`SecurityGroup`
-        :return: A list of SecurityGroup objects or an empty list if none
+        :rtype: list of :class:`VMFirewall`
+        :return: A list of VMFirewall objects or an empty list if none
                  found.
                  found.
         """
         """
         pass
         pass
@@ -1177,13 +1177,13 @@ class SecurityGroupService(PageableObjectMixin, CloudService):
     @abstractmethod
     @abstractmethod
     def delete(self, group_id):
     def delete(self, group_id):
         """
         """
-        Delete an existing SecurityGroup.
+        Delete an existing VMFirewall.
 
 
         :type group_id: str
         :type group_id: str
-        :param group_id: The security group ID to be deleted.
+        :param group_id: The VM firewall ID to be deleted.
 
 
         :rtype: ``bool``
         :rtype: ``bool``
-        :return:  ``True`` if the security group does not exist, ``False``
+        :return:  ``True`` if the VM firewall does not exist, ``False``
                   otherwise. Note that this implies that the group may not have
                   otherwise. Note that this implies that the group may not have
                   been deleted by this method but instead has not existed in
                   been deleted by this method but instead has not existed in
                   the first place.
                   the first place.

+ 42 - 41
cloudbridge/cloud/providers/aws/resources.py

@@ -19,10 +19,10 @@ from cloudbridge.cloud.base.resources import BaseNetwork
 from cloudbridge.cloud.base.resources import BasePlacementZone
 from cloudbridge.cloud.base.resources import BasePlacementZone
 from cloudbridge.cloud.base.resources import BaseRegion
 from cloudbridge.cloud.base.resources import BaseRegion
 from cloudbridge.cloud.base.resources import BaseRouter
 from cloudbridge.cloud.base.resources import BaseRouter
-from cloudbridge.cloud.base.resources import BaseSecurityGroup
-from cloudbridge.cloud.base.resources import BaseSecurityGroupRule
 from cloudbridge.cloud.base.resources import BaseSnapshot
 from cloudbridge.cloud.base.resources import BaseSnapshot
 from cloudbridge.cloud.base.resources import BaseSubnet
 from cloudbridge.cloud.base.resources import BaseSubnet
+from cloudbridge.cloud.base.resources import BaseVMFirewall
+from cloudbridge.cloud.base.resources import BaseVMFirewallRule
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVolume
 from cloudbridge.cloud.base.resources import BaseVolume
 from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.resources import ClientPagedResultList
@@ -31,9 +31,9 @@ from cloudbridge.cloud.interfaces.resources import InstanceState
 from cloudbridge.cloud.interfaces.resources import MachineImageState
 from cloudbridge.cloud.interfaces.resources import MachineImageState
 from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import RouterState
 from cloudbridge.cloud.interfaces.resources import RouterState
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import SubnetState
 from cloudbridge.cloud.interfaces.resources import SubnetState
+from cloudbridge.cloud.interfaces.resources import VMFirewall
 from cloudbridge.cloud.interfaces.resources import VolumeState
 from cloudbridge.cloud.interfaces.resources import VolumeState
 
 
 from .helpers import find_tag_value
 from .helpers import find_tag_value
@@ -255,14 +255,14 @@ class AWSInstance(BaseInstance):
         return self._ec2_instance.placement.get('AvailabilityZone')
         return self._ec2_instance.placement.get('AvailabilityZone')
 
 
     @property
     @property
-    def security_groups(self):
+    def vm_firewalls(self):
         return [
         return [
-            self._provider.security.security_groups.get(group_id)
-            for group_id in self.security_group_ids
+            self._provider.security.vm_firewalls.get(fw_id)
+            for fw_id in self.vm_firewall_ids
         ]
         ]
 
 
     @property
     @property
-    def security_group_ids(self):
+    def vm_firewall_ids(self):
         return list(set([
         return list(set([
             group.get('GroupId') for group in
             group.get('GroupId') for group in
             self._ec2_instance.security_groups
             self._ec2_instance.security_groups
@@ -310,14 +310,14 @@ class AWSInstance(BaseInstance):
         self._provider.ec2_conn.meta.client.disassociate_address(**params)
         self._provider.ec2_conn.meta.client.disassociate_address(**params)
         self.refresh()
         self.refresh()
 
 
-    def add_security_group(self, sg):
+    def add_vm_firewall(self, firewall):
         self._ec2_instance.modify_attribute(
         self._ec2_instance.modify_attribute(
-            Groups=self.security_group_ids + [sg.id])
+            Groups=self.vm_firewall_ids + [firewall.id])
 
 
-    def remove_security_group(self, sg):
+    def remove_vm_firewall(self, firewall):
         self._ec2_instance.modify_attribute(
         self._ec2_instance.modify_attribute(
-            Groups=([sg_id for sg_id in self.security_group_ids
-                     if sg_id != sg.id]))
+            Groups=([fw_id for fw_id in self.vm_firewall_ids
+                     if fw_id != firewall.id]))
 
 
     @property
     @property
     def state(self):
     def state(self):
@@ -544,30 +544,30 @@ class AWSKeyPair(BaseKeyPair):
             return None
             return None
 
 
 
 
-class AWSSecurityGroup(BaseSecurityGroup):
+class AWSVMFirewall(BaseVMFirewall):
 
 
-    def __init__(self, provider, security_group):
-        super(AWSSecurityGroup, self).__init__(provider, security_group)
+    def __init__(self, provider, _vm_firewall):
+        super(AWSVMFirewall, self).__init__(provider, _vm_firewall)
 
 
     @property
     @property
     def name(self):
     def name(self):
-        return self._security_group.group_name
+        return self._vm_firewall.group_name
 
 
     @property
     @property
     def network_id(self):
     def network_id(self):
-        return self._security_group.vpc_id
+        return self._vm_firewall.vpc_id
 
 
     @property
     @property
     def rules(self):
     def rules(self):
-        return [AWSSecurityGroupRule(self._provider, r, self)
-                for r in self._security_group.ip_permissions]
+        return [AWSVMFirewallRule(self._provider, r, self)
+                for r in self._vm_firewall.ip_permissions]
 
 
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
+                 cidr_ip=None, src_firewall=None):
         try:
         try:
-            src_group_id = (
-                src_group.id if isinstance(src_group, SecurityGroup)
-                else src_group)
+            src_firewall_id = (
+                src_firewall.id if isinstance(src_firewall, VMFirewall)
+                else src_firewall)
 
 
             ip_perm_entry = {
             ip_perm_entry = {
                 'IpProtocol': ip_protocol,
                 'IpProtocol': ip_protocol,
@@ -575,27 +575,28 @@ class AWSSecurityGroup(BaseSecurityGroup):
                 'ToPort': to_port,
                 'ToPort': to_port,
                 'IpRanges': [{'CidrIp': cidr_ip}] if cidr_ip else None,
                 'IpRanges': [{'CidrIp': cidr_ip}] if cidr_ip else None,
                 'UserIdGroupPairs': [{
                 'UserIdGroupPairs': [{
-                    'GroupId': src_group_id}
-                ] if src_group_id else None
+                    'GroupId': src_firewall_id}
+                ] if src_firewall_id else None
             }
             }
             # Filter out empty values to please Boto
             # Filter out empty values to please Boto
             ip_perms = [trim_empty_params(ip_perm_entry)]
             ip_perms = [trim_empty_params(ip_perm_entry)]
-            self._security_group.authorize_ingress(IpPermissions=ip_perms)
-            self._security_group.reload()
+            self._vm_firewall.authorize_ingress(IpPermissions=ip_perms)
+            self._vm_firewall.reload()
             return self.get_rule(ip_protocol, from_port, to_port, cidr_ip,
             return self.get_rule(ip_protocol, from_port, to_port, cidr_ip,
-                                 src_group_id)
+                                 src_firewall_id)
         except ClientError as ec2e:
         except ClientError as ec2e:
             if ec2e.response['Error']['Code'] == "InvalidPermission.Duplicate":
             if ec2e.response['Error']['Code'] == "InvalidPermission.Duplicate":
                 return self.get_rule(ip_protocol, from_port, to_port, cidr_ip,
                 return self.get_rule(ip_protocol, from_port, to_port, cidr_ip,
-                                     src_group)
+                                     src_firewall)
             else:
             else:
                 raise ec2e
                 raise ec2e
 
 
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
-        src_group_id = (src_group.id if isinstance(src_group, SecurityGroup)
-                        else src_group)
-        for rule in self._security_group.ip_permissions:
+                 cidr_ip=None, src_firewall=None):
+        src_firewall_id = (
+            src_firewall.id if isinstance(src_firewall, VMFirewall)
+            else src_firewall)
+        for rule in self._vm_firewall.ip_permissions:
             if ip_protocol and rule['IpProtocol'] != ip_protocol:
             if ip_protocol and rule['IpProtocol'] != ip_protocol:
                 continue
                 continue
             elif from_port and rule['FromPort'] != from_port:
             elif from_port and rule['FromPort'] != from_port:
@@ -605,12 +606,12 @@ class AWSSecurityGroup(BaseSecurityGroup):
             elif cidr_ip:
             elif cidr_ip:
                 if cidr_ip not in [x['CidrIp'] for x in rule['IpRanges']]:
                 if cidr_ip not in [x['CidrIp'] for x in rule['IpRanges']]:
                     continue
                     continue
-            elif src_group_id:
-                if src_group_id not in [
+            elif src_firewall_id:
+                if src_firewall_id not in [
                     group_pair.get('GroupId') for group_pair in
                     group_pair.get('GroupId') for group_pair in
                         rule.get('UserIdGroupPairs', [])]:
                         rule.get('UserIdGroupPairs', [])]:
                     continue
                     continue
-            return AWSSecurityGroupRule(self._provider, rule, self)
+            return AWSVMFirewallRule(self._provider, rule, self)
         return None
         return None
 
 
     def to_json(self):
     def to_json(self):
@@ -623,10 +624,10 @@ class AWSSecurityGroup(BaseSecurityGroup):
         return js
         return js
 
 
 
 
-class AWSSecurityGroupRule(BaseSecurityGroupRule):
+class AWSVMFirewallRule(BaseVMFirewallRule):
 
 
     def __init__(self, provider, rule, parent):
     def __init__(self, provider, rule, parent):
-        super(AWSSecurityGroupRule, self).__init__(provider, rule, parent)
+        super(AWSVMFirewallRule, self).__init__(provider, rule, parent)
 
 
     @property
     @property
     def id(self):
     def id(self):
@@ -664,7 +665,7 @@ class AWSSecurityGroupRule(BaseSecurityGroupRule):
     @property
     @property
     def group(self):
     def group(self):
         if self.group_id:
         if self.group_id:
-            return AWSSecurityGroup(
+            return AWSVMFirewall(
                 self._provider,
                 self._provider,
                 self._provider.ec2_conn.SecurityGroup(self.group_id))
                 self._provider.ec2_conn.SecurityGroup(self.group_id))
         else:
         else:
@@ -692,8 +693,8 @@ class AWSSecurityGroupRule(BaseSecurityGroupRule):
         # Filter out empty values to please Boto
         # Filter out empty values to please Boto
         ip_perms = [trim_empty_params(ip_perm_entry)]
         ip_perms = [trim_empty_params(ip_perm_entry)]
 
 
-        self.parent._security_group.revoke_ingress(IpPermissions=ip_perms)
-        self.parent._security_group.reload()
+        self.parent._vm_firewall.revoke_ingress(IpPermissions=ip_perms)
+        self.parent._vm_firewall.reload()
 
 
 
 
 class AWSBucketObject(BaseBucketObject):
 class AWSBucketObject(BaseBucketObject):

+ 29 - 29
cloudbridge/cloud/providers/aws/services.py

@@ -15,10 +15,10 @@ from cloudbridge.cloud.base.services import BaseNetworkingService
 from cloudbridge.cloud.base.services import BaseObjectStoreService
 from cloudbridge.cloud.base.services import BaseObjectStoreService
 from cloudbridge.cloud.base.services import BaseRegionService
 from cloudbridge.cloud.base.services import BaseRegionService
 from cloudbridge.cloud.base.services import BaseRouterService
 from cloudbridge.cloud.base.services import BaseRouterService
-from cloudbridge.cloud.base.services import BaseSecurityGroupService
 from cloudbridge.cloud.base.services import BaseSecurityService
 from cloudbridge.cloud.base.services import BaseSecurityService
 from cloudbridge.cloud.base.services import BaseSnapshotService
 from cloudbridge.cloud.base.services import BaseSnapshotService
 from cloudbridge.cloud.base.services import BaseSubnetService
 from cloudbridge.cloud.base.services import BaseSubnetService
+from cloudbridge.cloud.base.services import BaseVMFirewallService
 from cloudbridge.cloud.base.services import BaseVMTypeService
 from cloudbridge.cloud.base.services import BaseVMTypeService
 from cloudbridge.cloud.base.services import BaseVolumeService
 from cloudbridge.cloud.base.services import BaseVolumeService
 from cloudbridge.cloud.interfaces.exceptions \
 from cloudbridge.cloud.interfaces.exceptions \
@@ -26,8 +26,8 @@ from cloudbridge.cloud.interfaces.exceptions \
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import MachineImage
 from cloudbridge.cloud.interfaces.resources import MachineImage
 from cloudbridge.cloud.interfaces.resources import PlacementZone
 from cloudbridge.cloud.interfaces.resources import PlacementZone
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
 from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Snapshot
+from cloudbridge.cloud.interfaces.resources import VMFirewall
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.interfaces.resources import Volume
 
 
@@ -46,9 +46,9 @@ from .resources import AWSMachineImage
 from .resources import AWSNetwork
 from .resources import AWSNetwork
 from .resources import AWSRegion
 from .resources import AWSRegion
 from .resources import AWSRouter
 from .resources import AWSRouter
-from .resources import AWSSecurityGroup
 from .resources import AWSSnapshot
 from .resources import AWSSnapshot
 from .resources import AWSSubnet
 from .resources import AWSSubnet
+from .resources import AWSVMFirewall
 from .resources import AWSVMType
 from .resources import AWSVMType
 from .resources import AWSVolume
 from .resources import AWSVolume
 
 
@@ -60,15 +60,15 @@ class AWSSecurityService(BaseSecurityService):
 
 
         # Initialize provider services
         # Initialize provider services
         self._key_pairs = AWSKeyPairService(provider)
         self._key_pairs = AWSKeyPairService(provider)
-        self._security_groups = AWSSecurityGroupService(provider)
+        self._vm_firewalls = AWSVMFirewallService(provider)
 
 
     @property
     @property
     def key_pairs(self):
     def key_pairs(self):
         return self._key_pairs
         return self._key_pairs
 
 
     @property
     @property
-    def security_groups(self):
-        return self._security_groups
+    def vm_firewalls(self):
+        return self._vm_firewalls
 
 
 
 
 class AWSKeyPairService(BaseKeyPairService):
 class AWSKeyPairService(BaseKeyPairService):
@@ -94,22 +94,22 @@ class AWSKeyPairService(BaseKeyPairService):
         return self.svc.create('create_key_pair', KeyName=name)
         return self.svc.create('create_key_pair', KeyName=name)
 
 
 
 
-class AWSSecurityGroupService(BaseSecurityGroupService):
+class AWSVMFirewallService(BaseVMFirewallService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
-        super(AWSSecurityGroupService, self).__init__(provider)
+        super(AWSVMFirewallService, self).__init__(provider)
         self.svc = BotoEC2Service(provider=self.provider,
         self.svc = BotoEC2Service(provider=self.provider,
-                                  cb_resource=AWSSecurityGroup,
+                                  cb_resource=AWSVMFirewall,
                                   boto_collection_name='security_groups')
                                   boto_collection_name='security_groups')
 
 
-    def get(self, sg_id):
-        return self.svc.get(sg_id)
+    def get(self, firewall_id):
+        return self.svc.get(firewall_id)
 
 
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         return self.svc.list(limit=limit, marker=marker)
         return self.svc.list(limit=limit, marker=marker)
 
 
     def create(self, name, description, network_id):
     def create(self, name, description, network_id):
-        AWSSecurityGroup.assert_valid_resource_name(name)
+        AWSVMFirewall.assert_valid_resource_name(name)
         return self.svc.create('create_security_group', GroupName=name,
         return self.svc.create('create_security_group', GroupName=name,
                                Description=description, VpcId=network_id)
                                Description=description, VpcId=network_id)
 
 
@@ -117,10 +117,10 @@ class AWSSecurityGroupService(BaseSecurityGroupService):
         return self.svc.find(filter_name='group-name', filter_value=name,
         return self.svc.find(filter_name='group-name', filter_value=name,
                              limit=limit, marker=marker)
                              limit=limit, marker=marker)
 
 
-    def delete(self, group_id):
-        sg = self.svc.get(group_id)
-        if sg:
-            sg.delete()
+    def delete(self, firewall_id):
+        firewall = self.svc.get(firewall_id)
+        if firewall:
+            firewall.delete()
 
 
 
 
 class AWSBlockStoreService(BaseBlockStoreService):
 class AWSBlockStoreService(BaseBlockStoreService):
@@ -326,7 +326,7 @@ class AWSInstanceService(BaseInstanceService):
                                   boto_collection_name='instances')
                                   boto_collection_name='instances')
 
 
     def create(self, name, image, vm_type, subnet, zone=None,
     def create(self, name, image, vm_type, subnet, zone=None,
-               key_pair=None, security_groups=None, user_data=None,
+               key_pair=None, vm_firewalls=None, user_data=None,
                launch_config=None, **kwargs):
                launch_config=None, **kwargs):
         AWSInstance.assert_valid_resource_name(name)
         AWSInstance.assert_valid_resource_name(name)
 
 
@@ -344,8 +344,8 @@ class AWSInstanceService(BaseInstanceService):
         else:
         else:
             bdm = None
             bdm = None
 
 
-        subnet_id, zone_id, security_group_ids = \
-            self._resolve_launch_options(subnet, zone_id, security_groups)
+        subnet_id, zone_id, vm_firewall_ids = \
+            self._resolve_launch_options(subnet, zone_id, vm_firewalls)
 
 
         placement = {'AvailabilityZone': zone_id} if zone_id else None
         placement = {'AvailabilityZone': zone_id} if zone_id else None
         inst = self.svc.create('create_instances',
         inst = self.svc.create('create_instances',
@@ -353,7 +353,7 @@ class AWSInstanceService(BaseInstanceService):
                                MinCount=1,
                                MinCount=1,
                                MaxCount=1,
                                MaxCount=1,
                                KeyName=key_pair_name,
                                KeyName=key_pair_name,
-                               SecurityGroupIds=security_group_ids or None,
+                               SecurityGroupIds=vm_firewall_ids or None,
                                UserData=user_data,
                                UserData=user_data,
                                InstanceType=vm_size,
                                InstanceType=vm_size,
                                Placement=placement,
                                Placement=placement,
@@ -370,7 +370,7 @@ class AWSInstanceService(BaseInstanceService):
             'Expected a single object response, got a list: %s' % inst)
             'Expected a single object response, got a list: %s' % inst)
 
 
     def _resolve_launch_options(self, subnet=None, zone_id=None,
     def _resolve_launch_options(self, subnet=None, zone_id=None,
-                                security_groups=None):
+                                vm_firewalls=None):
         """
         """
         Work out interdependent launch options.
         Work out interdependent launch options.
 
 
@@ -383,23 +383,23 @@ class AWSInstanceService(BaseInstanceService):
         :type zone_id: ``str``
         :type zone_id: ``str``
         :param zone_id: ID of the zone where the launch should happen.
         :param zone_id: ID of the zone where the launch should happen.
 
 
-        :type security_groups: ``list`` of ``id``
-        :param zone_id: List of security group IDs.
+        :type vm_firewalls: ``list`` of ``id``
+        :param vm_firewalls: List of firewall IDs.
 
 
         :rtype: triplet of ``str``
         :rtype: triplet of ``str``
-        :return: Subnet ID, zone ID and security group IDs for launch.
+        :return: Subnet ID, zone ID and VM firewall IDs for launch.
 
 
         :raise ValueError: In case a conflicting combination is found.
         :raise ValueError: In case a conflicting combination is found.
         """
         """
         if subnet:
         if subnet:
             # subnet's zone takes precedence
             # subnet's zone takes precedence
             zone_id = subnet.zone.id
             zone_id = subnet.zone.id
-        if isinstance(security_groups, list) and isinstance(
-                security_groups[0], SecurityGroup):
-            security_group_ids = [sg.id for sg in security_groups]
+        if isinstance(vm_firewalls, list) and isinstance(
+                vm_firewalls[0], VMFirewall):
+            vm_firewall_ids = [fw.id for fw in vm_firewalls]
         else:
         else:
-            security_group_ids = security_groups
-        return subnet.id, zone_id, security_group_ids
+            vm_firewall_ids = vm_firewalls
+        return subnet.id, zone_id, vm_firewall_ids
 
 
     def _process_block_device_mappings(self, launch_config, zone=None):
     def _process_block_device_mappings(self, launch_config, zone=None):
         """
         """

+ 52 - 52
cloudbridge/cloud/providers/openstack/resources.py

@@ -18,10 +18,10 @@ from cloudbridge.cloud.base.resources import BaseNetwork
 from cloudbridge.cloud.base.resources import BasePlacementZone
 from cloudbridge.cloud.base.resources import BasePlacementZone
 from cloudbridge.cloud.base.resources import BaseRegion
 from cloudbridge.cloud.base.resources import BaseRegion
 from cloudbridge.cloud.base.resources import BaseRouter
 from cloudbridge.cloud.base.resources import BaseRouter
-from cloudbridge.cloud.base.resources import BaseSecurityGroup
-from cloudbridge.cloud.base.resources import BaseSecurityGroupRule
 from cloudbridge.cloud.base.resources import BaseSnapshot
 from cloudbridge.cloud.base.resources import BaseSnapshot
 from cloudbridge.cloud.base.resources import BaseSubnet
 from cloudbridge.cloud.base.resources import BaseSubnet
+from cloudbridge.cloud.base.resources import BaseVMFirewall
+from cloudbridge.cloud.base.resources import BaseVMFirewallRule
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVMType
 from cloudbridge.cloud.base.resources import BaseVolume
 from cloudbridge.cloud.base.resources import BaseVolume
 from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.resources import ClientPagedResultList
@@ -30,9 +30,9 @@ from cloudbridge.cloud.interfaces.resources import InstanceState
 from cloudbridge.cloud.interfaces.resources import MachineImageState
 from cloudbridge.cloud.interfaces.resources import MachineImageState
 from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import NetworkState
 from cloudbridge.cloud.interfaces.resources import RouterState
 from cloudbridge.cloud.interfaces.resources import RouterState
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import SnapshotState
 from cloudbridge.cloud.interfaces.resources import SubnetState
 from cloudbridge.cloud.interfaces.resources import SubnetState
+from cloudbridge.cloud.interfaces.resources import VMFirewall
 from cloudbridge.cloud.interfaces.resources import VolumeState
 from cloudbridge.cloud.interfaces.resources import VolumeState
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 
 
@@ -350,19 +350,19 @@ class OpenStackInstance(BaseInstance):
         return getattr(self._os_instance, 'OS-EXT-AZ:availability_zone', None)
         return getattr(self._os_instance, 'OS-EXT-AZ:availability_zone', None)
 
 
     @property
     @property
-    def security_groups(self):
+    def vm_firewalls(self):
         """
         """
-        Get the security groups associated with this instance.
+        Get the VM firewalls associated with this instance.
         """
         """
-        return [OpenStackSecurityGroup(self._provider, group)
+        return [OpenStackVMFirewall(self._provider, group)
                 for group in self._os_instance.list_security_group()]
                 for group in self._os_instance.list_security_group()]
 
 
     @property
     @property
-    def security_group_ids(self):
+    def vm_firewall_ids(self):
         """
         """
-        Get the security groups IDs associated with this instance.
+        Get the VM firewall IDs associated with this instance.
         """
         """
-        return [group.id for group in self.security_groups]
+        return [group.id for group in self.vm_firewalls]
 
 
     @property
     @property
     def key_pair_name(self):
     def key_pair_name(self):
@@ -393,17 +393,17 @@ class OpenStackInstance(BaseInstance):
         """
         """
         self._os_instance.remove_floating_ip(ip_address)
         self._os_instance.remove_floating_ip(ip_address)
 
 
-    def add_security_group(self, sg):
+    def add_vm_firewall(self, firewall):
         """
         """
-        Add a security group to this instance
+        Add a VM firewall to this instance
         """
         """
-        self._os_instance.add_security_group(sg.id)
+        self._os_instance.add_security_group(firewall.id)
 
 
-    def remove_security_group(self, sg):
+    def remove_vm_firewall(self, firewall):
         """
         """
-        Remove a security group from this instance
+        Remove a VM firewall from this instance
         """
         """
-        self._os_instance.remove_security_group(sg.id)
+        self._os_instance.remove_security_group(firewall.id)
 
 
     @property
     @property
     def state(self):
     def state(self):
@@ -999,10 +999,10 @@ class OpenStackKeyPair(BaseKeyPair):
         return getattr(self._key_pair, 'private_key', None)
         return getattr(self._key_pair, 'private_key', None)
 
 
 
 
-class OpenStackSecurityGroup(BaseSecurityGroup):
+class OpenStackVMFirewall(BaseVMFirewall):
 
 
-    def __init__(self, provider, security_group):
-        super(OpenStackSecurityGroup, self).__init__(provider, security_group)
+    def __init__(self, provider, vm_firewall):
+        super(OpenStackVMFirewall, self).__init__(provider, vm_firewall)
 
 
     @property
     @property
     def network_id(self):
     def network_id(self):
@@ -1016,17 +1016,17 @@ class OpenStackSecurityGroup(BaseSecurityGroup):
     @property
     @property
     def rules(self):
     def rules(self):
         # Update SG object; otherwise, recently added rules do now show
         # Update SG object; otherwise, recently added rules do now show
-        self._security_group = self._provider.nova.security_groups.get(
-            self._security_group)
-        return [OpenStackSecurityGroupRule(self._provider, r, self)
-                for r in self._security_group.rules]
+        self._vm_firewall = self._provider.nova.security_groups.get(
+            self.id)
+        return [OpenStackVMFirewallRule(self._provider, r, self)
+                for r in self._vm_firewall.rules]
 
 
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def add_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
+                 cidr_ip=None, src_firewall=None):
         """
         """
-        Create a security group rule.
+        Create a VM firewall rule.
 
 
-        You need to pass in either ``src_group`` OR ``ip_protocol`` AND
+        You need to pass in either ``src_firewall`` OR ``ip_protocol`` AND
         ``from_port``, ``to_port``, ``cidr_ip``.  In other words, either
         ``from_port``, ``to_port``, ``cidr_ip``.  In other words, either
         you are authorizing another group or you are authorizing some
         you are authorizing another group or you are authorizing some
         ip-based rule.
         ip-based rule.
@@ -1043,34 +1043,34 @@ class OpenStackSecurityGroup(BaseSecurityGroup):
         :type cidr_ip: str or list of strings
         :type cidr_ip: str or list of strings
         :param cidr_ip: The CIDR block you are providing access to.
         :param cidr_ip: The CIDR block you are providing access to.
 
 
-        :type src_group: ``object`` of :class:`.SecurityGroup`
-        :param src_group: The Security Group you are granting access to.
+        :type src_firewall: ``object`` of :class:`.VMFirewall`
+        :param src_firewall: The VM firewall you are granting access to.
 
 
-        :rtype: :class:``.SecurityGroupRule``
+        :rtype: :class:``.VMFirewallRule``
         :return: Rule object if successful or ``None``.
         :return: Rule object if successful or ``None``.
         """
         """
-        if src_group:
-            if not isinstance(src_group, SecurityGroup):
-                src_group = self._provider.security.security_groups.get(
-                    src_group)
+        if src_firewall:
+            if not isinstance(src_firewall, VMFirewall):
+                src_firewall = self._provider.security.vm_firewalls.get(
+                    src_firewall)
             existing_rule = self.get_rule(ip_protocol=ip_protocol,
             existing_rule = self.get_rule(ip_protocol=ip_protocol,
                                           from_port=from_port,
                                           from_port=from_port,
                                           to_port=to_port,
                                           to_port=to_port,
-                                          src_group=src_group)
+                                          src_firewall=src_firewall)
             if existing_rule:
             if existing_rule:
                 return existing_rule
                 return existing_rule
 
 
             rule = self._provider.nova.security_group_rules.create(
             rule = self._provider.nova.security_group_rules.create(
-                parent_group_id=self._security_group.id,
+                parent_group_id=self.id,
                 ip_protocol=ip_protocol,
                 ip_protocol=ip_protocol,
                 from_port=from_port,
                 from_port=from_port,
                 to_port=to_port,
                 to_port=to_port,
-                group_id=src_group.id)
+                group_id=src_firewall.id)
             if rule:
             if rule:
                 # We can only return one Rule so default to TCP (ie, last in
                 # We can only return one Rule so default to TCP (ie, last in
                 # the for loop above).
                 # the for loop above).
-                return OpenStackSecurityGroupRule(self._provider,
-                                                  rule.to_dict(), self)
+                return OpenStackVMFirewallRule(self._provider,
+                                               rule.to_dict(), self)
         else:
         else:
             existing_rule = self.get_rule(ip_protocol=ip_protocol,
             existing_rule = self.get_rule(ip_protocol=ip_protocol,
                                           from_port=from_port,
                                           from_port=from_port,
@@ -1080,29 +1080,29 @@ class OpenStackSecurityGroup(BaseSecurityGroup):
                 return existing_rule
                 return existing_rule
 
 
             rule = self._provider.nova.security_group_rules.create(
             rule = self._provider.nova.security_group_rules.create(
-                parent_group_id=self._security_group.id,
+                parent_group_id=self.id,
                 ip_protocol=ip_protocol,
                 ip_protocol=ip_protocol,
                 from_port=from_port,
                 from_port=from_port,
                 to_port=to_port,
                 to_port=to_port,
                 cidr=cidr_ip)
                 cidr=cidr_ip)
             if rule:
             if rule:
-                return OpenStackSecurityGroupRule(self._provider,
-                                                  rule.to_dict(), self)
+                return OpenStackVMFirewallRule(self._provider,
+                                               rule.to_dict(), self)
         return None
         return None
 
 
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
     def get_rule(self, ip_protocol=None, from_port=None, to_port=None,
-                 cidr_ip=None, src_group=None):
+                 cidr_ip=None, src_firewall=None):
         # Update SG object; otherwise, recently added rules do not show
         # Update SG object; otherwise, recently added rules do not show
         self._security_group = self._provider.nova.security_groups.get(
         self._security_group = self._provider.nova.security_groups.get(
-            self._security_group)
-        for rule in self._security_group.rules:
+            self.id)
+        for rule in self._vm_firewall.rules:
             if (rule['ip_protocol'] == ip_protocol and
             if (rule['ip_protocol'] == ip_protocol and
                 rule['from_port'] == from_port and
                 rule['from_port'] == from_port and
                 rule['to_port'] == to_port and
                 rule['to_port'] == to_port and
                 (rule['ip_range'].get('cidr') == cidr_ip or
                 (rule['ip_range'].get('cidr') == cidr_ip or
-                 (rule['group'].get('name') == src_group.name if src_group
-                  else False))):
-                return OpenStackSecurityGroupRule(self._provider, rule, self)
+                 (rule['group'].get('name') == src_firewall.name
+                  if src_firewall else False))):
+                return OpenStackVMFirewallRule(self._provider, rule, self)
         return None
         return None
 
 
     def to_json(self):
     def to_json(self):
@@ -1113,10 +1113,10 @@ class OpenStackSecurityGroup(BaseSecurityGroup):
         return js
         return js
 
 
 
 
-class OpenStackSecurityGroupRule(BaseSecurityGroupRule):
+class OpenStackVMFirewallRule(BaseVMFirewallRule):
 
 
     def __init__(self, provider, rule, parent):
     def __init__(self, provider, rule, parent):
-        super(OpenStackSecurityGroupRule, self).__init__(
+        super(OpenStackVMFirewallRule, self).__init__(
             provider, rule, parent)
             provider, rule, parent)
 
 
     @property
     @property
@@ -1141,10 +1141,10 @@ class OpenStackSecurityGroupRule(BaseSecurityGroupRule):
 
 
     @property
     @property
     def group(self):
     def group(self):
-        sg_name = self._rule.get('group', {}).get('name')
-        if sg_name:
-            sg = self._provider.security.security_groups.find(name=sg_name)
-            return sg[0] if sg else None
+        fw_name = self._rule.get('group', {}).get('name')
+        if fw_name:
+            fw = self._provider.security.vm_firewalls.find(name=fw_name)
+            return fw[0] if fw else None
         return None
         return None
 
 
     def to_json(self):
     def to_json(self):

+ 49 - 48
cloudbridge/cloud/providers/openstack/services.py

@@ -20,18 +20,18 @@ from cloudbridge.cloud.base.services import BaseNetworkingService
 from cloudbridge.cloud.base.services import BaseObjectStoreService
 from cloudbridge.cloud.base.services import BaseObjectStoreService
 from cloudbridge.cloud.base.services import BaseRegionService
 from cloudbridge.cloud.base.services import BaseRegionService
 from cloudbridge.cloud.base.services import BaseRouterService
 from cloudbridge.cloud.base.services import BaseRouterService
-from cloudbridge.cloud.base.services import BaseSecurityGroupService
 from cloudbridge.cloud.base.services import BaseSecurityService
 from cloudbridge.cloud.base.services import BaseSecurityService
 from cloudbridge.cloud.base.services import BaseSnapshotService
 from cloudbridge.cloud.base.services import BaseSnapshotService
 from cloudbridge.cloud.base.services import BaseSubnetService
 from cloudbridge.cloud.base.services import BaseSubnetService
+from cloudbridge.cloud.base.services import BaseVMFirewallService
 from cloudbridge.cloud.base.services import BaseVMTypeService
 from cloudbridge.cloud.base.services import BaseVMTypeService
 from cloudbridge.cloud.base.services import BaseVolumeService
 from cloudbridge.cloud.base.services import BaseVolumeService
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import MachineImage
 from cloudbridge.cloud.interfaces.resources import MachineImage
 from cloudbridge.cloud.interfaces.resources import PlacementZone
 from cloudbridge.cloud.interfaces.resources import PlacementZone
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
 from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Snapshot
 from cloudbridge.cloud.interfaces.resources import Subnet
 from cloudbridge.cloud.interfaces.resources import Subnet
+from cloudbridge.cloud.interfaces.resources import VMFirewall
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import VMType
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.interfaces.resources import Volume
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
 from cloudbridge.cloud.providers.openstack import helpers as oshelpers
@@ -49,9 +49,9 @@ from .resources import OpenStackMachineImage
 from .resources import OpenStackNetwork
 from .resources import OpenStackNetwork
 from .resources import OpenStackRegion
 from .resources import OpenStackRegion
 from .resources import OpenStackRouter
 from .resources import OpenStackRouter
-from .resources import OpenStackSecurityGroup
 from .resources import OpenStackSnapshot
 from .resources import OpenStackSnapshot
 from .resources import OpenStackSubnet
 from .resources import OpenStackSubnet
+from .resources import OpenStackVMFirewall
 from .resources import OpenStackVMType
 from .resources import OpenStackVMType
 from .resources import OpenStackVolume
 from .resources import OpenStackVolume
 
 
@@ -65,7 +65,7 @@ class OpenStackSecurityService(BaseSecurityService):
 
 
         # Initialize provider services
         # Initialize provider services
         self._key_pairs = OpenStackKeyPairService(provider)
         self._key_pairs = OpenStackKeyPairService(provider)
-        self._security_groups = OpenStackSecurityGroupService(provider)
+        self._vm_firewalls = OpenStackVMFirewallService(provider)
 
 
     @property
     @property
     def key_pairs(self):
     def key_pairs(self):
@@ -78,14 +78,14 @@ class OpenStackSecurityService(BaseSecurityService):
         return self._key_pairs
         return self._key_pairs
 
 
     @property
     @property
-    def security_groups(self):
+    def vm_firewalls(self):
         """
         """
-        Provides access to security groups for this provider.
+        Provides access to VM firewalls for this provider.
 
 
-        :rtype: ``object`` of :class:`.SecurityGroupService`
-        :return: a SecurityGroupService object
+        :rtype: ``object`` of :class:`.VMFirewallService`
+        :return: a VMFirewallService object
         """
         """
-        return self._security_groups
+        return self._vm_firewalls
 
 
     def get_or_create_ec2_credentials(self):
     def get_or_create_ec2_credentials(self):
         """
         """
@@ -175,85 +175,86 @@ class OpenStackKeyPairService(BaseKeyPairService):
         return None
         return None
 
 
 
 
-class OpenStackSecurityGroupService(BaseSecurityGroupService):
+class OpenStackVMFirewallService(BaseVMFirewallService):
 
 
     def __init__(self, provider):
     def __init__(self, provider):
-        super(OpenStackSecurityGroupService, self).__init__(provider)
+        super(OpenStackVMFirewallService, self).__init__(provider)
 
 
-    def get(self, sg_id):
+    def get(self, firewall_id):
         """
         """
-        Returns a SecurityGroup given its id.
+        Returns a VMFirewall given its id.
         """
         """
         try:
         try:
-            return OpenStackSecurityGroup(
-                self.provider, self.provider.nova.security_groups.get(sg_id))
+            return OpenStackVMFirewall(
+                self.provider,
+                self.provider.nova.security_groups.get(firewall_id))
         except NovaNotFound:
         except NovaNotFound:
             return None
             return None
 
 
     def list(self, limit=None, marker=None):
     def list(self, limit=None, marker=None):
         """
         """
-        List all security groups associated with this account.
+        List all VM firewalls associated with this account.
 
 
-        :rtype: ``list`` of :class:`.SecurityGroup`
-        :return:  list of SecurityGroup objects
+        :rtype: ``list`` of :class:`.VMFirewall`
+        :return:  list of VMFirewall objects
         """
         """
 
 
-        sgs = [OpenStackSecurityGroup(self.provider, sg)
-               for sg in self.provider.nova.security_groups.list()]
+        firewalls = [OpenStackVMFirewall(self.provider, fw)
+                     for fw in self.provider.nova.security_groups.list()]
 
 
-        return ClientPagedResultList(self.provider, sgs,
+        return ClientPagedResultList(self.provider, firewalls,
                                      limit=limit, marker=marker)
                                      limit=limit, marker=marker)
 
 
     def create(self, name, description, network_id):
     def create(self, name, description, network_id):
         """
         """
-        Create a new security group under the current account.
+        Create a new VM firewall under the current account.
 
 
         :type name: str
         :type name: str
-        :param name: The name of the new security group.
+        :param name: The name of the new VM firewall.
 
 
         :type description: str
         :type description: str
-        :param description: The description of the new security group.
+        :param description: The description of the new VM firewall.
 
 
         :type  network_id: ``None``
         :type  network_id: ``None``
         :param network_id: Not applicable for OpenStack (yet) so any value is
         :param network_id: Not applicable for OpenStack (yet) so any value is
                            ignored.
                            ignored.
 
 
-        :rtype: ``object`` of :class:`.SecurityGroup`
-        :return: a SecurityGroup object
+        :rtype: ``object`` of :class:`.VMFirewall`
+        :return: a VMFirewall object
         """
         """
-        OpenStackSecurityGroup.assert_valid_resource_name(name)
+        OpenStackVMFirewall.assert_valid_resource_name(name)
 
 
         sg = self.provider.nova.security_groups.create(name, description)
         sg = self.provider.nova.security_groups.create(name, description)
         if sg:
         if sg:
-            return OpenStackSecurityGroup(self.provider, sg)
+            return OpenStackVMFirewall(self.provider, sg)
         return None
         return None
 
 
     def find(self, name, limit=None, marker=None):
     def find(self, name, limit=None, marker=None):
         """
         """
-        Get all security groups associated with your account.
+        Get all VM firewalls associated with your account.
         """
         """
         sgs = self.provider.nova.security_groups.findall(name=name)
         sgs = self.provider.nova.security_groups.findall(name=name)
-        results = [OpenStackSecurityGroup(self.provider, sg)
+        results = [OpenStackVMFirewall(self.provider, sg)
                    for sg in sgs]
                    for sg in sgs]
         return ClientPagedResultList(self.provider, results,
         return ClientPagedResultList(self.provider, results,
                                      limit=limit, marker=marker)
                                      limit=limit, marker=marker)
 
 
     def delete(self, group_id):
     def delete(self, group_id):
         """
         """
-        Delete an existing SecurityGroup.
+        Delete an existing VMFirewall.
 
 
         :type group_id: str
         :type group_id: str
-        :param group_id: The security group ID to be deleted.
+        :param group_id: The VM firewall ID to be deleted.
 
 
         :rtype: ``bool``
         :rtype: ``bool``
-        :return:  ``True`` if the security group does not exist, ``False``
+        :return:  ``True`` if the VM firewall does not exist, ``False``
                   otherwise. Note that this implies that the group may not have
                   otherwise. Note that this implies that the group may not have
                   been deleted by this method but instead has not existed in
                   been deleted by this method but instead has not existed in
                   the first place.
                   the first place.
         """
         """
-        sg = self.get(group_id)
-        if sg:
-            sg.delete()
+        firewall = self.get(group_id)
+        if firewall:
+            firewall.delete()
         return True
         return True
 
 
 
 
@@ -567,7 +568,7 @@ class OpenStackInstanceService(BaseInstanceService):
         super(OpenStackInstanceService, self).__init__(provider)
         super(OpenStackInstanceService, self).__init__(provider)
 
 
     def create(self, name, image, vm_type, subnet, zone=None,
     def create(self, name, image, vm_type, subnet, zone=None,
-               key_pair=None, security_groups=None, user_data=None,
+               key_pair=None, vm_firewalls=None, user_data=None,
                launch_config=None,
                launch_config=None,
                **kwargs):
                **kwargs):
         """Create a new virtual machine instance."""
         """Create a new virtual machine instance."""
@@ -604,13 +605,13 @@ class OpenStackInstanceService(BaseInstanceService):
             log.debug("Creating network port for %s in subnet: %s" %
             log.debug("Creating network port for %s in subnet: %s" %
                       (name, subnet_id))
                       (name, subnet_id))
             sg_list = []
             sg_list = []
-            if security_groups:
-                if isinstance(security_groups, list) and \
-                        isinstance(security_groups[0], SecurityGroup):
-                    sg_list = security_groups
+            if vm_firewalls:
+                if isinstance(vm_firewalls, list) and \
+                        isinstance(vm_firewalls[0], VMFirewall):
+                    sg_list = vm_firewalls
                 else:
                 else:
-                    sg_list = (self.provider.security.security_groups
-                               .find(name=sg) for sg in security_groups)
+                    sg_list = (self.provider.security.vm_firewalls
+                               .find(name=sg) for sg in vm_firewalls)
                     sg_list = (sg[0] for sg in sg_list if sg)
                     sg_list = (sg[0] for sg in sg_list if sg)
             sg_id_list = [sg.id for sg in sg_list]
             sg_id_list = [sg.id for sg in sg_list]
             port_def = {
             port_def = {
@@ -625,12 +626,12 @@ class OpenStackInstanceService(BaseInstanceService):
             port_id = self.provider.neutron.create_port(port_def)['port']['id']
             port_id = self.provider.neutron.create_port(port_def)['port']['id']
             nics = [{'net-id': net_id, 'port-id': port_id}]
             nics = [{'net-id': net_id, 'port-id': port_id}]
         else:
         else:
-            if security_groups:
-                if isinstance(security_groups, list) and \
-                        isinstance(security_groups[0], SecurityGroup):
-                    sg_name_list = [sg.name for sg in security_groups]
+            if vm_firewalls:
+                if isinstance(vm_firewalls, list) and \
+                        isinstance(vm_firewalls[0], VMFirewall):
+                    sg_name_list = [sg.name for sg in vm_firewalls]
                 else:
                 else:
-                    sg_name_list = security_groups
+                    sg_name_list = vm_firewalls
 
 
         log.debug("Launching in subnet %s" % subnet_id)
         log.debug("Launching in subnet %s" % subnet_id)
         os_instance = self.provider.nova.servers.create(
         os_instance = self.provider.nova.servers.create(

+ 7 - 7
test/helpers/__init__.py

@@ -122,7 +122,7 @@ def delete_test_network(network):
 
 
 def create_test_instance(
 def create_test_instance(
         provider, instance_name, subnet, launch_config=None,
         provider, instance_name, subnet, launch_config=None,
-        key_pair=None, security_groups=None):
+        key_pair=None, vm_firewalls=None):
     return provider.compute.instances.create(
     return provider.compute.instances.create(
         instance_name,
         instance_name,
         get_provider_test_data(provider, 'image'),
         get_provider_test_data(provider, 'image'),
@@ -130,11 +130,11 @@ def create_test_instance(
         subnet=subnet,
         subnet=subnet,
         zone=get_provider_test_data(provider, 'placement'),
         zone=get_provider_test_data(provider, 'placement'),
         key_pair=key_pair,
         key_pair=key_pair,
-        security_groups=security_groups,
+        vm_firewalls=vm_firewalls,
         launch_config=launch_config)
         launch_config=launch_config)
 
 
 
 
-def get_test_instance(provider, name, key_pair=None, security_groups=None,
+def get_test_instance(provider, name, key_pair=None, vm_firewalls=None,
                       subnet=None):
                       subnet=None):
     launch_config = None
     launch_config = None
     instance = create_test_instance(
     instance = create_test_instance(
@@ -142,7 +142,7 @@ def get_test_instance(provider, name, key_pair=None, security_groups=None,
         name,
         name,
         subnet=subnet,
         subnet=subnet,
         key_pair=key_pair,
         key_pair=key_pair,
-        security_groups=security_groups,
+        vm_firewalls=vm_firewalls,
         launch_config=launch_config)
         launch_config=launch_config)
     instance.wait_till_ready()
     instance.wait_till_ready()
     return instance
     return instance
@@ -159,14 +159,14 @@ def delete_test_instance(instance):
                           terminal_states=[InstanceState.ERROR])
                           terminal_states=[InstanceState.ERROR])
 
 
 
 
-def cleanup_test_resources(instance=None, network=None, security_group=None,
+def cleanup_test_resources(instance=None, network=None, vm_firewall=None,
                            key_pair=None):
                            key_pair=None):
     """Clean up any combination of supplied resources."""
     """Clean up any combination of supplied resources."""
     with cleanup_action(lambda: delete_test_network(network)
     with cleanup_action(lambda: delete_test_network(network)
                         if network else None):
                         if network else None):
         with cleanup_action(lambda: key_pair.delete() if key_pair else None):
         with cleanup_action(lambda: key_pair.delete() if key_pair else None):
-            with cleanup_action(lambda: security_group.delete()
-                                if security_group else None):
+            with cleanup_action(lambda: vm_firewall.delete()
+                                if vm_firewall else None):
                 delete_test_instance(instance)
                 delete_test_instance(instance)
 
 
 
 

+ 25 - 25
test/test_compute_service.py

@@ -59,7 +59,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         return True
         return True
 
 
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
-                              'security.security_groups',
+                              'security.vm_firewalls',
                               'security.key_pairs'])
                               'security.key_pairs'])
     def test_instance_properties(self):
     def test_instance_properties(self):
         name = "cb_inst_props-{0}".format(helpers.get_uuid())
         name = "cb_inst_props-{0}".format(helpers.get_uuid())
@@ -68,17 +68,17 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         test_instance = None
         test_instance = None
         net = None
         net = None
-        sg = None
+        fw = None
         kp = None
         kp = None
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                test_instance, net, sg, kp)):
+                test_instance, net, fw, kp)):
             net, subnet = helpers.create_test_network(self.provider, name)
             net, subnet = helpers.create_test_network(self.provider, name)
             kp = self.provider.security.key_pairs.create(name=name)
             kp = self.provider.security.key_pairs.create(name=name)
-            sg = self.provider.security.security_groups.create(
+            fw = self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
             test_instance = helpers.get_test_instance(self.provider,
             test_instance = helpers.get_test_instance(self.provider,
                                                       name, key_pair=kp,
                                                       name, key_pair=kp,
-                                                      security_groups=[sg],
+                                                      vm_firewalls=[fw],
                                                       subnet=subnet)
                                                       subnet=subnet)
             self.assertEqual(
             self.assertEqual(
                 test_instance.name, name,
                 test_instance.name, name,
@@ -98,14 +98,14 @@ class CloudComputeServiceTestCase(ProviderTestBase):
             self.assertEqual(
             self.assertEqual(
                 test_instance.key_pair_name,
                 test_instance.key_pair_name,
                 kp.name)
                 kp.name)
-            self.assertIsInstance(test_instance.security_groups, list)
+            self.assertIsInstance(test_instance.vm_firewalls, list)
             self.assertEqual(
             self.assertEqual(
-                test_instance.security_groups[0],
-                sg)
-            self.assertIsInstance(test_instance.security_group_ids, list)
+                test_instance.vm_firewalls[0],
+                fw)
+            self.assertIsInstance(test_instance.vm_firewall_ids, list)
             self.assertEqual(
             self.assertEqual(
-                test_instance.security_group_ids[0],
-                sg.id)
+                test_instance.vm_firewall_ids[0],
+                fw.id)
             # Must have either a public or a private ip
             # Must have either a public or a private ip
             ip_private = test_instance.private_ips[0] \
             ip_private = test_instance.private_ips[0] \
                 if test_instance.private_ips else None
                 if test_instance.private_ips else None
@@ -287,7 +287,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
                         # correspond to requested mappings
                         # correspond to requested mappings
 
 
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
-                              'security.security_groups'])
+                              'security.vm_firewalls'])
     def test_instance_methods(self):
     def test_instance_methods(self):
         name = "cb_instmethods-{0}".format(helpers.get_uuid())
         name = "cb_instmethods-{0}".format(helpers.get_uuid())
 
 
@@ -295,30 +295,30 @@ class CloudComputeServiceTestCase(ProviderTestBase):
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         test_inst = None
         test_inst = None
         net = None
         net = None
-        sg = None
+        fw = None
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                test_inst, net, sg)):
+                test_inst, net, fw)):
             net, subnet = helpers.create_test_network(self.provider, name)
             net, subnet = helpers.create_test_network(self.provider, name)
             test_inst = helpers.get_test_instance(self.provider, name,
             test_inst = helpers.get_test_instance(self.provider, name,
                                                   subnet=subnet)
                                                   subnet=subnet)
-            sg = self.provider.security.security_groups.create(
+            fw = self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
 
 
-            # Check adding a security group to a running instance
-            test_inst.add_security_group(sg)
+            # Check adding a VM firewall to a running instance
+            test_inst.add_vm_firewall(fw)
             test_inst.refresh()
             test_inst.refresh()
             self.assertTrue(
             self.assertTrue(
-                sg in test_inst.security_groups, "Expected security group '%s'"
-                " to be among instance security_groups: [%s]" %
-                (sg, test_inst.security_groups))
+                fw in test_inst.vm_firewalls, "Expected VM firewall '%s'"
+                " to be among instance vm_firewalls: [%s]" %
+                (fw, test_inst.vm_firewalls))
 
 
-            # Check removing a security group from a running instance
-            test_inst.remove_security_group(sg)
+            # Check removing a VM firewall from a running instance
+            test_inst.remove_vm_firewall(fw)
             test_inst.refresh()
             test_inst.refresh()
             self.assertTrue(
             self.assertTrue(
-                sg not in test_inst.security_groups, "Expected security group"
-                " '%s' to be removed from instance security_groups: [%s]" %
-                (sg, test_inst.security_groups))
+                fw not in test_inst.vm_firewalls, "Expected VM firewall"
+                " '%s' to be removed from instance vm_firewalls: [%s]" %
+                (fw, test_inst.vm_firewalls))
 
 
             # check floating ips
             # check floating ips
             router = self.provider.networking.routers.create(name, net)
             router = self.provider.networking.routers.create(name, net)

+ 65 - 65
test/test_security_service.py

@@ -4,7 +4,7 @@ from test.helpers import ProviderTestBase
 from test.helpers import standard_interface_tests as sit
 from test.helpers import standard_interface_tests as sit
 
 
 from cloudbridge.cloud.interfaces.resources import KeyPair
 from cloudbridge.cloud.interfaces.resources import KeyPair
-from cloudbridge.cloud.interfaces.resources import SecurityGroup
+from cloudbridge.cloud.interfaces.resources import VMFirewall
 
 
 
 
 class CloudSecurityServiceTestCase(ProviderTestBase):
 class CloudSecurityServiceTestCase(ProviderTestBase):
@@ -40,135 +40,135 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
             self.assertIsNone(kp.material,
             self.assertIsNone(kp.material,
                               "Keypair material should now be empty")
                               "Keypair material should now be empty")
 
 
-    @helpers.skipIfNoService(['security.security_groups'])
-    def test_crud_security_group(self):
-        name = 'cb_crudsg-{0}'.format(helpers.get_uuid())
+    @helpers.skipIfNoService(['security.vm_firewalls'])
+    def test_crud_vm_firewall(self):
+        name = 'cb_crudfw-{0}'.format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
 
 
-        def create_sg(name):
-            return self.provider.security.security_groups.create(
+        def create_fw(name):
+            return self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
 
 
-        def cleanup_sg(sg):
-            sg.delete()
+        def cleanup_fw(fw):
+            fw.delete()
 
 
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
                 network=net)):
                 network=net)):
             net, _ = helpers.create_test_network(self.provider, name)
             net, _ = helpers.create_test_network(self.provider, name)
 
 
-            sit.check_crud(self, self.provider.security.security_groups,
-                           SecurityGroup, "cb_crudsg", create_sg, cleanup_sg)
+            sit.check_crud(self, self.provider.security.vm_firewalls,
+                           VMFirewall, "cb_crudfw", create_fw, cleanup_fw)
 
 
-    @helpers.skipIfNoService(['security.security_groups'])
-    def test_security_group_properties(self):
-        name = 'cb_propsg-{0}'.format(helpers.get_uuid())
+    @helpers.skipIfNoService(['security.vm_firewalls'])
+    def test_vm_firewall_properties(self):
+        name = 'cb_propfw-{0}'.format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
-        sg = None
+        fw = None
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                network=net, security_group=sg)):
+                network=net, vm_firewall=fw)):
             net, _ = helpers.create_test_network(self.provider, name)
             net, _ = helpers.create_test_network(self.provider, name)
-            sg = self.provider.security.security_groups.create(
+            fw = self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
 
 
-            self.assertEqual(name, sg.description)
+            self.assertEqual(name, fw.description)
 
 
-            rule = sg.add_rule(ip_protocol='tcp', from_port=1111, to_port=1111,
+            rule = fw.add_rule(ip_protocol='tcp', from_port=1111, to_port=1111,
                                cidr_ip='0.0.0.0/0')
                                cidr_ip='0.0.0.0/0')
-            found_rule = sg.get_rule(ip_protocol='tcp', from_port=1111,
+            found_rule = fw.get_rule(ip_protocol='tcp', from_port=1111,
                                      to_port=1111, cidr_ip='0.0.0.0/0')
                                      to_port=1111, cidr_ip='0.0.0.0/0')
             self.assertTrue(
             self.assertTrue(
                 rule == found_rule,
                 rule == found_rule,
-                "Expected rule {0} not found in security group: {0}".format(
-                    rule, sg.rules))
+                "Expected rule {0} not found in VM firewall: {0}".format(
+                    rule, fw.rules))
 
 
             object_keys = (
             object_keys = (
-                sg.rules[0].ip_protocol,
-                sg.rules[0].from_port,
-                sg.rules[0].to_port)
+                fw.rules[0].ip_protocol,
+                fw.rules[0].from_port,
+                fw.rules[0].to_port)
             self.assertTrue(
             self.assertTrue(
-                all(str(key) in repr(sg.rules[0]) for key in object_keys),
+                all(str(key) in repr(fw.rules[0]) for key in object_keys),
                 "repr(obj) should contain ip_protocol, form_port, and to_port"
                 "repr(obj) should contain ip_protocol, form_port, and to_port"
                 " so that the object can be reconstructed, but does not:"
                 " so that the object can be reconstructed, but does not:"
-                " {0}; {1}".format(sg.rules[0], object_keys))
+                " {0}; {1}".format(fw.rules[0], object_keys))
             self.assertTrue(
             self.assertTrue(
-                sg == sg,
-                "The same security groups should be equal?")
+                fw == fw,
+                "The same VM firewalls should be equal?")
             self.assertFalse(
             self.assertFalse(
-                sg != sg,
-                "The same security groups should still be equal?")
+                fw != fw,
+                "The same VM firewalls should still be equal?")
 
 
-        sit.check_delete(self, self.provider.security.security_groups, sg)
-        sgl = self.provider.security.security_groups.list()
-        found_sg = [g for g in sgl if g.name == name]
+        sit.check_delete(self, self.provider.security.vm_firewalls, fw)
+        fwl = self.provider.security.vm_firewalls.list()
+        found_fw = [f for f in fwl if f.name == name]
         self.assertTrue(
         self.assertTrue(
-            len(found_sg) == 0,
-            "Security group {0} should have been deleted but still exists."
+            len(found_fw) == 0,
+            "VM firewall {0} should have been deleted but still exists."
             .format(name))
             .format(name))
 
 
-    @helpers.skipIfNoService(['security.security_groups'])
-    def test_security_group_rule_add_twice(self):
-        name = 'cb_sgruletwice-{0}'.format(helpers.get_uuid())
+    @helpers.skipIfNoService(['security.vm_firewalls'])
+    def test_vm_firewall_rule_add_twice(self):
+        name = 'cb_fwruletwice-{0}'.format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
-        sg = None
+        fw = None
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                network=net, security_group=sg)):
+                network=net, vm_firewall=fw)):
 
 
             net, _ = helpers.create_test_network(self.provider, name)
             net, _ = helpers.create_test_network(self.provider, name)
-            sg = self.provider.security.security_groups.create(
+            fw = self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
 
 
-            rule = sg.add_rule(ip_protocol='tcp', from_port=1111, to_port=1111,
+            rule = fw.add_rule(ip_protocol='tcp', from_port=1111, to_port=1111,
                                cidr_ip='0.0.0.0/0')
                                cidr_ip='0.0.0.0/0')
             # attempting to add the same rule twice should succeed
             # attempting to add the same rule twice should succeed
-            same_rule = sg.add_rule(ip_protocol='tcp', from_port=1111,
+            same_rule = fw.add_rule(ip_protocol='tcp', from_port=1111,
                                     to_port=1111, cidr_ip='0.0.0.0/0')
                                     to_port=1111, cidr_ip='0.0.0.0/0')
             self.assertTrue(
             self.assertTrue(
                 rule == same_rule,
                 rule == same_rule,
-                "Expected rule {0} not found in security group: {0}".format(
-                    same_rule, sg.rules))
+                "Expected rule {0} not found in VM firewall: {0}".format(
+                    same_rule, fw.rules))
 
 
-    @helpers.skipIfNoService(['security.security_groups'])
-    def test_security_group_group_rule(self):
-        name = 'cb_sgrule-{0}'.format(helpers.get_uuid())
+    @helpers.skipIfNoService(['security.vm_firewalls'])
+    def test_vm_firewall_group_rule(self):
+        name = 'cb_fwrule-{0}'.format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
-        sg = None
+        fw = None
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
         with helpers.cleanup_action(lambda: helpers.cleanup_test_resources(
-                network=net, security_group=sg)):
+                network=net, vm_firewall=fw)):
             net, _ = helpers.create_test_network(self.provider, name)
             net, _ = helpers.create_test_network(self.provider, name)
-            sg = self.provider.security.security_groups.create(
+            fw = self.provider.security.vm_firewalls.create(
                 name=name, description=name, network_id=net.id)
                 name=name, description=name, network_id=net.id)
             self.assertTrue(
             self.assertTrue(
-                len(sg.rules) == 0,
-                "Expected no security group group rule. Got {0}."
-                .format(sg.rules))
-            rule = sg.add_rule(src_group=sg, ip_protocol='tcp', from_port=1,
+                len(fw.rules) == 0,
+                "Expected no VM firewall group rule. Got {0}."
+                .format(fw.rules))
+            rule = fw.add_rule(src_firewall=fw, ip_protocol='tcp', from_port=1,
                                to_port=65535)
                                to_port=65535)
             self.assertTrue(
             self.assertTrue(
                 rule.group.name == name,
                 rule.group.name == name,
-                "Expected security group rule name {0}. Got {1}."
+                "Expected VM firewall rule name {0}. Got {1}."
                 .format(name, rule.group.name))
                 .format(name, rule.group.name))
-            for r in sg.rules:
+            for r in fw.rules:
                 r.delete()
                 r.delete()
-            sg = self.provider.security.security_groups.get(sg.id)  # update
+            fw = self.provider.security.vm_firewalls.get(fw.id)  # update
             self.assertTrue(
             self.assertTrue(
-                len(sg.rules) == 0,
-                "Deleting SecurityGroupRule should delete it: {0}".format(
-                    sg.rules))
-        sgl = self.provider.security.security_groups.list()
-        found_sg = [g for g in sgl if g.name == name]
+                len(fw.rules) == 0,
+                "Deleting VMFirewallRule should delete it: {0}".format(
+                    fw.rules))
+        fwl = self.provider.security.vm_firewalls.list()
+        found_fw = [f for f in fwl if f.name == name]
         self.assertTrue(
         self.assertTrue(
-            len(found_sg) == 0,
-            "Security group {0} should have been deleted but still exists."
+            len(found_fw) == 0,
+            "VM firewall {0} should have been deleted but still exists."
             .format(name))
             .format(name))