voxpupuli / puppet-windowsfeature

Library that uses ServerAdministration api that comes with Windows Server 2008 and Windows Server 2012 to add / remove windows features
https://forge.puppet.com/puppet/windowsfeature
MIT License
30 stars 50 forks source link

Type and provider with specs #47

Closed petems closed 8 years ago

petems commented 8 years ago

Takes @matthewrstone's type and provider refactor, adds specs and updates the docs.

I'm having serious performance issues with the module without this, and this is soooooo much better

@matthewrstone you got any strong preferences for changes for this before we merge? I'd prefer we get an MVP out sooner with a major version bump, then update as needed 👍

liamjbennett commented 8 years ago

I can't thank you both enough for doing this. It's been long over due.

matthewrstone commented 8 years ago

I AM EXCITED

Sorry...no strong preferences. Y'all are the testing gods, so I yield to your best practices. I had some other ideas a while back but yeah, I think getting MVP out the door is essential right now. :)

petems commented 8 years ago

Performance comparison:

Old module

win-2012R2-std 01:24:03$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.7215
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.58 seconds
  Info: Applying configuration version '1464135855'
  Notice: /Stage[main]/Main/Windowsfeature[Web-Static-Content]/Exec[add-feature-Web-Static-Content]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Filtering]/Exec[add-feature-Web-Filtering]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-ISAPI-Ext]/Exec[add-feature-Web-ISAPI-Ext]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Http-Logging]/Exec[add-feature-Web-Http-Logging]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Http-Errors]/Exec[add-feature-Web-Http-Errors]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Default-Doc]/Exec[add-feature-Web-Default-Doc]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Stat-Compression]/Exec[add-feature-Web-Stat-Compression]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Net-Ext]/Exec[add-feature-Web-Net-Ext]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Request-Monitor]/Exec[add-feature-Web-Request-Monitor]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Mgmt-Console]/Exec[add-feature-Web-Mgmt-Console]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-Dyn-Compression]/Exec[add-feature-Web-Dyn-Compression]/returns: executed successfully
  Notice: /Stage[main]/Main/Windowsfeature[Web-ISAPI-Filter]/Exec[add-feature-Web-ISAPI-Filter]/returns: executed successfully
  Info: Creating state file C:/ProgramData/PuppetLabs/puppet/var/state/state.yaml
  Notice: Finished catalog run in **315.19** seconds
win-2012R2-std 01:29:30$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.8276
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.44 seconds
  Info: Applying configuration version '1464136176'
  Notice: Finished catalog run in **15.30** seconds

Type and provider

win-2012R2-std 00:55:34$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.1631
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.11 seconds
  Info: Applying configuration version '1464134149'
  Notice: /Stage[main]/Main/Windowsfeature[Web-Filtering]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Http-Errors]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Net-Ext]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Mgmt-Tools]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-ISAPI-Ext]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Default-Doc]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Stat-Compression]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Http-Logging]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Mgmt-Console]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-ISAPI-Filter]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Static-Content]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Request-Monitor]/ensure: created
  Notice: /Stage[main]/Main/Windowsfeature[Web-Dyn-Compression]/ensure: created
  Info: Creating state file C:/ProgramData/PuppetLabs/puppet/var/state/state.yaml
  Notice: Finished catalog run in **312.70** seconds
win-2012R2-std 01:01:10$ puppet apply --verbose --detailed-exitcodes C:\Windows\Temp\apply_manifest.pp.2728
  Info: Loading facts
  Notice: Compiled catalog for win-2012r2-std.home in environment production in 0.05 seconds
  Info: Applying configuration version '1464134478'
  Notice: Finished catalog run in **3.34** seconds

The more features there are, the further away the T/P comes out because it's exponentially more time to check each new feature 👍

matthewrstone commented 8 years ago

Awesome. I'm assuming the build checks failing are due to them trying to pull arrays of Windows features on linux docker containers? :)

petems commented 8 years ago

hah, no I think the old specs for the define was still hanging around, I've rebased and removed the old tests and should be green now 👍

petems commented 8 years ago

Bah, somehow managed to lose my json fixture of an IIS server whilst rebasing. Will have to dig tomorow! 👍

petems commented 8 years ago

Ok, test coverage increased, docs updated, just need another VP persons blessing then let's get this merged! 👍

liamjbennett commented 8 years ago

👍 LGTM.

petems commented 8 years ago

Woot! 👍