summaryrefslogtreecommitdiffstats
path: root/ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-05 16:18:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-05 16:18:34 +0000
commit3667197efb7b18ec842efd504785965911f8ac4b (patch)
tree0b986a4bc6879d080b100666a97cdabbc9ca1f28 /ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py
parentAdding upstream version 9.5.1+dfsg. (diff)
downloadansible-upstream/10.0.0+dfsg.tar.xz
ansible-upstream/10.0.0+dfsg.zip
Adding upstream version 10.0.0+dfsg.upstream/10.0.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py')
-rw-r--r--ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py221
1 files changed, 221 insertions, 0 deletions
diff --git a/ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py b/ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py
new file mode 100644
index 000000000..c839c324b
--- /dev/null
+++ b/ansible_collections/kaytus/ksmanage/plugins/modules/add_ldisk.py
@@ -0,0 +1,221 @@
+#!/usr/bin/python
+# -*- coding:utf-8 -*-
+
+# Copyright(C) 2023 Kaytus Inc. All Rights Reserved.
+# 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
+
+DOCUMENTATION = '''
+---
+module: add_ldisk
+version_added: "1.0.0"
+author:
+ - WangBaoshan (@ieisystem)
+short_description: Create logical disk
+description:
+ - Create logical disk on kaytus Server.
+notes:
+ - Does not support C(check_mode).
+options:
+ ctrl_id:
+ description:
+ - Raid controller ID.
+ - Required when controller type is LSI, PMC or MV.
+ type: int
+ level:
+ description:
+ - RAID Level, 0 - RAID0, 1 - RAID1, 5 - RAID5, 6 - RAID6, 10 - RAID10.
+ - Required when and controller type is LSI or PMC.
+ choices: [0, 1, 5, 6, 10]
+ type: int
+ size:
+ description:
+ - Strip Size, 0 - 32k, 1 - 64k, 2 - 128k, 3 - 256k, 4 - 512k, 5 - 1024k.
+ - Required when I(Info=None) and controller type is LSI, PMC or MV.
+ - When the controller type is MV, size is [0, 1].
+ - When the controller type is LSI or PMC, size is [1, 2, 3, 4, 5].
+ choices: [0, 1, 2, 3, 4, 5]
+ type: int
+ access:
+ description:
+ - Access Policy, 1 - Read Write, 2 - Read Only, 3 - Blocked.
+ - Required when controller type is LSI.
+ choices: [1, 2, 3]
+ type: int
+ r:
+ description:
+ - Read Policy, 1 - Read Ahead, 2 - No Read Ahead.
+ - Required when controller type is LSI.
+ choices: [1, 2]
+ type: int
+ w:
+ description:
+ - Write Policy, 1 - Write Through, 2 - Write Back, 3 - Write caching ok if bad BBU.
+ - Required when controller type is LSI.
+ choices: [1, 2, 3]
+ type: int
+ io:
+ description:
+ - IO Policy, 1 - Direct IO, 2 - Cached IO.
+ - Required when controller type is LSI.
+ choices: [1, 2]
+ type: int
+ cache:
+ description:
+ - Drive Cache, 1 - Unchanged, 2 - Enabled, 3 - Disabled.
+ - Required when controller type is LSI.
+ choices: [1, 2, 3]
+ type: int
+ init:
+ description:
+ - Init State, 1 - No Init, 2 - Quick Init, 3 - Full Init.
+ - Required when controller type is LSI.
+ choices: [1, 2, 3]
+ type: int
+ select:
+ description:
+ - Select Size, from 1 to 100.
+ - Required when controller type is LSI.
+ type: int
+ slot:
+ description:
+ - Slot Num, input multiple slotNumber like 0, 1, 2....
+ - Required when controller type is LSI or PMC.
+ type: list
+ elements: int
+ accelerator:
+ description:
+ - Driver accelerator, 1 - 1h, 2 - 2h, 3 - 3h.
+ - Required when controller type is PMC.
+ choices: [1, 2, 3]
+ type: int
+ vname:
+ description:
+ - Virtual drive name.
+ - Required when controller type is PMC or server model is M7.
+ - Required when controller type is MV.
+ type: str
+extends_documentation_fragment:
+ - kaytus.ksmanage.ksmanage
+'''
+
+EXAMPLES = '''
+- name: Add ldisk test
+ hosts: ksmanage
+ connection: local
+ gather_facts: false
+ vars:
+ ksmanage:
+ host: "{{ ansible_ssh_host }}"
+ username: "{{ username }}"
+ password: "{{ password }}"
+
+ tasks:
+
+ - name: "Add LSI ldisk"
+ kaytus.ksmanage.add_ldisk:
+ ctrl_id: 0
+ level: 1
+ size: 1
+ access: 1
+ r: 1
+ w: 1
+ io: 1
+ cache: 1
+ init: 2
+ select: 10
+ slot: 0, 1
+ provider: "{{ ksmanage }}"
+
+ - name: "Add PMC ldisk"
+ kaytus.ksmanage.add_ldisk:
+ ctrl_id: 0
+ level: 1
+ size: 1
+ accelerator: 1
+ slot: 0, 1
+ vname: "test"
+ provider: "{{ ksmanage }}"
+
+ - name: "Add MV ldisk"
+ kaytus.ksmanage.add_ldisk:
+ ctrl_id: 0
+ size: 1
+ vname: "test"
+ provider: "{{ ksmanage }}"
+'''
+
+RETURN = '''
+message:
+ description: Messages returned after module execution.
+ returned: always
+ type: str
+state:
+ description: Status after module execution.
+ returned: always
+ type: str
+changed:
+ description: Check to see if a change was made on the device.
+ returned: always
+ type: bool
+'''
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible_collections.kaytus.ksmanage.plugins.module_utils.ksmanage import (ksmanage_argument_spec, get_connection)
+
+
+class Disk(object):
+ def __init__(self, argument_spec):
+ self.spec = argument_spec
+ self.module = None
+ self.init_module()
+ self.results = dict()
+
+ def init_module(self):
+ """Init module object"""
+
+ self.module = AnsibleModule(
+ argument_spec=self.spec, supports_check_mode=False)
+
+ def run_command(self):
+ self.module.params['subcommand'] = 'addldisk'
+ self.results = get_connection(self.module)
+ if self.results['State'] == 'Success':
+ self.results['changed'] = True
+
+ def show_result(self):
+ """Show result"""
+ self.module.exit_json(**self.results)
+
+ def work(self):
+ """Worker"""
+ self.run_command()
+ self.show_result()
+
+
+def main():
+ argument_spec = dict(
+ ctrl_id=dict(type='int', required=False),
+ level=dict(type='int', required=False, choices=[0, 1, 5, 6, 10]),
+ size=dict(type='int', required=False, choices=[0, 1, 2, 3, 4, 5]),
+ access=dict(type='int', required=False, choices=[1, 2, 3]),
+ r=dict(type='int', required=False, choices=[1, 2]),
+ w=dict(type='int', required=False, choices=[1, 2, 3]),
+ io=dict(type='int', required=False, choices=[1, 2]),
+ cache=dict(type='int', required=False, choices=[1, 2, 3]),
+ init=dict(type='int', required=False, choices=[1, 2, 3]),
+ select=dict(type='int', required=False),
+ slot=dict(type='list', elements='int', required=False),
+ accelerator=dict(type='int', required=False, choices=[1, 2, 3]),
+ vname=dict(type='str', required=False),
+ )
+ argument_spec.update(ksmanage_argument_spec)
+ disk_obj = Disk(argument_spec)
+ disk_obj.work()
+
+
+if __name__ == '__main__':
+ main()