yakumo.neutron.v2.vpn.ipsec_policy

Package yakumo :: Package neutron :: Package v2 :: Package vpn :: Module ipsec_policy |
[hide private]
[frames] | no frames]

# Source Code for Module yakumo.neutron.v2.vpn.ipsec_policy

      1  # Copyright 2014-2017 by Akira Yoshiyama <akirayoshiyama@gmail.com>.
      2  # All Rights Reserved.
      3  #
      4  #    Licensed under the Apache License, Version 2.0 (the "License"); you may
      5  #    not use this file except in compliance with the License. You may obtain
      6  #    a copy of the License at
      7  #
      8  #         http://www.apache.org/licenses/LICENSE-2.0
      9  #
     10  #    Unless required by applicable law or agreed to in writing, software
     11  #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     12  #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     13  #    License for the specific language governing permissions and limitations
     14  #    under the License.
     15
     16  """
     17  Resource class and its manager for VPN IPSec policies in Networking V2 API
     18  """
     19
     20  from yakumo import base
     21  from yakumo.constant import UNDEF
     22  from yakumo import mapper
     23  from yakumo import utils
     24
     25
     26  ATTRIBUTE_MAPPING = [
     27      ('id', 'id', mapper.Noop),
     28      ('name', 'name', mapper.Noop),
     29      ('description', 'description', mapper.Noop),
     30      ('auth_algorithm', 'auth_algorithm', mapper.Noop),
     31      ('encryption_algorithm', 'encryption_algorithm', mapper.Noop),
     32      ('pfs', 'pfs', mapper.Noop),
     33      ('lifetime', 'lifetime', mapper.Noop),
     34      ('encapsulation_mode', 'encapsulation_mode', mapper.Noop),
     35      ('transform_protocol', 'transform_protocol', mapper.Noop),
     36      ('project', 'tenant_id', mapper.Resource('project')),
     37  ]
     38
     39
     40 -class Resource(base.Resource):
     41      """Resource class for VPN IPSec policies in Networking V2 API"""
     42
     43 -    def update(self, name=UNDEF, description=UNDEF, auth_algorithm=UNDEF,
     44                 encryption_algorithm=UNDEF, pfs=UNDEF, lifetime=UNDEF,
     45                 encapsulation_mode=UNDEF, transform_protocol=UNDEF,
     46                 project=UNDEF):
     47          """
     48          Update properties of an IPSec policy
     49
     50          @keyword name: IPSec policy name
     51          @type name: str
     52          @keyword description: Description
     53          @type description: str
     54          @keyword auth_algorithm: Auth algorithm; only 'sha1'
     55          @type auth_algorithm: str
     56          @keyword encryption_algorithm: Encryption algorithm
     57          ('3des', 'aes-128', 'aes-192', ...)
     58          @type encryption_algorithm: str
     59          @keyword pfs: Perfect forward secrecy
     60          ('Group2', 'Group5', 'Group14', ...)
     61          @type pfs: str
     62          @keyword encapsulation_mode: Encapsulation mode
     63          'tunnel' or 'transport'
     64          @type encapsulation_mode: str
     65          @keyword lifetime: Life time; e.q.'3600seconds'
     66          @type lifetime: str
     67          @keyword transform_protocol: Transform protocol
     68          'ESP', 'AH', or 'AH-ESP'
     69          @type transform_protocol: str
     70          @keyword project: Project object
     71          @type project: yakumo.project.Resource
     72          @rtype: None
     73          """
     74          super(Resource, self).update(
     75              name=name,
     76              description=description,
     77              auth_algorithm=auth_algorithm,
     78              encryption_algorithm=encryption_algorithm,
     79              pfs=pfs,
     80              phase1_negotiation_mode=phase1_negotiation_mode,
     81              lifetime=lifetime,
     82              ike_version=ike_version,
     83              project=project)
     84
     85
     86 -class Manager(base.Manager):
     87      """Manager class for VPN IPSec policies in Networking V2 API"""
     88
     89      resource_class = Resource
     90      service_type = 'network'
     91      _attr_mapping = ATTRIBUTE_MAPPING
     92      _json_resource_key = 'ike_policy'
     93      _json_resources_key = 'ike_policies'
     94      _url_resource_path = '/v2.0/vpn/ike_policies'
     95
     96 -    def create(self, name=UNDEF, description=UNDEF, auth_algorithm=UNDEF,
     97                 encryption_algorithm=UNDEF, pfs=UNDEF, lifetime=UNDEF,
     98                 encapsulation_mode=UNDEF, transform_protocol=UNDEF,
     99                 project=UNDEF):
    100          """
    101          Create an IPSec policy
    102
    103          @keyword name: IPSec policy name
    104          @type name: str
    105          @keyword description: Description
    106          @type description: str
    107          @keyword auth_algorithm: Auth algorithm; only 'sha1'
    108          @type auth_algorithm: str
    109          @keyword encryption_algorithm: Encryption algorithm
    110          ('3des', 'aes-128', 'aes-192', ...)
    111          @type encryption_algorithm: str
    112          @keyword pfs: Perfect forward secrecy
    113          ('Group2', 'Group5', 'Group14', ...)
    114          @type pfs: str
    115          @keyword encapsulation_mode: Encapsulation mode
    116          'tunnel' or 'transport'
    117          @type encapsulation_mode: str
    118          @keyword lifetime: Life time; e.q.'3600seconds'
    119          @type lifetime: str
    120          @keyword transform_protocol: Transform protocol
    121          'ESP', 'AH', or 'AH-ESP'
    122          @type transform_protocol: str
    123          @keyword project: Project object
    124          @type project: yakumo.project.Resource
    125          @return: Created policy
    126          @rtype: yakumo.neutron.v2.vpn.ipsec_policy.Resource
    127          """
    128          return super(Manager, self).create(
    129              name=name,
    130              description=description,
    131              auth_algorithm=auth_algorithm,
    132              encryption_algorithm=encryption_algorithm,
    133              pfs=pfs,
    134              phase1_negotiation_mode=phase1_negotiation_mode,
    135              lifetime=lifetime,
    136              ike_version=ike_version,
    137              project=project)
    138