Uploaded image for project: 'jclouds'
  1. jclouds
  2. JCLOUDS-1309

GCE SecurityGroupExtension implementation

    XMLWordPrintableJSON

Details

    Description

      I'd like to try implement the SecurityGroupExtension interface for GCE. Looking at the documentation it seems that the combination of firewall rules and node tags is flexible enough to allow us implement the functionality.

      It's been tried before but the implementation's been removed (see [1]). It's main drawback is that for each security group the code creates a new network.

      Currently the biggest mismatch between the jclouds abstraction and the GCE functionality is that its firewall rules must be attached to a network.

      Here's my suggested approach:

      • IpPermission roughly corresponds to a firewall rule
      • SecurityGroup is just a collection of firewall rules (there's no cloud resources that corresponds to it). The firewall rules of a security group share the same prefix - jclouds-sg-<sg name>-<permission suffix>. They all belong to the same network.
      • They key bit: createSecurityGroup accepts a Location with a scope of Network, returning a custom implementation of SecurityGroup which keeps a reference to the network, so all IpPermission objects added subsequently will be on it.

      While the suggested approach fits into the SecurityGroupExtension interface it's different enough from the other implementations that it might not be worth the trouble of implementing and supporting (even be harmful as users might be surprised by the different behaviour).

      Would be interested in hearing other opinions on the approach.

      [1] https://github.com/jclouds/jclouds/commit/2ba48dc9f66416b5d8515bd6a07b27a213d89a7c

      Attachments

        Activity

          People

            Unassigned Unassigned
            svet Svetoslav Neykov
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: