Victory!  I'll add a few tests for invalid data and send in a pull request.

TEST_FLAGS="-t test_powershell_filter -i /etc/ansible/hosts" make test_winrm
ansible-playbook test_winrm.yml -i inventory.winrm -e 
@integration_config.yml  -v -t test_powershell_filter -i /etc/ansible/hosts
 [WARNING]: The version of gmp you have installed has a known issue 
regarding
timing vulnerabilities when used with pycrypto. If possible, you should 
update
it (i.e. yum update gmp).


PLAY [windows] 
****************************************************************

TASK: [test_powershell_filter | Convert yaml dict to powershell hash] 
*********
changed: [mdm-wsrv98.surescripts-dev.qa -> 127.0.0.1] => {"changed": true, 
"cmd": "echo '@{'This'='THIS';'Other'='OTHER';'That'='THAT';}'", "delta": 
"0:00:00.003494", "end": "2015-02-23 15:52:47.477128", "rc": 0, "start": 
"2015-02-23 15:52:47.473634", "stderr": "", "stdout": 
"@{This=THIS;Other=OTHER;That=THAT;}", "warnings": []}

TASK: [test_powershell_filter | Check that actual equals expected] 
************
ok: [mdm-wsrv98.surescripts-dev.qa] => {"msg": "all assertions passed"}



On Monday, February 23, 2015 at 3:37:03 PM UTC-6, Michael Perzel wrote:
>
> I changed my directory so that test_winrm was in the current directory. 
> But now I get an error message complaining it can't find the win_file 
> module. I assume its not finding my ansible-module checkout.
>
> ansible/test/integration> TEST_FLAGS="-t test_powershell_filter -i 
> /etc/ansible/hosts" make test_winrm
> ansible-playbook test_winrm.yml -i inventory.winrm -e 
> @integration_config.yml  -v -t test_powershell_filter -i /etc/ansible/hosts
>  [WARNING]: The version of gmp you have installed has a known issue 
> regarding
> timing vulnerabilities when used with pycrypto. If possible, you should 
> update
> it (i.e. yum update gmp).
>
> ERROR: win_file is not a legal parameter in an Ansible task or handler
> make: *** [test_winrm] Error 1
>
> I'll keep working through this... 
>
> On Monday, February 23, 2015 at 3:16:45 PM UTC-6, Michael Perzel wrote:
>>
>> I updated test_winrm.yml to include my role but when I tried to run 
>>
>> ansible-source/ansible> TEST_FLAGS="-t test_powershell_filter" make 
>> test_winrm
>> make: *** No rule to make target `test_winrm'.  Stop.
>>
>> Did you need to make changes to the Makefile in order for this to work?
>>
>> I updated my playbook. I had intended command: echo ....  I'll update 
>> test_win_script as well once I get this working.
>>
>>
>> On Monday, February 23, 2015 at 1:33:36 PM UTC-6, Chris Church wrote:
>>>
>>> Add your new test role to test/integration/test_winrm.yml with a 
>>> matching tag, then run:
>>>
>>> TEST_FLAGS="-t test_powershell_filter" make test_winrm
>>>
>>>
>>> It may be worthwhile to add to the test_win_script role to make sure 
>>> your filter works for passing parameters to a PowerShell script.
>>>
>>> Also, from your test playbook, there is no echo module - maybe you meant 
>>> to use command instead?
>>>
>>>
>>> On Mon, Feb 23, 2015 at 12:39 PM, Michael Perzel <[email protected]> 
>>> wrote:
>>>
>>>> This isn't directly related to this thread but it was discussed earlier 
>>>> so it was the best place for it.
>>>>
>>>> I created a filter that converts a yaml dict to a powershell hash. I'm 
>>>> trying to write some tests for it but I'm not sure how to run just my 
>>>> specific test. The file playbook and vars are 
>>>> at ansible/test/integration/roles/test_powershell_filter/ and the filter 
>>>> is 
>>>> at ansible/lib/ansible/runner/filter_plugins.
>>>>
>>>> Test playbook:
>>>> https://gist.github.com/perzizzle/8fb875895b218772eede
>>>> Test variables
>>>> https://gist.github.com/perzizzle/dc73025a2232f2da9b88
>>>> Filter
>>>> https://gist.github.com/perzizzle/117a6b139e2a97194d5f
>>>>
>>>> When I run "make tests" a whole bunch of them succeed but one fails 
>>>> related to postgres. Is it possible to run just my one test I've created?
>>>>
>>>> Thanks,
>>>>
>>>> On Wednesday, February 4, 2015 at 1:44:00 AM UTC-6, Chris Church wrote:
>>>>>
>>>>> Hi Michael,
>>>>>
>>>>> I had submitted a PR (https://github.com/ansible/ansible/pull/9602) 
>>>>> -- I'll see if I can get that merged soon.
>>>>>
>>>>>
>>>>> On Mon, Jan 26, 2015 at 2:47 PM, Michael Perzel <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> I ended up creating a new filter that could transform 
>>>>>>  
>>>>>>
>>>>>> installArguments:
>>>>>>
>>>>>>       key: value
>>>>>>
>>>>>>       key2: value2
>>>>>>
>>>>>> and return “@{'key2'='value2';'key'='value';}” I can share if anyone 
>>>>>> is interested.
>>>>>>
>>>>>> I just upgraded to ansible 1.8 and made your fix to powershell.py and 
>>>>>> winrm.py manually again. Is there any target version to get this into 
>>>>>> the 
>>>>>> main branch? I poked around in github but couldn't find way to see if 
>>>>>> you 
>>>>>> had submitted a pull request for this.
>>>>>>
>>>>>>
>>>>>> On Thursday, November 6, 2014 at 5:26:49 PM UTC-6, Chris Church wrote:
>>>>>>>
>>>>>>> Absolutely, just haven't had a chance to get back to Windows-related 
>>>>>>> things this week.
>>>>>>>
>>>>>>> On Thu, Nov 6, 2014 at 4:37 PM, Michael Perzel <[email protected]> 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Are you going to submit a pull request for this into devel? It 
>>>>>>>> definitely solved my issue.
>>>>>>>>
>>>>>>>> On Saturday, October 25, 2014 2:23:55 PM UTC-5, Chris Church wrote:
>>>>>>>>>
>>>>>>>>> Could you create a gist (https://gist.github.com/) with the 
>>>>>>>>> relevant lines from your inventory variables, playbook and script 
>>>>>>>>> (removing 
>>>>>>>>> any sensitive information)?  I'm not quite able to piece together a 
>>>>>>>>> full 
>>>>>>>>> example of what you're running from the email thread.
>>>>>>>>>
>>>>>>>>> My branch is based on devel; I just created another branch based 
>>>>>>>>> on 1.7.2 with the splatting changes applied: https://github.com/cc
>>>>>>>>> hurch/ansible/tree/powershell_splatting_v172 
>>>>>>>>> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fcchurch%2Fansible%2Ftree%2Fpowershell_splatting_v172&sa=D&sntz=1&usg=AFQjCNELYa0RJWKIxEmXb2bqZVp5y1NogA>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Oct 24, 2014 at 6:12 PM, Michael Perzel <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> I tried taking your changes but it failed with:
>>>>>>>>>> <Objs Version="1.1.0.1" xmlns="http://schemas.microsof
>>>>>>>>>> t.com/powershell/2004/04"><S S="Error">C:\Users\ansible\App
>>>>>>>>>> Data\Local\Temp\ansible-tmp-1414187414.25-97343749557638\de_
>>>>>>>>>> x000D__x000A_</S><S S="Error">ployLauncher.ps1 : A positional 
>>>>>>>>>> parameter cannot be found that accepts _x000D__x000A_</S><S 
>>>>>>>>>> S="Error">argument 'False'._x000D__x000A_</S><S S="Error">At line:1 
>>>>>>>>>> char:1_x000D__x000A_</S><S S="Error">+ &amp; _x000D__x000A_</S><S 
>>>>>>>>>> S="Error">C:\Users\ansible\AppData\Local\Temp\ansible-tmp-14
>>>>>>>>>> 14187414.25-97343749557638\\ _x000D__x000A_</S><S 
>>>>>>>>>> S="Error">..._x000D__x000A_</S><S S="Error">+ 
>>>>>>>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>>>>> ~~~~~~~~~~~~~~~~~_x000D__x000A_</S><S 
>>>>>>>>>> S="Error">~~~_x000D__x000A_</S><S S="Error"> + CategoryInfo : 
>>>>>>>>>> InvalidArgument: (:) [deployLauncher.ps1], Param 
>>>>>>>>>> _x000D__x000A_</S><S 
>>>>>>>>>> S="Error"> eterBindingException_x000D__x000A_</S><S S="Error"> + 
>>>>>>>>>> FullyQualifiedErrorId : PositionalParameterNotFound,de
>>>>>>>>>> ployLauncher.ps1_x000D__x000A_</S><S S="Error"> 
>>>>>>>>>> _x000D__x000A_</S></Objs>
>>>>>>>>>>
>>>>>>>>>> Looking at the diff between your code and mine there's a few 
>>>>>>>>>> other differences. I'm running 1.7.2,  I assume your branched off 
>>>>>>>>>> something 
>>>>>>>>>> newer.I'll see if I can sort through the issue.
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> On Friday, October 24, 2014 3:52:39 PM UTC-5, Michael Perzel 
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Your idea with jinja filter is what I originally tried to get 
>>>>>>>>>>> working. I never managed it but I think its the ideal solution 
>>>>>>>>>>> (converting 
>>>>>>>>>>> yaml hash to a powershell one). 
>>>>>>>>>>>
>>>>>>>>>>> If I follow your patch you added a parameter that controls 
>>>>>>>>>>> whether or not arguments get quoted (and set it to false for 
>>>>>>>>>>> powershell 
>>>>>>>>>>> scripts)? I'm not particularly worried about nefarious activity 
>>>>>>>>>>> within our 
>>>>>>>>>>> system so this could work for us.
>>>>>>>>>>>
>>>>>>>>>>> On Friday, October 24, 2014 12:52:52 AM UTC-5, Chris Church 
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> That method of passing arguments is apparently called 
>>>>>>>>>>>> "splatting" (http://technet.microsoft.com/
>>>>>>>>>>>> en-us/magazine/gg675931.aspx).
>>>>>>>>>>>>
>>>>>>>>>>>> I have a branch where I've been able to get it working:
>>>>>>>>>>>>
>>>>>>>>>>>> https://github.com/cchurch/ansible/tree/powershell_splatting
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I've also added integration tests to show examples of it in use:
>>>>>>>>>>>>
>>>>>>>>>>>> https://github.com/cchurch/ansible/blob/powershell_splatting
>>>>>>>>>>>> /test/integration/roles/test_win_script/tasks/main.yml#L50
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I also considered the idea of a Jinja2 filter to convert a 
>>>>>>>>>>>> YAML/JSON data structure to this format to allow for defining your 
>>>>>>>>>>>> arguments as you would any other variables:
>>>>>>>>>>>>
>>>>>>>>>>>> build_args:
>>>>>>>>>>>>
>>>>>>>>>>>>   key1: value1
>>>>>>>>>>>>
>>>>>>>>>>>>   key2: value2
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> You could then run your task as:
>>>>>>>>>>>>
>>>>>>>>>>>> script: dostuff.ps1 {{ build_args|splattify }}
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Would you (or any other Windows users) be interested in this 
>>>>>>>>>>>> approach?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Oct 22, 2014 at 10:28 AM, Michael Perzel <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> I'll look into this. My work around thus far is using a 
>>>>>>>>>>>>> template for my deploy script. Instead of passing the deploy 
>>>>>>>>>>>>> script 
>>>>>>>>>>>>> arguments, I just assign them at the top:
>>>>>>>>>>>>>
>>>>>>>>>>>>> $build = {{ build }}
>>>>>>>>>>>>> $pass = {{ password }}
>>>>>>>>>>>>> $arguments = @{ {{ arguments }} }
>>>>>>>>>>>>>
>>>>>>>>>>>>> This then becomes:
>>>>>>>>>>>>>
>>>>>>>>>>>>> $build = 42
>>>>>>>>>>>>> $pass = password
>>>>>>>>>>>>> $arguments = @{ key1=value1; key2= value2 }
>>>>>>>>>>>>>
>>>>>>>>>>>>> Using the template has given me complete control over the 
>>>>>>>>>>>>> syntax. In our paradigm we have an entirely generic "deploy" 
>>>>>>>>>>>>> powershell 
>>>>>>>>>>>>> script that stages files, unzips them and similar things. It then 
>>>>>>>>>>>>> calls an 
>>>>>>>>>>>>> "install" script that handles all the app specific items. The 
>>>>>>>>>>>>> install 
>>>>>>>>>>>>> scripts are bundled with the specific app.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wednesday, October 22, 2014 8:38:11 AM UTC-5, J Hawkesworth 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I don't have a direct answer for this - rightly or wrongly 
>>>>>>>>>>>>>>> the ps1 scripts I have so far don't take any arguments - I 
>>>>>>>>>>>>>>> consider them to 
>>>>>>>>>>>>>>> be specific to my roles and at the moment they embed some 
>>>>>>>>>>>>>>> details that it 
>>>>>>>>>>>>>>> would probably be best to have as parameters.  However, it 
>>>>>>>>>>>>>>> looks to me like 
>>>>>>>>>>>>>>> your deployLauncher.ps1 really wants to be a very general 
>>>>>>>>>>>>>>> purpose 
>>>>>>>>>>>>>>> deployment tool and maybe it would be better off as an ansible 
>>>>>>>>>>>>>>> module.  
>>>>>>>>>>>>>>> That way you could perhaps take advantage of ansible's existing 
>>>>>>>>>>>>>>> syntax for 
>>>>>>>>>>>>>>> specifying module arguments.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> As an aside I believe @Trond Hindenes has a win_package 
>>>>>>>>>>>>>> module in the works which might do some of what you want.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>  -- 
>>>>>>>>>>>>> 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/388179f6-4
>>>>>>>>>>>>> 48e-44e7-967f-94e400dc4514%40googlegroups.com 
>>>>>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/388179f6-448e-44e7-967f-94e400dc4514%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/ba6b122a-1
>>>>>>>>>> fa5-48c6-9b1d-a8a2f67083ef%40googlegroups.com 
>>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/ba6b122a-1fa5-48c6-9b1d-a8a2f67083ef%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/118759f9-
>>>>>>>> df6f-4805-886d-00a250457019%40googlegroups.com 
>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/118759f9-df6f-4805-886d-00a250457019%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/35495c72-0da0-42f9-b854-
>>>>>> 4ab8f049ccdd%40googlegroups.com 
>>>>>> <https://groups.google.com/d/msgid/ansible-project/35495c72-0da0-42f9-b854-4ab8f049ccdd%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/db5bd592-8018-4bf7-971d-6f8652fd9737%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/ansible-project/db5bd592-8018-4bf7-971d-6f8652fd9737%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/89e4be20-783e-420d-9fd9-3708634080e9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to