Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions acos_client/v30/slb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from acos_client.v30.slb.hm import HealthMonitor
from acos_client.v30.slb.server import Server
from acos_client.v30.slb.service_group import ServiceGroup
from acos_client.v30.slb.ssl_cert import SSLCert
from acos_client.v30.slb.template import Template
from acos_client.v30.slb.virtual_server import VirtualServer

Expand Down Expand Up @@ -56,5 +57,9 @@ def aflex_policy(self):
def common(self):
return SLBCommon(self.client)

@property
def ssl_cert(self):
return SSLCert(self.client)

def all(self):
return self._get('/slb/')
13 changes: 13 additions & 0 deletions acos_client/v30/slb/ssl_cert.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from __future__ import absolute_import
from __future__ import unicode_literals

from acos_client import errors as acos_errors
from acos_client.v30 import base


class SSLCert(base.BaseV30):
url_prefix = '/slb/ssl-cert/'

def oper(self, max_retries=None, timeout=None, *args, **kwargs):
return self._get(self.url_prefix + "/oper", max_retries=max_retries, timeout=timeout,
axapi_args=kwargs)
5 changes: 5 additions & 0 deletions acos_client/v30/slb/template/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import acos_client.v30.base as base

from acos_client.v30.slb.template.l7 import HTTPTemplate
from acos_client.v30.slb.template.l4 import TCPTemplate
from acos_client.v30.slb.template.persistence import CookiePersistence
from acos_client.v30.slb.template.persistence import SourceIpPersistence
from acos_client.v30.slb.template.ssl import ClientSSL
Expand Down Expand Up @@ -49,6 +50,10 @@ def server_ssl(self):
def http_template(self):
return HTTPTemplate(self.client)

@property
def tcp_template(self):
return TCPTemplate(self.client)

@property
def templates(self):
return Templates(self.client)
71 changes: 71 additions & 0 deletions acos_client/v30/slb/template/l4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 2015, Tobit Raff, A10 Networks.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from __future__ import absolute_import
from __future__ import unicode_literals
import six


from acos_client import errors as acos_errors
from acos_client.v30 import base


class BaseL4(base.BaseV30):

def get(self, name, **kwargs):
return self._get(self.url_prefix + name, **kwargs)

def exists(self, name):
try:
self.get(name)
return True
except acos_errors.NotFound:
return False

def _set(self, name, idle_timeout=120, reset_fwd=0, reset_rev=0, update=False, **kwargs):
# Unimplemented options:
# Everything except for insert_client_ip and request header insert.

obj_params = {
"name": name,
"idle-timeout": idle_timeout,
"reset-fwd": reset_fwd,
"reset-rev": reset_rev
}

params = {'%s' % self.prefix: {}}
for key, val in six.iteritems(obj_params):
# Filter out invalid, or unset keys
if val != "":
params['%s' % self.prefix][key] = val
if not update:
name = ''
self._post(self.url_prefix + name, params, **kwargs)

def create(self, name, idle_timeout=120, reset_fwd=0, reset_rev=0, **kwargs):
if self.exists(name):
raise acos_errors.Exists

self._set(name, idle_timeout, reset_fwd, reset_rev, **kwargs)

def update(self, name, idle_timeout=120, reset_fwd=0, reset_rev=0, **kwargs):
self._set(name, idle_timeout, reset_fwd, reset_rev, update=True, **kwargs)

def delete(self, name, **kwargs):
self._delete(self.url_prefix + name, **kwargs)


class TCPTemplate(BaseL4):

url_prefix = '/slb/template/tcp/'
prefix = 'tcp'
1 change: 1 addition & 0 deletions acos_client/v30/slb/virtual_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def _set(self, name, ip_address=None, arp_disable=False, description=None, vrid=
}
if self._is_ipv6(ip_address):
params['virtual-server']['ipv6-address'] = ip_address
params['virtual-server'].pop('ip-address')
else:
params['virtual-server']['ip-address'] = ip_address

Expand Down