def main(): fields = { "path": { "required": True, "type": "str" }, "commitMessage": { "required": False, "type": "str" } } module = AnsibleModule(argument_spec=fields) path = module.get_bin_path('git', True) result = dict(changed=False, warnings=list()) try: response = git_status(module, path, module.params['path']) if response == "": result.update(changed=False) else: msg = module.params['commitMessage'] or datetime.datetime.now() commitResponse = git_commit(module, path, module.params['path'], msg) result.update(changed=True, message=to_native(commitResponse)) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(**result)
def requires_update(encoder, obj_old, obj_new): """Compares encoded copies of the existing and new objects to assertain whether an update is required. Only compares fields which exist in the new object. """ assert callable(encoder) assert isinstance(obj_old, dict) assert isinstance(obj_new, dict) obj_new = hook_trans_compare(copy.deepcopy(obj_new)) assert isinstance(obj_new, dict) try: old_encoded, new_encoded = encoder(obj_old), encoder(obj_new) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) import json with open('/tmp/x.json', 'a') as f: json.dump([old_encoded, new_encoded], f) assert isinstance(old_encoded, dict) assert isinstance(new_encoded, dict) try: return cmp_recursive(old_encoded, new_encoded) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc())
def git_commit(module, git_path, repo_path, commitMsg): cmd = "%s add * " % (git_path) rc, stdout, stderr = module.run_command(cmd, cwd=repo_path) if stderr != "": raise AnsibleError(" git add error: %s " % to_native(stderr)) cmd = "%s commit -m \"%s\"" % (git_path, commitMsg) rc, stdout, stderr = module.run_command(cmd, cwd=repo_path) if stderr != "": raise AnsibleError(" git commit error: %s " % to_native(stderr)) return stdout
def download_s3str(module, s3, bucket, obj, version=None, validate=True): if module.check_mode: module.exit_json(msg="GET operation skipped - running in check mode", changed=True) try: if version: contents = to_native(s3.get_object(Bucket=bucket, Key=obj, VersionId=version)["Body"].read()) else: contents = to_native(s3.get_object(Bucket=bucket, Key=obj)["Body"].read()) module.exit_json(msg="GET operation complete", contents=contents, changed=True) except botocore.exceptions.ClientError as e: module.fail_json(msg="Failed while getting contents of object %s as a string." % obj, exception=traceback.format_exc(), **camel_dict_to_snake_dict(e.response))
def create_azure_netapp_volume(self): """ Create a volume for the given Azure NetApp Account :return: None """ volume_body = Volume( location=self.parameters['location'], creation_token=self.parameters['file_path'], service_level=self.parameters['service_level'], subnet_id= '/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s' % (self.client.config.subscription_id, self.parameters['resource_group'], self.parameters['virtual_network'], self.parameters['subnet_id'])) try: result = self.client.volumes.create_or_update( body=volume_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['account_name'], pool_name=self.parameters['pool_name'], volume_name=self.parameters['name']) # waiting till the status turns Succeeded while result.done() is not True: result.result(10) except CloudError as error: self.module.fail_json( msg='Error creating volume %s for Azure NetApp account %s: %s' % (self.parameters['name'], self.parameters['account_name'], to_native(error)), exception=traceback.format_exc())
def main(): module = ov.new_module(ARG_SPEC) # Handle exception importing 'pyopsview' if ov.PYOV_IMPORT_EXC is not None: module.fail_json(msg=ov.PYOV_IMPORT_EXC[0], exception=ov.PYOV_IMPORT_EXC[1]) verify = module.params['verify_ssl'] if not os.path.exists(verify): verify = module.boolean(verify) try: opsview_client = ov.new_opsview_client( username=module.params['username'], password=module.params['password'], endpoint=module.params['endpoint'], verify=verify, ) summary = { 'changed': True, 'token': opsview_client.token, 'opsview_version': opsview_client.version } except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) module.exit_json(**summary)
def main(): fields = { "asn32Safe": { "default": False, "type": "bool" }, "IPv": { "required": True, "type": "str", "choices": ['4', '6'] }, "aggregate": { "default": False, "type": "bool" }, "asSet": { "required": True, "type": "str" } } module = AnsibleModule(argument_spec=fields) result = dict(changed=False, warnings=list()) try: path = module.get_bin_path('bgpq4', False) or module.get_bin_path( 'bgpq3', False) if path is None: raise AnsibleError("BGPq3 ou BGPq4 not found") response = bgpq3Query(module, path) result.update(changed=True, message=response) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(**result)
def init_client(username, endpoint, password, **kwds): try: return OpsviewClient(username=username, endpoint=endpoint, password=password, **kwds) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc())
def main(): module = ov.new_module(ARG_SPEC) # Handle exception importing 'pyopsview' if ov.PYOV_IMPORT_EXC is not None: module.fail_json(msg=ov.PYOV_IMPORT_EXC[0], exception=ov.PYOV_IMPORT_EXC[1]) try: summary = ov.config_module_main(module, 'hostgroups') except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) module.exit_json(**summary)
def main(): module = ov.new_module(ARG_SPEC, always_include=ARG_KEYS) # Handle exception importing 'pyopsview' if ov.PYOV_IMPORT_EXC is not None: module.fail_json(msg=ov.PYOV_IMPORT_EXC[0], exception=ov.PYOV_IMPORT_EXC[1]) try: summary = module_main(module) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) module.exit_json(**summary)
def delete_azure_netapp_account(self): """ Delete an Azure NetApp Account :return: None """ try: self.netapp_client.accounts.delete( resource_group_name=self.parameters['resource_group'], account_name=self.parameters['name']) except CloudError as error: self.module.fail_json( msg='Error deleting Azure NetApp account %s: %s' % (self.parameters['name'], to_native(error)), exception=traceback.format_exc())
def create_azure_netapp_account(self): """ Create an Azure NetApp Account :return: None """ account_body = NetAppAccount(location=self.parameters['location']) try: self.netapp_client.accounts.create_or_update( body=account_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['name']) except CloudError as error: self.module.fail_json( msg='Error creating Azure NetApp account %s: %s' % (self.parameters['name'], to_native(error)), exception=traceback.format_exc())
def update_azure_netapp_account(self, modify): """ Create an Azure NetApp Account :return: None """ account_body = self.create_account_request_body(modify) try: self.get_method('accounts', 'update')( body=account_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['name']) except (CloudError, AzureError) as error: self.module.fail_json( msg='Error creating Azure NetApp account %s: %s' % (self.parameters['name'], to_native(error)), exception=traceback.format_exc())
def main(): module = ov.new_module(ARG_SPEC) # Handle exception importing 'pyopsview' if ov.PYOV_IMPORT_EXC is not None: module.fail_json(msg=ov.PYOV_IMPORT_EXC[0], exception=ov.PYOV_IMPORT_EXC[1]) try: summary = ov.config_module_main( module, 'monitoringservers', pre_compare_hook=hook_trans_compare, payload_finalize_hook=hook_trans_payload ) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) module.exit_json(**summary)
def client(self): host = self.module.params.get('host') port = self.module.params.get('port') client = self._client(host, port) if self.mongodb_auth_arg_spec['name'] and \ self.mongodb_auth_arg_spec['password']: try: client.admin.authenticate(**self.mongodb_auth_arg_spec) except OperationFailure as e: msg = to_native(e) self.fail_json(msg=msg) self.check_compatibility(client) return client
def main(): module = ov.new_module(ARG_SPEC) # Handle exception importing 'pyopsview' if ov.PYOV_IMPORT_EXC is not None: module.fail_json(msg=ov.PYOV_IMPORT_EXC[0], exception=ov.PYOV_IMPORT_EXC[1]) try: summary = ov.config_module_main( module, 'hosts', get_params={'include_encrypted': '1'}, pre_compare_hook=hook_trans_payload, payload_finalize_hook=hook_trans_payload) except Exception as e: module.fail_json(msg=to_native(e), exception=traceback.format_exc()) module.exit_json(**summary)
def main(): fields = { "path": {"required": True, "type": "str"} } module = AnsibleModule(argument_spec=fields) path = module.get_bin_path('git', True) result = dict(changed=False, warnings=list()) try: response = git_status(module, path, module.params['path']) modified = re.search(r'\[ahead \d+\]', response) if modified is None: result.update(changed=False) else: pushResponse = git_push(module, path, module.params['path']) result.update(changed=True, message=pushResponse) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(**result)
def create_azure_netapp_snapshot(self): """ Create a snapshot for the given Azure NetApp Account :return: None """ snapshot_body = Snapshot(location=self.parameters['location']) try: self.netapp_client.snapshots.create( body=snapshot_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['account_name'], pool_name=self.parameters['pool_name'], volume_name=self.parameters['volume_name'], snapshot_name=self.parameters['name']) except CloudError as error: self.module.fail_json( msg='Error creating snapshot %s for Azure NetApp account %s: %s' % (self.parameters['name'], self.parameters['account_name'], to_native(error)), exception=traceback.format_exc())
def create_azure_netapp_capacity_pool(self): """ Create a capacity pool for the given Azure NetApp Account :return: None """ capacity_pool_body = CapacityPool(location=self.parameters['location'], size=self.parameters['size'] * SIZE_POOL) try: self.netapp_client.pools.create_or_update( body=capacity_pool_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['account_name'], pool_name=self.parameters['name']) except CloudError as error: self.module.fail_json( msg= 'Error creating capacity pool %s for Azure NetApp account %s: %s' % (self.parameters['name'], self.parameters['account_name'], to_native(error)), exception=traceback.format_exc())
def modify_azure_netapp_capacity_pool(self, modify): """ Modify a capacity pool for the given Azure NetApp Account :return: None """ capacity_pool_body = CapacityPool( location=self.parameters['location'], service_level=self.parameters['service_level'], size=self.parameters['size'] * SIZE_POOL) try: self.get_method('pools', 'update')( body=capacity_pool_body, resource_group_name=self.parameters['resource_group'], account_name=self.parameters['account_name'], pool_name=self.parameters['name']) except (CloudError, AzureError) as error: self.module.fail_json( msg= 'Error modifying capacity pool %s for Azure NetApp account %s: %s' % (self.parameters['name'], self.parameters['account_name'], to_native(error)), exception=traceback.format_exc())