Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pluribus Networks module for connection stat settings with UT's #50186

Merged
merged 2 commits into from
Jan 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
269 changes: 269 additions & 0 deletions lib/ansible/modules/network/netvisor/pn_connection_stats_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
#!/usr/bin/python
# Copyright: (c) 2018, Pluribus Networks
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import absolute_import, division, print_function
__metaclass__ = type


ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
'supported_by': 'community'}


DOCUMENTATION = """
---
module: pn_connection_stats_settings
author: "Pluribus Networks (@rajaspachipulusu17)"
version_added: "2.8"
short_description: CLI command to modify connection-stats-settings
description:
- This module can be used to modify the settings for collecting statistical
data about connections.
options:
pn_cliswitch:
description:
- Target switch to run the CLI on.
required: False
type: str
state:
description:
- State the action to perform. Use C(update) to modify the
connection-stats-settings.
required: True
type: str
choices: ['update']
pn_enable:
description:
- Enable or disable collecting connections statistics.
required: False
type: bool
pn_connection_backup_enable:
description:
- Enable backup for connection statistics collection.
required: False
type: bool
pn_client_server_stats_max_memory:
description:
- maximum memory for client server statistics.
required: False
type: str
pn_connection_stats_log_disk_space:
description:
- disk-space allocated for statistics (including rotated log files).
required: False
type: str
pn_client_server_stats_log_enable:
description:
- Enable or disable statistics.
required: False
type: bool
pn_service_stat_max_memory:
description:
- maximum memory allowed for service statistics.
required: False
type: str
pn_connection_stats_log_interval:
description:
- interval to collect statistics.
required: False
type: str
pn_fabric_connection_backup_interval:
description:
- backup interval for fabric connection statistics collection.
required: False
type: str
pn_connection_backup_interval:
description:
- backup interval for connection statistics collection.
required: False
type: str
pn_connection_stats_log_enable:
description:
- enable or disable statistics.
required: False
type: bool
pn_fabric_connection_max_memory:
description:
- maximum memory allowed for fabric connection statistics.
required: False
type: str
pn_fabric_connection_backup_enable:
description:
- enable backup for fabric connection statistics collection.
required: False
type: bool
pn_client_server_stats_log_disk_space:
description:
- disk-space allocated for statistics (including rotated log files).
required: False
type: str
pn_connection_max_memory:
description:
- maximum memory allowed for connection statistics.
required: False
type: str
pn_connection_stats_max_memory:
description:
- maximum memory allowed for connection statistics.
required: False
type: str
pn_client_server_stats_log_interval:
description:
- interval to collect statistics.
required: False
type: str
"""

EXAMPLES = """
- name: "Modify connection stats settings"
pn_connection_stats_settings:
pn_cliswitch: "sw01"
state: "update"
pn_enable: False
pn_fabric_connection_max_memory: "1000"

- name: "Modify connection stats settings"
pn_connection_stats_settings:
pn_cliswitch: "sw01"
state: "update"
pn_enable: True
"""

RETURN = """
command:
description: the CLI command run on the target node.
returned: always
type: str
stdout:
description: set of responses from the connection-stats-settings command.
returned: always
type: list
stderr:
description: set of error responses from the connection-stats-settings
command.
returned: on error
type: list
changed:
description: indicates whether the CLI caused changes on the target.
returned: always
type: bool
"""

from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.network.netvisor.pn_nvos import pn_cli, run_cli, booleanArgs


def main():
""" This section is for arguments parsing """

state_map = dict(
update='connection-stats-settings-modify'
)

module = AnsibleModule(
argument_spec=dict(
pn_cliswitch=dict(required=False, type='str'),
state=dict(required=True, type='str',
choices=state_map.keys()),
pn_enable=dict(required=False, type='bool'),
pn_connection_backup_enable=dict(required=False, type='bool'),
pn_client_server_stats_max_memory=dict(required=False, type='str'),
pn_connection_stats_log_disk_space=dict(required=False,
type='str'),
pn_client_server_stats_log_enable=dict(required=False,
type='bool'),
pn_service_stat_max_memory=dict(required=False, type='str'),
pn_connection_stats_log_interval=dict(required=False, type='str'),
pn_fabric_connection_backup_interval=dict(required=False,
type='str'),
pn_connection_backup_interval=dict(required=False, type='str'),
pn_connection_stats_log_enable=dict(required=False, type='bool'),
pn_fabric_connection_max_memory=dict(required=False, type='str'),
pn_fabric_connection_backup_enable=dict(required=False,
type='bool'),
pn_client_server_stats_log_disk_space=dict(required=False,
type='str'),
pn_connection_max_memory=dict(required=False, type='str'),
pn_connection_stats_max_memory=dict(required=False, type='str'),
pn_client_server_stats_log_interval=dict(required=False,
type='str'),
),
required_one_of=[['pn_enable', 'pn_connection_backup_enable',
'pn_client_server_stats_max_memory',
'pn_connection_stats_log_disk_space',
'pn_client_server_stats_log_enable',
'pn_service_stat_max_memory',
'pn_connection_stats_log_interval',
'pn_connection_backup_interval',
'pn_connection_stats_log_enable',
'pn_fabric_connection_max_memory',
'pn_fabric_connection_backup_enable',
'pn_client_server_stats_log_disk_space',
'pn_connection_max_memory',
'pn_connection_stats_max_memory',
'pn_client_server_stats_log_interval']]
)

# Accessing the arguments
cliswitch = module.params['pn_cliswitch']
state = module.params['state']
enable = module.params['pn_enable']
connection_backup_enable = module.params['pn_connection_backup_enable']
client_server_stats_max_memory = module.params['pn_client_server_stats_max_memory']
connection_stats_log_disk_space = module.params['pn_connection_stats_log_disk_space']
client_server_stats_log_enable = module.params['pn_client_server_stats_log_enable']
service_stat_max_memory = module.params['pn_service_stat_max_memory']
connection_stats_log_interval = module.params['pn_connection_stats_log_interval']
fabric_connection_backup_interval = module.params['pn_fabric_connection_backup_interval']
connection_backup_interval = module.params['pn_connection_backup_interval']
connection_stats_log_enable = module.params['pn_connection_stats_log_enable']
fabric_connection_max_memory = module.params['pn_fabric_connection_max_memory']
fabric_connection_backup_enable = module.params['pn_fabric_connection_backup_enable']
client_server_stats_log_disk_space = module.params['pn_client_server_stats_log_disk_space']
connection_max_memory = module.params['pn_connection_max_memory']
connection_stats_max_memory = module.params['pn_connection_stats_max_memory']
client_server_stats_log_interval = module.params['pn_client_server_stats_log_interval']

command = state_map[state]

# Building the CLI command string
cli = pn_cli(module, cliswitch)

if command == 'connection-stats-settings-modify':
cli += ' %s ' % command

cli += booleanArgs(enable, 'enable', 'disable')
cli += booleanArgs(connection_backup_enable, 'connection-backup-enable', 'connection-backup-disable')
cli += booleanArgs(client_server_stats_log_enable, 'client-server-stats-log-enable', 'client-server-stats-log-disable')
cli += booleanArgs(connection_stats_log_enable, 'connection-stats-log-enable', 'connection-stats-log-disable')
cli += booleanArgs(fabric_connection_backup_enable, 'fabric-connection-backup-enable', 'fabric-connection-backup-disable')

if client_server_stats_max_memory:
cli += ' client-server-stats-max-memory ' + client_server_stats_max_memory
if connection_stats_log_disk_space:
cli += ' connection-stats-log-disk-space ' + connection_stats_log_disk_space
if service_stat_max_memory:
cli += ' service-stat-max-memory ' + service_stat_max_memory
if connection_stats_log_interval:
cli += ' connection-stats-log-interval ' + connection_stats_log_interval
if fabric_connection_backup_interval:
cli += ' fabric-connection-backup-interval ' + fabric_connection_backup_interval
if connection_backup_interval:
cli += ' connection-backup-interval ' + connection_backup_interval
if fabric_connection_max_memory:
cli += ' fabric-connection-max-memory ' + fabric_connection_max_memory
if client_server_stats_log_disk_space:
cli += ' client-server-stats-log-disk-space ' + client_server_stats_log_disk_space
if connection_max_memory:
cli += ' connection-max-memory ' + connection_max_memory
if connection_stats_max_memory:
cli += ' connection-stats-max-memory ' + connection_stats_max_memory
if client_server_stats_log_interval:
cli += ' client-server-stats-log-interval ' + client_server_stats_log_interval

run_cli(module, cli, state_map)


if __name__ == '__main__':
main()
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Copyright: (c) 2018, Pluribus Networks
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import (absolute_import, division, print_function)
__metaclass__ = type

import json

from units.compat.mock import patch
from ansible.modules.network.netvisor import pn_connection_stats_settings
from units.modules.utils import set_module_args
from .nvos_module import TestNvosModule, load_fixture


class TestAdminServiceModule(TestNvosModule):

module = pn_connection_stats_settings

def setUp(self):
self.mock_run_nvos_commands = patch('ansible.modules.network.netvisor.pn_connection_stats_settings.run_cli')
self.run_nvos_commands = self.mock_run_nvos_commands.start()

def tearDown(self):
self.mock_run_nvos_commands.stop()

def run_cli_patch(self, module, cli, state_map):
if state_map['update'] == 'connection-stats-settings-modify':
results = dict(
changed=True,
cli_cmd=cli
)
module.exit_json(**results)

def load_fixtures(self, commands=None, state=None, transport='cli'):
self.run_nvos_commands.side_effect = self.run_cli_patch

def test_connection_stats_settings_modify_t1(self):
set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': False,
'pn_fabric_connection_max_memory': '1000', 'state': 'update'})
result = self.execute_module(changed=True, state='update')
expected_cmd = '/usr/bin/cli --quiet -e --no-login-prompt switch sw01 connection-stats-settings-modify disable fabric-connection-max-memory 1000'
self.assertEqual(result['cli_cmd'], expected_cmd)

def test_connection_stats_settings_modify_t2(self):
set_module_args({'pn_cliswitch': 'sw01', 'pn_enable': True,
'pn_connection_stats_log_enable': False, 'state': 'update'})
result = self.execute_module(changed=True, state='update')
expected_cmd = '/usr/bin/cli --quiet -e --no-login-prompt switch sw01 connection-stats-settings-modify enable connection-stats-log-disable '
self.assertEqual(result['cli_cmd'], expected_cmd)

def test_connection_stats_settings_modify_t3(self):
set_module_args({'pn_cliswitch': 'sw01', 'pn_client_server_stats_max_memory': '60M',
'pn_client_server_stats_log_disk_space': '40M', 'state': 'update'})
result = self.execute_module(changed=True, state='update')
expected_cmd = '/usr/bin/cli --quiet -e --no-login-prompt switch sw01 connection-stats-settings-modify client-server-stats-max-memory '
expected_cmd += '60M client-server-stats-log-disk-space 40M'
self.assertEqual(result['cli_cmd'], expected_cmd)

def test_connection_stats_settings_modify_t4(self):
set_module_args({'pn_cliswitch': 'sw01', 'pn_connection_stats_max_memory': '45M',
'pn_fabric_connection_backup_enable': False, 'state': 'update'})
result = self.execute_module(changed=True, state='update')
expected_cmd = '/usr/bin/cli --quiet -e --no-login-prompt switch sw01 connection-stats-settings-modify '
expected_cmd += ' fabric-connection-backup-disable connection-stats-max-memory 45M'
self.assertEqual(result['cli_cmd'], expected_cmd)