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

1#!/usr/bin/python 

2# -*- coding: utf-8 -*- 

3 

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) 

6 

7from __future__ import absolute_import, division, print_function 

8 

9__metaclass__ = type 

10 

11ANSIBLE_METADATA = { 

12 "metadata_version": "1.1", 

13 "status": ["preview"], 

14 "supported_by": "community", 

15} 

16 

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""" 

42 

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""" 

51 

52RETURN = r""" 

53""" 

54 

55 

56HAS_PYPURECLIENT = True 

57try: 

58 from pypureclient.flashblade import Array 

59except ImportError: 

60 HAS_PYPURECLIENT = False 

61 

62 

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) 

72 

73 

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 ) 

86 

87 module.exit_json(changed=changed) 

88 

89 

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 ) 

98 

99 module = AnsibleModule(argument_spec, supports_check_mode=True) 

100 

101 if not HAS_PYPURECLIENT: 

102 module.fail_json(msg="py-pure-client sdk is required for this module") 

103 

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) 

114 

115 module.exit_json(changed=False) 

116 

117 

118if __name__ == "__main__": 

119 main()