Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

force dism to always output english text #34955

Merged
merged 3 commits into from
Aug 1, 2016

Conversation

lubyou
Copy link
Contributor

@lubyou lubyou commented Jul 26, 2016

What does this PR do?

This pull requests add the /English switch to all the relevant calls to DISM.

Previous Behavior

Previously, DISM text output was not displayed in English on localized systems which breaks the DISM module on non English systems.

Tests written?

No

DISM on localized versions of Windows (French, for example) return
localized output, which breaks the DISM module, as it relies on
English text.
@cachedout
Copy link
Contributor

@cachedout cachedout added the Pending-Discussion The issue or pull request needs more discussion before it can be closed or merged label Jul 26, 2016
@lubyou
Copy link
Contributor Author

lubyou commented Jul 26, 2016

@cachedout Pardon my ignorance, but what is the usual process? Fix the tests in my branch and do another pull request? First time contributor, sorry :/

@cachedout
Copy link
Contributor

Hi @lubyou No problem. Just make the changes to your branch and then push them up to the existing branch on your GH fork. This PR will be automatically updated and tests will be re-run.

@cachedout
Copy link
Contributor

Could you please clarify why this output needs to be in English and how this was breaking before? Forcing this to English seems like a pretty aggressive fix here.

@lubyou
Copy link
Contributor Author

lubyou commented Jul 26, 2016

Hi,

The win_dism.py module calls the dism binary on windows and parses the output.
Example pattern here https://github.com/saltstack/salt/blob/2016.3/salt/modules/win_dism.py#L368

The pattern makes assumptions about the language of the text.

Here is the output of dism /online /get-features on a french windows 7:

Outil Gestion et maintenance des images de déploiement
Version : 6.1.7600.16385

Version de l'image : 6.1.7601.18489

Liste des fonctionnalités pour le package : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7601.17514

Nom de la fonctionnalité : OEMHelpCustomization
État : Désactivé

Nom de la fonctionnalité : CorporationHelpCustomization
État : Désactivé

Nom de la fonctionnalité : SimpleTCP
État : Désactivé

Nom de la fonctionnalité : SNMP
État : Désactivé

Nom de la fonctionnalité : WMISnmpProvider
État : Désactivé

Nom de la fonctionnalité : TelnetServer
État : Désactivé

Nom de la fonctionnalité : TelnetClient
État : Désactivé

Nom de la fonctionnalité : WindowsGadgetPlatform
État : Activé

Nom de la fonctionnalité : InboxGames
État : Désactivé

Nom de la fonctionnalité : More Games
État : Désactivé

Nom de la fonctionnalité : Solitaire
État : Désactivé

Nom de la fonctionnalité : SpiderSolitaire
État : Désactivé

Nom de la fonctionnalité : Hearts
État : Désactivé

Nom de la fonctionnalité : FreeCell
État : Désactivé

Nom de la fonctionnalité : Minesweeper
État : Désactivé

Nom de la fonctionnalité : PurblePlace
État : Désactivé

Nom de la fonctionnalité : Chess
État : Désactivé

Nom de la fonctionnalité : Shanghai
État : Désactivé

Nom de la fonctionnalité : Internet Games
État : Désactivé

Nom de la fonctionnalité : Internet Checkers
État : Désactivé

Nom de la fonctionnalité : Internet Backgammon
État : Désactivé

Nom de la fonctionnalité : Internet Spades
État : Désactivé

Nom de la fonctionnalité : IIS-WebServerRole
État : Désactivé

Nom de la fonctionnalité : IIS-WebServer
État : Désactivé

Nom de la fonctionnalité : IIS-CommonHttpFeatures
État : Désactivé

Nom de la fonctionnalité : IIS-HttpErrors
État : Désactivé

Nom de la fonctionnalité : IIS-HttpRedirect
État : Désactivé

Nom de la fonctionnalité : IIS-ApplicationDevelopment
État : Désactivé

Nom de la fonctionnalité : IIS-Security
État : Désactivé

Nom de la fonctionnalité : IIS-URLAuthorization
État : Désactivé

Nom de la fonctionnalité : IIS-RequestFiltering
État : Désactivé

Nom de la fonctionnalité : IIS-NetFxExtensibility
État : Désactivé

Nom de la fonctionnalité : IIS-HealthAndDiagnostics
État : Désactivé

Nom de la fonctionnalité : IIS-HttpLogging
État : Désactivé

Nom de la fonctionnalité : IIS-LoggingLibraries
État : Désactivé

Nom de la fonctionnalité : IIS-RequestMonitor
État : Désactivé

Nom de la fonctionnalité : IIS-HttpTracing
État : Désactivé

Nom de la fonctionnalité : IIS-IPSecurity
État : Désactivé

Nom de la fonctionnalité : IIS-Performance
État : Désactivé

Nom de la fonctionnalité : IIS-HttpCompressionDynamic
État : Désactivé

Nom de la fonctionnalité : IIS-WebServerManagementTools
État : Désactivé

Nom de la fonctionnalité : IIS-ManagementScriptingTools
État : Désactivé

Nom de la fonctionnalité : IIS-IIS6ManagementCompatibility
État : Désactivé

Nom de la fonctionnalité : IIS-Metabase
État : Désactivé

Nom de la fonctionnalité : WAS-WindowsActivationService
État : Désactivé

Nom de la fonctionnalité : WAS-ProcessModel
État : Désactivé

Nom de la fonctionnalité : WAS-NetFxEnvironment
État : Désactivé

Nom de la fonctionnalité : WAS-ConfigurationAPI
État : Désactivé

Nom de la fonctionnalité : IIS-HostableWebCore
État : Désactivé

Nom de la fonctionnalité : IIS-ISAPIExtensions
État : Désactivé

Nom de la fonctionnalité : IIS-ISAPIFilter
État : Désactivé

Nom de la fonctionnalité : IIS-StaticContent
État : Désactivé

Nom de la fonctionnalité : IIS-DefaultDocument
État : Désactivé

Nom de la fonctionnalité : IIS-DirectoryBrowsing
État : Désactivé

Nom de la fonctionnalité : IIS-WebDAV
État : Désactivé

Nom de la fonctionnalité : IIS-ASPNET
État : Désactivé

Nom de la fonctionnalité : IIS-ASP
État : Désactivé

Nom de la fonctionnalité : IIS-CGI
État : Désactivé

Nom de la fonctionnalité : IIS-ServerSideIncludes
État : Désactivé

Nom de la fonctionnalité : IIS-CustomLogging
État : Désactivé

Nom de la fonctionnalité : IIS-BasicAuthentication
État : Désactivé

Nom de la fonctionnalité : IIS-HttpCompressionStatic
État : Désactivé

Nom de la fonctionnalité : IIS-ManagementConsole
État : Désactivé

Nom de la fonctionnalité : IIS-ManagementService
État : Désactivé

Nom de la fonctionnalité : IIS-WMICompatibility
État : Désactivé

Nom de la fonctionnalité : IIS-LegacyScripts
État : Désactivé

Nom de la fonctionnalité : IIS-LegacySnapIn
État : Désactivé

Nom de la fonctionnalité : IIS-FTPServer
État : Désactivé

Nom de la fonctionnalité : IIS-FTPSvc
État : Désactivé

Nom de la fonctionnalité : IIS-FTPExtensibility
État : Désactivé

Nom de la fonctionnalité : IIS-WindowsAuthentication
État : Désactivé

Nom de la fonctionnalité : IIS-DigestAuthentication
État : Désactivé

Nom de la fonctionnalité : IIS-ClientCertificateMappingAuthentication
État : Désactivé

Nom de la fonctionnalité : IIS-IISCertificateMappingAuthentication
État : Désactivé

Nom de la fonctionnalité : IIS-ODBCLogging
État : Désactivé

Nom de la fonctionnalité : MediaPlayback
État : Activé

Nom de la fonctionnalité : WindowsMediaPlayer
État : Activé

Nom de la fonctionnalité : MediaCenter
État : Activé

Nom de la fonctionnalité : OpticalMediaDisc
État : Activé

Nom de la fonctionnalité : NetFx3
État : Activé

Nom de la fonctionnalité : WCF-HTTP-Activation
État : Désactivé

Nom de la fonctionnalité : WCF-NonHTTP-Activation
État : Désactivé

Nom de la fonctionnalité : RasRip
État : Désactivé

Nom de la fonctionnalité : MSMQ-Container
État : Désactivé

Nom de la fonctionnalité : MSMQ-Server
État : Désactivé

Nom de la fonctionnalité : MSMQ-Triggers
État : Désactivé

Nom de la fonctionnalité : MSMQ-ADIntegration
État : Désactivé

Nom de la fonctionnalité : MSMQ-HTTP
État : Désactivé

Nom de la fonctionnalité : MSMQ-Multicast
État : Désactivé

Nom de la fonctionnalité : MSMQ-DCOMProxy
État : Désactivé

Nom de la fonctionnalité : TabletPCOC
État : Activé

Nom de la fonctionnalité : Printing-Foundation-Features
État : Activé

Nom de la fonctionnalité : Printing-Foundation-LPRPortMonitor
État : Désactivé

Nom de la fonctionnalité : Printing-Foundation-LPDPrintService
État : Désactivé

Nom de la fonctionnalité : Printing-Foundation-InternetPrinting-Client
État : Activé

Nom de la fonctionnalité : FaxServicesClientPackage
État : Activé

Nom de la fonctionnalité : ScanManagementConsole
État : Désactivé

Nom de la fonctionnalité : TFTP
État : Désactivé

Nom de la fonctionnalité : MSRDC-Infrastructure
État : Activé

Nom de la fonctionnalité : Printing-XPSServices-Features
État : Activé

Nom de la fonctionnalité : Indexing-Service-Package
État : Désactivé

Nom de la fonctionnalité : Xps-Foundation-Xps-Viewer
État : Activé

Nom de la fonctionnalité : TIFFIFilter
État : Désactivé

Nom de la fonctionnalité : SearchEngine-Client-Package
État : Activé

Nom de la fonctionnalité : Internet-Explorer-Optional-amd64
État : Activé

L'opération a réussi.

And here the same command on the same machine with the /English switch:

Deployment Image Servicing and Management tool
Version: 6.1.7600.16385

Image Version: 6.1.7601.18489

Features listing for package : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~6.1.7601.17514

Feature Name : OEMHelpCustomization
State : Disabled

Feature Name : CorporationHelpCustomization
State : Disabled

Feature Name : SimpleTCP
State : Disabled

Feature Name : SNMP
State : Disabled

Feature Name : WMISnmpProvider
State : Disabled

Feature Name : TelnetServer
State : Disabled

Feature Name : TelnetClient
State : Disabled

Feature Name : WindowsGadgetPlatform
State : Enabled

Feature Name : InboxGames
State : Disabled

Feature Name : More Games
State : Disabled

Feature Name : Solitaire
State : Disabled

Feature Name : SpiderSolitaire
State : Disabled

Feature Name : Hearts
State : Disabled

Feature Name : FreeCell
State : Disabled

Feature Name : Minesweeper
State : Disabled

Feature Name : PurblePlace
State : Disabled

Feature Name : Chess
State : Disabled

Feature Name : Shanghai
State : Disabled

Feature Name : Internet Games
State : Disabled

Feature Name : Internet Checkers
State : Disabled

Feature Name : Internet Backgammon
State : Disabled

Feature Name : Internet Spades
State : Disabled

Feature Name : IIS-WebServerRole
State : Disabled

Feature Name : IIS-WebServer
State : Disabled

Feature Name : IIS-CommonHttpFeatures
State : Disabled

Feature Name : IIS-HttpErrors
State : Disabled

Feature Name : IIS-HttpRedirect
State : Disabled

Feature Name : IIS-ApplicationDevelopment
State : Disabled

Feature Name : IIS-Security
State : Disabled

Feature Name : IIS-URLAuthorization
State : Disabled

Feature Name : IIS-RequestFiltering
State : Disabled

Feature Name : IIS-NetFxExtensibility
State : Disabled

Feature Name : IIS-HealthAndDiagnostics
State : Disabled

Feature Name : IIS-HttpLogging
State : Disabled

Feature Name : IIS-LoggingLibraries
State : Disabled

Feature Name : IIS-RequestMonitor
State : Disabled

Feature Name : IIS-HttpTracing
State : Disabled

Feature Name : IIS-IPSecurity
State : Disabled

Feature Name : IIS-Performance
State : Disabled

Feature Name : IIS-HttpCompressionDynamic
State : Disabled

Feature Name : IIS-WebServerManagementTools
State : Disabled

Feature Name : IIS-ManagementScriptingTools
State : Disabled

Feature Name : IIS-IIS6ManagementCompatibility
State : Disabled

Feature Name : IIS-Metabase
State : Disabled

Feature Name : WAS-WindowsActivationService
State : Disabled

Feature Name : WAS-ProcessModel
State : Disabled

Feature Name : WAS-NetFxEnvironment
State : Disabled

Feature Name : WAS-ConfigurationAPI
State : Disabled

Feature Name : IIS-HostableWebCore
State : Disabled

Feature Name : IIS-ISAPIExtensions
State : Disabled

Feature Name : IIS-ISAPIFilter
State : Disabled

Feature Name : IIS-StaticContent
State : Disabled

Feature Name : IIS-DefaultDocument
State : Disabled

Feature Name : IIS-DirectoryBrowsing
State : Disabled

Feature Name : IIS-WebDAV
State : Disabled

Feature Name : IIS-ASPNET
State : Disabled

Feature Name : IIS-ASP
State : Disabled

Feature Name : IIS-CGI
State : Disabled

Feature Name : IIS-ServerSideIncludes
State : Disabled

Feature Name : IIS-CustomLogging
State : Disabled

Feature Name : IIS-BasicAuthentication
State : Disabled

Feature Name : IIS-HttpCompressionStatic
State : Disabled

Feature Name : IIS-ManagementConsole
State : Disabled

Feature Name : IIS-ManagementService
State : Disabled

Feature Name : IIS-WMICompatibility
State : Disabled

Feature Name : IIS-LegacyScripts
State : Disabled

Feature Name : IIS-LegacySnapIn
State : Disabled

Feature Name : IIS-FTPServer
State : Disabled

Feature Name : IIS-FTPSvc
State : Disabled

Feature Name : IIS-FTPExtensibility
State : Disabled

Feature Name : IIS-WindowsAuthentication
State : Disabled

Feature Name : IIS-DigestAuthentication
State : Disabled

Feature Name : IIS-ClientCertificateMappingAuthentication
State : Disabled

Feature Name : IIS-IISCertificateMappingAuthentication
State : Disabled

Feature Name : IIS-ODBCLogging
State : Disabled

Feature Name : MediaPlayback
State : Enabled

Feature Name : WindowsMediaPlayer
State : Enabled

Feature Name : MediaCenter
State : Enabled

Feature Name : OpticalMediaDisc
State : Enabled

Feature Name : NetFx3
State : Enabled

Feature Name : WCF-HTTP-Activation
State : Disabled

Feature Name : WCF-NonHTTP-Activation
State : Disabled

Feature Name : RasRip
State : Disabled

Feature Name : MSMQ-Container
State : Disabled

Feature Name : MSMQ-Server
State : Disabled

Feature Name : MSMQ-Triggers
State : Disabled

Feature Name : MSMQ-ADIntegration
State : Disabled

Feature Name : MSMQ-HTTP
State : Disabled

Feature Name : MSMQ-Multicast
State : Disabled

Feature Name : MSMQ-DCOMProxy
State : Disabled

Feature Name : TabletPCOC
State : Enabled

Feature Name : Printing-Foundation-Features
State : Enabled

Feature Name : Printing-Foundation-LPRPortMonitor
State : Disabled

Feature Name : Printing-Foundation-LPDPrintService
State : Disabled

Feature Name : Printing-Foundation-InternetPrinting-Client
State : Enabled

Feature Name : FaxServicesClientPackage
State : Enabled

Feature Name : ScanManagementConsole
State : Disabled

Feature Name : TFTP
State : Disabled

Feature Name : MSRDC-Infrastructure
State : Enabled

Feature Name : Printing-XPSServices-Features
State : Enabled

Feature Name : Indexing-Service-Package
State : Disabled

Feature Name : Xps-Foundation-Xps-Viewer
State : Enabled

Feature Name : TIFFIFilter
State : Disabled

Feature Name : SearchEngine-Client-Package
State : Enabled

Feature Name : Internet-Explorer-Optional-amd64
State : Enabled

The operation completed successfully.

The options are to either update the regex patterns or use the /English switch.

Puppet's dism module has the same issue puppetlabs-toy-chest/puppetlabs-dism#38

@cachedout
Copy link
Contributor

Ah! I follow you now. Thanks for taking the time to explain this. Makes perfect sense. Much appreciated.

@cachedout
Copy link
Contributor

We still do need to update these unit tests before we can merge this. Please let me know if there's a way I can help.

@lubyou
Copy link
Contributor Author

lubyou commented Jul 27, 2016

Hi,

to be honest I do not know why the tests still fail.

Lets take https://jenkins.saltstack.com/job/PR/job/salt-pr-rs-cent7-n/3791/testReport/junit/unit.modules.win_dism_test/WinDismTestCase/test_available_capabilities/?auto_refresh=false

Expected call: mock(['DISM', '/English', '/Online', '/Get-Capabilities']) Actual call: mock(['DISM', '/Online', '/Get-Capabilities'])

The test is expecting the /English switch, while the actual call to does not seem to supply it.

If I look at https://github.com/lubyou/salt/blob/fix-dism-on-non-english-systems/salt/modules/win_dism.py#L165, the switch is clearly present.

I have been grep'ing through my fork, and I cannot seem to figure out what I have missed.

Can you point me in the right direction?

Thank you

@cachedout
Copy link
Contributor

Go Go Jenkins!

@lubyou
Copy link
Contributor Author

lubyou commented Aug 1, 2016

@cachedout Can we get this merged?

@cachedout cachedout merged commit d137c4b into saltstack:2016.3 Aug 1, 2016
@cachedout
Copy link
Contributor

Merged! Thanks, @lubyou

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Pending-Discussion The issue or pull request needs more discussion before it can be closed or merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants