Coverage for plugins/modules/purefb_eula.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) 2021, 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_eula 

20version_added: '1.6.0' 

21short_description: Sign Everpure FlashBlade EULA 

22description: 

23- Sign the FlashBlade EULA for Day 0 config, or change signatory. 

24author: 

25- Everpure Ansible Team (@sdodsley) <pure-ansible-team@everpuredata.com> 

26options: 

27 company: 

28 description: 

29 - Full legal name of the entity. 

30 - The value must be between 1 and 64 characters in length. 

31 type: str 

32 required: true 

33 name: 

34 description: 

35 - Full legal name of the individual at the company who has the authority to accept the terms of the agreement. 

36 - The value must be between 1 and 64 characters in length. 

37 type: str 

38 required: true 

39 title: 

40 description: 

41 - Individual's job title at the company. 

42 - The value must be between 1 and 64 characters in length. 

43 type: str 

44 required: true 

45extends_documentation_fragment: 

46- everpure.flashblade.everpure.fb 

47""" 

48 

49EXAMPLES = r""" 

50- name: Sign EULA for FlashBlade 

51 everpure.flashblade.purefb_eula: 

52 company: "ACME Storage, Inc." 

53 name: "Fred Bloggs" 

54 title: "Storage Manager" 

55 fb_url: 10.10.10.2 

56 api_token: e31060a7-21fc-e277-6240-25983c6c4592 

57""" 

58 

59RETURN = r""" 

60""" 

61 

62HAS_PYPURECLIENT = True 

63try: 

64 from pypureclient.flashblade import Eula, EulaSignature 

65except ImportError: 

66 HAS_PYPURECLIENT = False 

67 

68 

69from ansible.module_utils.basic import AnsibleModule 

70from ansible_collections.everpure.flashblade.plugins.module_utils.purefb import ( 

71 get_system, 

72 purefb_argument_spec, 

73) 

74 

75 

76def set_eula(module, blade): 

77 """Sign EULA""" 

78 changed = False 

79 current_eula = list(blade.get_arrays_eula().items)[0].signature 

80 if not current_eula.accepted: 

81 if ( 

82 current_eula.company != module.params["company"] 

83 or current_eula.title != module.params["title"] 

84 or current_eula.name != module.params["name"] 

85 ): 

86 changed = True 

87 if not module.check_mode: 

88 signature = EulaSignature( 

89 company=module.params["company"], 

90 title=module.params["title"], 

91 name=module.params["name"], 

92 ) 

93 eula_body = Eula(signature=signature) 

94 rc = blade.patch_arrays_eula(eula=eula_body) 

95 if rc.status_code != 200: 

96 module.fail_json(msg="Signing EULA failed") 

97 module.exit_json(changed=changed) 

98 

99 

100def main(): 

101 argument_spec = purefb_argument_spec() 

102 argument_spec.update( 

103 dict( 

104 company=dict(type="str", required=True), 

105 name=dict(type="str", required=True), 

106 title=dict(type="str", required=True), 

107 ) 

108 ) 

109 

110 module = AnsibleModule(argument_spec, supports_check_mode=True) 

111 

112 blade = get_system(module) 

113 if not HAS_PYPURECLIENT: 

114 module.fail_json(msg="py-pure-client SDK required to support this module.") 

115 blade = get_system(module) 

116 set_eula(module, blade) 

117 module.exit_json(changed=False) 

118 

119 

120if __name__ == "__main__": 

121 main()