How are you arranging for ansible to be in your PYTHONPATH? -Toshio
On Nov 2, 2017 5:58 AM, "Jae Kim" <[email protected]> wrote: > Hi > > > > When I run the following command > > > > pytest -r a -fulltrace --color yest my_new_test_module.py > > > > I get the following error message. > > > > ============================= test session starts > ============================== > platform linux -- Python 3.4.5, pytest-3.2.3, py-1.4.34, pluggy-0.4.0 > rootdir: /root/work/mymoduletests, inifile: > collected 0 items / 1 errors > > =========================== short test summary info > ============================ > ERROR my_new_test_module.py > ==================================== ERRORS ============================== > ====== > ____________________ ERROR collecting my_new_test_module.py > ____________________ > [31mImportError while importing test module '/root/work/mymoduletests/my_n > ew_test_module.py'. > Hint: make sure your test modules/packages have valid Python names. > Traceback: > my_new_test_module.py:63: in <module> > from ansible.module_utils.basic import AnsibleModule > E ImportError: No module named 'ansible' [0m > !!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection > !!!!!!!!!!!!!!!!!!!! > =========================== 1 error in 0.13 seconds > ============================ > > > > > > my_new_test_module.py is > > > > #!/usr/bin/python > > ANSIBLE_METADATA = { > 'metadata_version': '1.1', > 'status': ['preview'], > 'supported_by': 'community' > } > > DOCUMENTATION = ''' > --- > module: my_sample_module > > short_description: This is my sample module > > version_added: "2.4" > > description: > - "This is my longer description explaining my sample module" > > options: > name: > description: > - This is the message to send to the sample module > required: true > new: > description: > - Control to demo if the result of this module is changed or > not > required: false > > extends_documentation_fragment: > - azure > > author: > - Your Name (@yourhandle) > ''' > > EXAMPLES = ''' > # Pass in a message > - name: Test with a message > my_new_test_module: > name: hello world > > # pass in a message and have changed true > - name: Test with a message and changed output > my_new_test_module: > name: hello world > new: true > > # fail the module > - name: Test failure of the module > my_new_test_module: > name: fail me > ''' > > RETURN = ''' > original_message: > description: The original name param that was passed in > type: str > message: > description: The output message that the sample module generates > ''' > > from ansible.module_utils.basic import AnsibleModule > > def run_module(): > # define the available arguments/parameters that a user can pass to > # the module > module_args = dict( > name=dict(type='str', required=True), > new=dict(type='bool', required=False, default=False) > ) > > # seed the result dict in the object > # we primarily care about changed and state > # change is if this module effectively modified the target > # state will include any data that you want your module to pass back > # for consumption, for example, in a subsequent task > result = dict( > changed=False, > original_message='', > message='' > ) > > # the AnsibleModule object will be our abstraction working with Ansible > # this includes instantiation, a couple of common attr would be the > # args/params passed to the execution, as well as if the module > # supports check mode > module = AnsibleModule( > argument_spec=module_args, > supports_check_mode=True > ) > > # if the user is working with this module in only check mode we do not > # want to make any changes to the environment, just return the current > # state with no modifications > if module.check_mode: > return result > > # manipulate or modify the state as needed (this is going to be the > # part where your module will do what it needs to do) > result['original_message'] = module.params['name'] > result['message'] = 'goodbye' > > # use whatever logic you need to determine whether or not this module > # made any modifications to your target > if module.params['new']: > result['changed'] = True > > # during the execution of the module, if there is an exception or a > # conditional state that effectively causes a failure, run > # AnsibleModule.fail_json() to pass in the message and the result > if module.params['name'] == 'fail me': > module.fail_json(msg='You requested this to fail', **result) > > # in the event of a successful module execution, you will want to > # simple AnsibleModule.exit_json(), passing the key/value results > module.exit_json(**result) > > def main(): > run_module() > > if __name__ == '__main__': > main() > > -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/ansible-project/449282ef-7e1b-4112-bf9f-7c50af1ea322%40googlegroups. > com > <https://groups.google.com/d/msgid/ansible-project/449282ef-7e1b-4112-bf9f-7c50af1ea322%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAPrnkaSZqfLW1Rmz5SuQM3Pcg8O5%3DYBO919BRELq43gsog4cCA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
