Coverage for plugins/modules/purefb_bladename.py: 92%
38 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-10-30 17:06 -0400
« prev ^ index » next coverage.py v7.14.1, created at 2026-10-30 17:06 -0400
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
4# (c) 2018, Simon Dodsley (simon@everpuredata.com)
5# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
7from __future__ import absolute_import, division, print_function
9__metaclass__ = type
11ANSIBLE_METADATA = {
12 "metadata_version": "1.1",
13 "status": ["preview"],
14 "supported_by": "community",
15}
17DOCUMENTATION = r"""
18---
19module: purefb_bladename
20version_added: '1.0.0'
21short_description: Configure Everpure FlashBlade name
22description:
23- Configure name of Everpure FlashBlades.
24- Ideal for Day 0 initial configuration.
25author:
26- Everpure Ansible Team (@sdodsley) <pure-ansible-team@everpuredata.com>
27options:
28 state:
29 description:
30 - Set the FlashBlade name
31 type: str
32 default: present
33 choices: [ present ]
34 name:
35 description:
36 - Name of the FlashBlade. Must conform to correct naming schema.
37 type: str
38 required: true
39extends_documentation_fragment:
40- everpure.flashblade.everpure.fb
41"""
43EXAMPLES = r"""
44- name: Set new FlashBlade name
45 everpure.flashblade.purefb_bladename:
46 name: new-flashblade-name
47 state: present
48 fb_url: 10.10.10.2
49 api_token: e31060a7-21fc-e277-6240-25983c6c4592
50"""
52RETURN = r"""
53"""
56HAS_PYPURECLIENT = True
57try:
58 from pypureclient.flashblade import Array
59except ImportError:
60 HAS_PYPURECLIENT = False
63import re
64from ansible.module_utils.basic import AnsibleModule
65from ansible_collections.everpure.flashblade.plugins.module_utils.purefb import (
66 get_system,
67 purefb_argument_spec,
68)
69from ansible_collections.everpure.flashblade.plugins.module_utils.common import (
70 get_error_message,
71)
74def update_name(module, blade):
75 """Change aray name"""
76 changed = True
77 if not module.check_mode:
78 blade_settings = Array(name=module.params["name"])
79 res = blade.patch_arrays(array=blade_settings)
80 if res.status_code != 200:
81 module.fail_json(
82 msg="Failed to change array name to {0}. Error: {1}".format(
83 module.params["name"], get_error_message(res)
84 )
85 )
87 module.exit_json(changed=changed)
90def main():
91 argument_spec = purefb_argument_spec()
92 argument_spec.update(
93 dict(
94 name=dict(type="str", required=True),
95 state=dict(type="str", default="present", choices=["present"]),
96 )
97 )
99 module = AnsibleModule(argument_spec, supports_check_mode=True)
101 if not HAS_PYPURECLIENT:
102 module.fail_json(msg="py-pure-client sdk is required for this module")
104 blade = get_system(module)
105 pattern = re.compile("^[a-zA-Z0-9]([a-zA-Z0-9-]{0,54}[a-zA-Z0-9])?$")
106 if not pattern.match(module.params["name"]):
107 module.fail_json(
108 msg="FlashBlade name {0} does not conform to array name rules".format(
109 module.params["name"]
110 )
111 )
112 if module.params["name"] != list(blade.get_arrays().items)[0].name:
113 update_name(module, blade)
115 module.exit_json(changed=False)
118if __name__ == "__main__":
119 main()