|
|
|
@ -93,11 +93,16 @@ options:
|
|
|
|
|
- SharePoint 2010 (https)
|
|
|
|
|
- Vulnerability Assessment Baseline
|
|
|
|
|
- Wordpress
|
|
|
|
|
partition:
|
|
|
|
|
description:
|
|
|
|
|
- Device partition to manage resources on.
|
|
|
|
|
default: Common
|
|
|
|
|
extends_documentation_fragment: f5
|
|
|
|
|
requirements:
|
|
|
|
|
- f5-sdk
|
|
|
|
|
- f5-sdk >= 3.0.4
|
|
|
|
|
author:
|
|
|
|
|
- Wojciech Wypior (@wojtek0806)
|
|
|
|
|
- Tim Rupp (@caphrim007)
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
EXAMPLES = r'''
|
|
|
|
@ -283,10 +288,19 @@ class Parameters(AnsibleF5Parameters):
|
|
|
|
|
return dict(link=resource.selfLink)
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def full_path(self):
|
|
|
|
|
return self._fqdn_name(self.name)
|
|
|
|
|
|
|
|
|
|
def _templates_from_device(self):
|
|
|
|
|
collection = self.client.api.tm.asm.policy_templates_s.get_collection()
|
|
|
|
|
return collection
|
|
|
|
|
|
|
|
|
|
def _fqdn_name(self, value):
|
|
|
|
|
if value is not None and not value.startswith('/'):
|
|
|
|
|
return '/{0}/{1}'.format(self.partition, value)
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
def to_return(self):
|
|
|
|
|
result = {}
|
|
|
|
|
for returnable in self.returnables:
|
|
|
|
@ -538,7 +552,7 @@ class BaseManager(object):
|
|
|
|
|
|
|
|
|
|
def exists(self):
|
|
|
|
|
policies = self.client.api.tm.asm.policies_s.get_collection()
|
|
|
|
|
if any(p.name == self.want.name for p in policies):
|
|
|
|
|
if any(p.name == self.want.name and p.partition == self.want.partition for p in policies):
|
|
|
|
|
return True
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
@ -602,7 +616,9 @@ class BaseManager(object):
|
|
|
|
|
def update_on_device(self):
|
|
|
|
|
params = self.changes.api_params()
|
|
|
|
|
policies = self.client.api.tm.asm.policies_s.get_collection()
|
|
|
|
|
resource = next((p for p in policies if p.name == self.want.name), None)
|
|
|
|
|
name = self.want.name
|
|
|
|
|
partition = self.want.partition
|
|
|
|
|
resource = next((p for p in policies if p.name == name and p.partition == partition), None)
|
|
|
|
|
if resource:
|
|
|
|
|
if not params['active']:
|
|
|
|
|
resource.modify(**params)
|
|
|
|
@ -635,7 +651,7 @@ class BaseManager(object):
|
|
|
|
|
def read_current_from_device(self):
|
|
|
|
|
policies = self.client.api.tm.asm.policies_s.get_collection()
|
|
|
|
|
for policy in policies:
|
|
|
|
|
if policy.name == self.want.name:
|
|
|
|
|
if policy.name == self.want.name and policy.partition == self.want.partition:
|
|
|
|
|
params = policy.attrs
|
|
|
|
|
params.update(dict(self_link=policy.selfLink))
|
|
|
|
|
return Parameters(params)
|
|
|
|
@ -647,7 +663,9 @@ class BaseManager(object):
|
|
|
|
|
name = os.path.split(self.want.file)[1]
|
|
|
|
|
tasks = self.client.api.tm.asm.tasks
|
|
|
|
|
result = tasks.import_policy_s.import_policy.create(
|
|
|
|
|
name=self.want.name, filename=name
|
|
|
|
|
name=self.want.name,
|
|
|
|
|
partition=self.want.partition,
|
|
|
|
|
filename=name
|
|
|
|
|
)
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
@ -662,19 +680,23 @@ class BaseManager(object):
|
|
|
|
|
tasks = self.client.api.tm.asm.tasks
|
|
|
|
|
result = tasks.import_policy_s.import_policy.create(
|
|
|
|
|
name=self.want.name,
|
|
|
|
|
partition=self.want.partition,
|
|
|
|
|
policyTemplateReference=self.want.template_link
|
|
|
|
|
)
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
def create_on_device(self):
|
|
|
|
|
result = self.client.api.tm.asm.policies_s.policy.create(
|
|
|
|
|
name=self.want.name
|
|
|
|
|
name=self.want.name,
|
|
|
|
|
partition=self.want.partition
|
|
|
|
|
)
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
def remove_from_device(self):
|
|
|
|
|
policies = self.client.api.tm.asm.policies_s.get_collection()
|
|
|
|
|
resource = next((p for p in policies if p.name == self.want.name), None)
|
|
|
|
|
name = self.want.name
|
|
|
|
|
partition = self.want.partition
|
|
|
|
|
resource = next((p for p in policies if p.name == name and p.partition == partition), None)
|
|
|
|
|
if resource:
|
|
|
|
|
resource.delete()
|
|
|
|
|
|
|
|
|
|