Downgrade mysql cookbook for now
It doesn't play well with our current dev server setup
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
#
|
||||
# Author:: Kendrick Martin (kendrick.martin@webtrends.com>)
|
||||
# Contributor:: David Dvorak (david.dvorak@webtrends.com)
|
||||
# Cookbook:: iis
|
||||
# Resource:: pool
|
||||
#
|
||||
# Copyright:: 2011-2016, Webtrends Inc.
|
||||
# Copyright:: 2017, Chef Software, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -19,64 +17,435 @@
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
actions :add, :config, :delete, :start, :stop, :restart, :recycle
|
||||
default_action :add
|
||||
require 'rexml/document'
|
||||
|
||||
include REXML
|
||||
include Opscode::IIS::Helper
|
||||
include Opscode::IIS::Processors
|
||||
|
||||
# root
|
||||
attribute :pool_name, kind_of: String, name_attribute: true
|
||||
attribute :no_managed_code, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :pipeline_mode, kind_of: Symbol, equal_to: [:Integrated, :Classic]
|
||||
attribute :runtime_version, kind_of: String
|
||||
property :name, String, name_property: true
|
||||
property :no_managed_code, [true, false], default: false
|
||||
property :pipeline_mode, [Symbol, String], equal_to: [:Integrated, :Classic], coerce: proc { |v| v.to_sym }
|
||||
property :runtime_version, String
|
||||
|
||||
# add items
|
||||
attribute :start_mode, kind_of: Symbol, equal_to: [:AlwaysRunning, :OnDemand], default: :OnDemand
|
||||
attribute :auto_start, kind_of: [TrueClass, FalseClass], default: true
|
||||
attribute :queue_length, kind_of: Integer, default: 1000
|
||||
attribute :thirty_two_bit, kind_of: [TrueClass, FalseClass], default: false
|
||||
property :start_mode, [Symbol, String], equal_to: [:AlwaysRunning, :OnDemand], default: :OnDemand, coerce: proc { |v| v.to_sym }
|
||||
property :auto_start, [true, false], default: true
|
||||
property :queue_length, Integer, default: 1000, coerce: proc { |v| v.to_i }
|
||||
property :thirty_two_bit, [true, false], default: false
|
||||
|
||||
# processModel items
|
||||
attribute :max_proc, kind_of: Integer
|
||||
attribute :load_user_profile, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :pool_identity, kind_of: Symbol, equal_to: [:SpecificUser, :NetworkService, :LocalService, :LocalSystem, :ApplicationPoolIdentity], default: :ApplicationPoolIdentity
|
||||
attribute :pool_username, kind_of: String
|
||||
attribute :pool_password, kind_of: String
|
||||
attribute :logon_type, kind_of: Symbol, equal_to: [:LogonBatch, :LogonService], default: :LogonBatch
|
||||
attribute :manual_group_membership, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :idle_timeout, kind_of: String, default: '00:20:00'
|
||||
attribute :idle_timeout_action, kind_of: Symbol, equal_to: [:Terminate, :Suspend], default: :Terminate
|
||||
attribute :shutdown_time_limit, kind_of: String, default: '00:01:30'
|
||||
attribute :startup_time_limit, kind_of: String, default: '00:01:30'
|
||||
attribute :pinging_enabled, kind_of: [TrueClass, FalseClass], default: true
|
||||
attribute :ping_interval, kind_of: String, default: '00:00:30'
|
||||
attribute :ping_response_time, kind_of: String, default: '00:01:30'
|
||||
property :max_processes, Integer, coerce: proc { |v| v.to_i }
|
||||
property :load_user_profile, [true, false], default: false
|
||||
property :identity_type, [Symbol, String], equal_to: [:SpecificUser, :NetworkService, :LocalService, :LocalSystem, :ApplicationPoolIdentity], default: :ApplicationPoolIdentity, coerce: proc { |v| v.to_sym }
|
||||
property :username, String
|
||||
property :password, String
|
||||
property :logon_type, [Symbol, String], equal_to: [:LogonBatch, :LogonService], default: :LogonBatch, coerce: proc { |v| v.to_sym }
|
||||
property :manual_group_membership, [true, false], default: false
|
||||
property :idle_timeout, String, default: '00:20:00'
|
||||
property :idle_timeout_action, [Symbol, String], equal_to: [:Terminate, :Suspend], default: :Terminate, coerce: proc { |v| v.to_sym }
|
||||
property :shutdown_time_limit, String, default: '00:01:30'
|
||||
property :startup_time_limit, String, default: '00:01:30'
|
||||
property :pinging_enabled, [true, false], default: true
|
||||
property :ping_interval, String, default: '00:00:30'
|
||||
property :ping_response_time, String, default: '00:01:30'
|
||||
|
||||
# recycling items
|
||||
attribute :disallow_rotation_on_config_change, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :disallow_overlapping_rotation, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :recycle_schedule_clear, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :log_event_on_recycle, kind_of: String, default: node['iis']['recycle']['log_events']
|
||||
attribute :recycle_after_time, kind_of: String
|
||||
attribute :recycle_at_time, kind_of: String
|
||||
attribute :private_mem, kind_of: Integer
|
||||
attribute :virtual_mem, kind_of: Integer
|
||||
property :disallow_rotation_on_config_change, [true, false], default: false
|
||||
property :disallow_overlapping_rotation, [true, false], default: false
|
||||
property :recycle_schedule_clear, [true, false], default: false
|
||||
property :log_event_on_recycle, String, default: node['iis']['recycle']['log_events']
|
||||
property :recycle_after_time, String
|
||||
property :recycle_at_time, String
|
||||
property :private_memory, Integer, coerce: proc { |v| v.to_i }
|
||||
property :virtual_memory, Integer, coerce: proc { |v| v.to_i }
|
||||
|
||||
# failure items
|
||||
attribute :load_balancer_capabilities, kind_of: Symbol, equal_to: [:HttpLevel, :TcpLevel], default: :HttpLevel
|
||||
attribute :orphan_worker_process, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :orphan_action_exe, kind_of: String
|
||||
attribute :orphan_action_params, kind_of: String
|
||||
attribute :rapid_fail_protection, kind_of: [TrueClass, FalseClass], default: true
|
||||
attribute :rapid_fail_protection_interval, kind_of: String, default: '00:05:00'
|
||||
attribute :rapid_fail_protection_max_crashes, kind_of: Integer, default: 5
|
||||
attribute :auto_shutdown_exe, kind_of: String
|
||||
attribute :auto_shutdown_params, kind_of: String
|
||||
property :load_balancer_capabilities, [Symbol, String], equal_to: [:HttpLevel, :TcpLevel], default: :HttpLevel, coerce: proc { |v| v.to_sym }
|
||||
property :orphan_worker_process, [true, false], default: false
|
||||
property :orphan_action_exe, String
|
||||
property :orphan_action_params, String
|
||||
property :rapid_fail_protection, [true, false], default: true
|
||||
property :rapid_fail_protection_interval, String, default: '00:05:00'
|
||||
property :rapid_fail_protection_max_crashes, Integer, default: 5, coerce: proc { |v| v.to_i }
|
||||
property :auto_shutdown_exe, String
|
||||
property :auto_shutdown_params, String
|
||||
|
||||
# cpu items
|
||||
attribute :cpu_action, kind_of: Symbol, equal_to: [:NoAction, :KillW3wp, :Throttle, :ThrottleUnderLoad], default: :NoAction
|
||||
attribute :cpu_limit, kind_of: Integer, default: 0
|
||||
attribute :cpu_reset_interval, kind_of: String, default: '00:05:00'
|
||||
attribute :cpu_smp_affinitized, kind_of: [TrueClass, FalseClass], default: false
|
||||
attribute :smp_processor_affinity_mask, kind_of: Float, default: 4_294_967_295.0
|
||||
attribute :smp_processor_affinity_mask_2, kind_of: Float, default: 4_294_967_295.0
|
||||
property :cpu_action, [Symbol, String], equal_to: [:NoAction, :KillW3wp, :Throttle, :ThrottleUnderLoad], default: :NoAction, coerce: proc { |v| v.to_sym }
|
||||
property :cpu_limit, Integer, default: 0, coerce: proc { |v| v.to_i }
|
||||
property :cpu_reset_interval, String, default: '00:05:00'
|
||||
property :cpu_smp_affinitized, [true, false], default: false
|
||||
property :smp_processor_affinity_mask, Float, default: 4_294_967_295.0, coerce: proc { |v| v.to_f }
|
||||
property :smp_processor_affinity_mask_2, Float, default: 4_294_967_295.0, coerce: proc { |v| v.to_f }
|
||||
|
||||
attr_accessor :exists, :running
|
||||
# internally used for the state of the pool [Starting, Started, Stopping, Stopped, Unknown, Undefined value]
|
||||
property :running, [true, false], desired_state: true
|
||||
|
||||
default_action :add
|
||||
|
||||
load_current_value do |desired|
|
||||
name desired.name
|
||||
cmd = shell_out("#{appcmd(node)} list apppool \"#{desired.name}\"")
|
||||
# APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
|
||||
Chef::Log.debug("#{desired} list apppool command output: #{cmd.stdout}")
|
||||
unless cmd.stderr.empty?
|
||||
Chef::Log.warn "Failed to run iis_pool action :load_current_resource, #{cmd.stderr}"
|
||||
return
|
||||
end
|
||||
|
||||
result = cmd.stdout.gsub(/\r\n?/, "\n") # ensure we have no carriage returns
|
||||
result = result.match(/^APPPOOL\s\"(#{desired.name})\"\s\(MgdVersion:(.*),MgdMode:(.*),state:(.*)\)$/i)
|
||||
Chef::Log.debug("#{desired} current_resource match output: #{result}")
|
||||
unless result
|
||||
running false
|
||||
return
|
||||
end
|
||||
|
||||
running result[4] =~ /Started/ ? true : false
|
||||
cmd_current_values = "#{appcmd(node)} list apppool \"#{desired.name}\" /config:* /xml"
|
||||
Chef::Log.debug(cmd_current_values)
|
||||
cmd_current_values = shell_out(cmd_current_values)
|
||||
if cmd_current_values.stderr.empty?
|
||||
xml = cmd_current_values.stdout
|
||||
doc = Document.new(xml)
|
||||
|
||||
# root items
|
||||
runtime_version value(doc.root, 'APPPOOL/@RuntimeVersion').gsub(/^v/, '')
|
||||
pipeline_mode value(doc.root, 'APPPOOL/@PipelineMode').to_sym
|
||||
|
||||
# add items
|
||||
auto_start bool(value(doc.root, 'APPPOOL/add/@autoStart')) if iis_version >= 7.0
|
||||
start_mode value(doc.root, 'APPPOOL/add/@startMode').to_sym if iis_version > 7.0
|
||||
queue_length value(doc.root, 'APPPOOL/add/@queueLength').to_i
|
||||
thirty_two_bit bool(value(doc.root, 'APPPOOL/add/@enable32BitAppOnWin64'))
|
||||
|
||||
# processModel items
|
||||
max_processes value(doc.root, 'APPPOOL/add/processModel/@maxProcesses').to_i
|
||||
load_user_profile bool(value(doc.root, 'APPPOOL/add/processModel/@loadUserProfile'))
|
||||
identity_type value(doc.root, 'APPPOOL/add/processModel/@identityType').to_sym if iis_version > 7.0
|
||||
username value doc.root, 'APPPOOL/add/processModel/@userName'
|
||||
unless username.nil? || desired.username.nil?
|
||||
Chef::Log.info('username: ' + username + ' -> ' + desired.username)
|
||||
end
|
||||
password value doc.root, 'APPPOOL/add/processModel/@password'
|
||||
logon_type value(doc.root, 'APPPOOL/add/processModel/@logonType').to_sym if iis_version > 7.0
|
||||
manual_group_membership bool(value(doc.root, 'APPPOOL/add/processModel/@manualGroupMembership'))
|
||||
idle_timeout value doc.root, 'APPPOOL/add/processModel/@idleTimeout'
|
||||
idle_timeout_action value(doc.root, 'APPPOOL/add/processModel/@idleTimeoutAction').to_sym if iis_version >= 8.5
|
||||
shutdown_time_limit value doc.root, 'APPPOOL/add/processModel/@shutdownTimeLimit'
|
||||
startup_time_limit value doc.root, 'APPPOOL/add/processModel/@startupTimeLimit'
|
||||
pinging_enabled bool(value(doc.root, 'APPPOOL/add/processModel/@pingingEnabled'))
|
||||
ping_interval value doc.root, 'APPPOOL/add/processModel/@pingInterval'
|
||||
ping_response_time value doc.root, 'APPPOOL/add/processModel/@pingResponseTime'
|
||||
|
||||
# recycling items
|
||||
disallow_overlapping_rotation bool(value(doc.root, 'APPPOOL/add/recycling/@disallowOverlappingRotation'))
|
||||
disallow_rotation_on_config_change bool(value(doc.root, 'APPPOOL/add/recycling/@disallowRotationOnConfigChange'))
|
||||
recycle_after_time value doc.root, 'APPPOOL/add/recycling/periodicRestart/@time'
|
||||
recycle_at_time value doc.root, "APPPOOL/add/recycling/periodicRestart/schedule/add[@value='#{desired.recycle_at_time}']/@value"
|
||||
private_memory value(doc.root, 'APPPOOL/add/recycling/periodicRestart/@privateMemory').to_i
|
||||
virtual_memory value(doc.root, 'APPPOOL/add/recycling/periodicRestart/@memory').to_i
|
||||
log_event_on_recycle value doc.root, 'APPPOOL/add/recycling/@logEventOnRecycle'
|
||||
|
||||
# failure items
|
||||
load_balancer_capabilities value(doc.root, 'APPPOOL/add/failure/@loadBalancerCapabilities').to_sym
|
||||
orphan_worker_process bool(value(doc.root, 'APPPOOL/add/failure/@orphanWorkerProcess'))
|
||||
orphan_action_exe value doc.root, 'APPPOOL/add/failure/@orphanActionExe'
|
||||
orphan_action_params value doc.root, 'APPPOOL/add/failure/@orphanActionParams'
|
||||
rapid_fail_protection bool(value(doc.root, 'APPPOOL/add/failure/@rapidFailProtection'))
|
||||
rapid_fail_protection_interval value doc.root, 'APPPOOL/add/failure/@rapidFailProtectionInterval'
|
||||
rapid_fail_protection_max_crashes value(doc.root, 'APPPOOL/add/failure/@rapidFailProtectionMaxCrashes').to_i
|
||||
auto_shutdown_exe value doc.root, 'APPPOOL/add/failure/@autoShutdownExe'
|
||||
auto_shutdown_params value doc.root, 'APPPOOL/add/failure/@autoShutdownParams'
|
||||
|
||||
# cpu items
|
||||
cpu_action value(doc.root, 'APPPOOL/add/cpu/@action').to_sym
|
||||
cpu_limit value(doc.root, 'APPPOOL/add/cpu/@limit').to_i
|
||||
cpu_smp_affinitized bool(value(doc.root, 'APPPOOL/add/cpu/@smpAffinitized'))
|
||||
cpu_reset_interval value doc.root, 'APPPOOL/add/cpu/@resetInterval'
|
||||
smp_processor_affinity_mask value(doc.root, 'APPPOOL/add/cpu/@smpProcessorAffinityMask').to_f
|
||||
smp_processor_affinity_mask_2 value(doc.root, 'APPPOOL/add/cpu/@smpProcessorAffinityMask2').to_f
|
||||
|
||||
@node_array = XPath.match(doc.root, 'APPPOOL/add/recycling/periodicRestart/schedule/add')
|
||||
end
|
||||
end
|
||||
|
||||
action :add do
|
||||
if exists
|
||||
Chef::Log.debug("#{new_resource} pool already exists - nothing to do")
|
||||
else
|
||||
converge_by "Created Application Pool \"#{new_resource}\"" do
|
||||
cmd = "#{appcmd(node)} add apppool /name:\"#{new_resource.name}\""
|
||||
if new_resource.no_managed_code
|
||||
cmd << ' /managedRuntimeVersion:'
|
||||
elsif new_resource.runtime_version
|
||||
cmd << " /managedRuntimeVersion:v#{new_resource.runtime_version}"
|
||||
end
|
||||
cmd << " /managedPipelineMode:#{new_resource.pipeline_mode.capitalize}" if new_resource.pipeline_mode
|
||||
cmd << ' /commit:\"MACHINE/WEBROOT/APPHOST\"'
|
||||
Chef::Log.debug(cmd)
|
||||
shell_out!(cmd)
|
||||
configure
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
action :config do
|
||||
configure if exists
|
||||
end
|
||||
|
||||
action :delete do
|
||||
if exists
|
||||
converge_by "Deleted Application Pool \"#{new_resource}\"" do
|
||||
shell_out!("#{appcmd(node)} delete apppool \"#{new_resource.name}\"")
|
||||
end
|
||||
else
|
||||
Chef::Log.debug("#{new_resource} pool does not exist - nothing to do")
|
||||
end
|
||||
end
|
||||
|
||||
action :start do
|
||||
if exists && !current_resource.running
|
||||
converge_by "Started Application Pool \"#{new_resource}\"" do
|
||||
shell_out!("#{appcmd(node)} start apppool \"#{new_resource.name}\"")
|
||||
end
|
||||
else
|
||||
Chef::Log.debug("#{new_resource} already running - nothing to do")
|
||||
end
|
||||
end
|
||||
|
||||
action :stop do
|
||||
if exists && current_resource.running
|
||||
converge_by "Stopped Application Pool \"#{new_resource}\"" do
|
||||
shell_out!("#{appcmd(node)} stop apppool \"#{new_resource.name}\"")
|
||||
end
|
||||
else
|
||||
Chef::Log.debug("#{new_resource} already stopped - nothing to do")
|
||||
end
|
||||
end
|
||||
|
||||
action :restart do
|
||||
if exists
|
||||
converge_by "Restarted Application Pool \"#{new_resource}\"" do
|
||||
shell_out!("#{appcmd(node)} stop APPPOOL \"#{new_resource.name}\"") if current_resource.running
|
||||
sleep 2
|
||||
shell_out!("#{appcmd(node)} start APPPOOL \"#{new_resource.name}\"")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
action :recycle do
|
||||
if exists
|
||||
converge_by "Recycled Application Pool \"#{new_resource}\"" do
|
||||
shell_out!("#{appcmd(node)} recycle APPPOOL \"#{new_resource.name}\"") if current_resource.running
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
action_class.class_eval do
|
||||
def exists
|
||||
current_resource.runtime_version ? true : false
|
||||
end
|
||||
|
||||
def configure
|
||||
# Application Pool Config
|
||||
cmd = "#{appcmd(node)} set config /section:applicationPools"
|
||||
|
||||
# root items
|
||||
if iis_version >= 7.0
|
||||
converge_if_changed :auto_start do
|
||||
cmd << configure_application_pool("autoStart:#{new_resource.auto_start}")
|
||||
end
|
||||
end
|
||||
|
||||
if iis_version >= 7.5
|
||||
converge_if_changed :start_mode do
|
||||
cmd << configure_application_pool("startMode:#{new_resource.start_mode}")
|
||||
end
|
||||
end
|
||||
|
||||
if new_resource.no_managed_code
|
||||
converge_if_changed :runtime_version do
|
||||
cmd << configure_application_pool('managedRuntimeVersion:')
|
||||
end
|
||||
else
|
||||
converge_if_changed :runtime_version do
|
||||
cmd << configure_application_pool("managedRuntimeVersion:v#{new_resource.runtime_version}")
|
||||
end
|
||||
end
|
||||
|
||||
converge_if_changed :pipeline_mode do
|
||||
cmd << configure_application_pool("managedPipelineMode:#{new_resource.pipeline_mode}")
|
||||
end
|
||||
converge_if_changed :thirty_two_bit do
|
||||
cmd << configure_application_pool("enable32BitAppOnWin64:#{new_resource.thirty_two_bit}")
|
||||
end
|
||||
converge_if_changed :queue_length do
|
||||
cmd << configure_application_pool("queueLength:#{new_resource.queue_length}")
|
||||
end
|
||||
|
||||
# processModel items
|
||||
converge_if_changed :max_processes do
|
||||
cmd << configure_application_pool("processModel.maxProcesses:#{new_resource.max_processes}")
|
||||
end
|
||||
converge_if_changed :load_user_profile do
|
||||
cmd << configure_application_pool("processModel.loadUserProfile:#{new_resource.load_user_profile}")
|
||||
end
|
||||
converge_if_changed :logon_type do
|
||||
cmd << configure_application_pool("processModel.logonType:#{new_resource.logon_type}")
|
||||
end
|
||||
converge_if_changed :manual_group_membership do
|
||||
cmd << configure_application_pool("processModel.manualGroupMembership:#{new_resource.manual_group_membership}")
|
||||
end
|
||||
converge_if_changed :idle_timeout do
|
||||
cmd << configure_application_pool("processModel.idleTimeout:#{new_resource.idle_timeout}")
|
||||
end
|
||||
if iis_version >= 8.5
|
||||
converge_if_changed :idle_timeout_action do
|
||||
cmd << configure_application_pool("processModel.idleTimeoutAction:#{new_resource.idle_timeout_action}")
|
||||
end
|
||||
end
|
||||
converge_if_changed :shutdown_time_limit do
|
||||
cmd << configure_application_pool("processModel.shutdownTimeLimit:#{new_resource.shutdown_time_limit}")
|
||||
end
|
||||
converge_if_changed :startup_time_limit do
|
||||
cmd << configure_application_pool("processModel.startupTimeLimit:#{new_resource.startup_time_limit}")
|
||||
end
|
||||
converge_if_changed :pinging_enabled do
|
||||
cmd << configure_application_pool("processModel.pingingEnabled:#{new_resource.pinging_enabled}")
|
||||
end
|
||||
converge_if_changed :ping_interval do
|
||||
cmd << configure_application_pool("processModel.pingInterval:#{new_resource.ping_interval}")
|
||||
end
|
||||
converge_if_changed :ping_response_time do
|
||||
cmd << configure_application_pool("processModel.pingResponseTime:#{new_resource.ping_response_time}")
|
||||
end
|
||||
|
||||
should_clear_apppool_schedules = ((new_resource.recycle_at_time != current_resource.recycle_at_time) && !@node_array.nil? && !@node_array.empty?) || (new_resource.recycle_schedule_clear && !@node_array.nil? && !@node_array.empty?)
|
||||
|
||||
# recycling items
|
||||
## Special case this collection removal for now.
|
||||
# TODO: test if this is needed
|
||||
# is_new_recycle_at_time = true
|
||||
if !current_resource.runtime_version && should_clear_apppool_schedules
|
||||
converge_by "Cleared Periodic Restart Schedule #{new_resource} - #{should_clear_apppool_schedules}" do
|
||||
clear_pool_schedule_cmd = "#{appcmd(node)} set config /section:applicationPools \"/-[name='#{new_resource.name}'].recycling.periodicRestart.schedule\""
|
||||
Chef::Log.debug(clear_pool_schedule_cmd)
|
||||
shell_out!(clear_pool_schedule_cmd)
|
||||
end
|
||||
end
|
||||
|
||||
converge_if_changed :recycle_after_time do
|
||||
cmd << configure_application_pool("recycling.periodicRestart.time:#{new_resource.recycle_after_time}")
|
||||
end
|
||||
converge_if_changed :recycle_at_time do
|
||||
cmd << configure_application_pool("recycling.periodicRestart.schedule.[value='#{new_resource.recycle_at_time}']", '+')
|
||||
end
|
||||
converge_if_changed :log_event_on_recycle do
|
||||
cmd << configure_application_pool("recycling.logEventOnRecycle:#{new_resource.log_event_on_recycle}")
|
||||
end
|
||||
converge_if_changed :private_memory do
|
||||
cmd << configure_application_pool("recycling.periodicRestart.privateMemory:#{new_resource.private_memory}")
|
||||
end
|
||||
converge_if_changed :virtual_memory do
|
||||
cmd << configure_application_pool("recycling.periodicRestart.memory:#{new_resource.virtual_memory}")
|
||||
end
|
||||
converge_if_changed :disallow_rotation_on_config_change do
|
||||
cmd << configure_application_pool("recycling.disallowRotationOnConfigChange:#{new_resource.disallow_rotation_on_config_change}")
|
||||
end
|
||||
converge_if_changed :disallow_overlapping_rotation do
|
||||
cmd << configure_application_pool("recycling.disallowOverlappingRotation:#{new_resource.disallow_overlapping_rotation}")
|
||||
end
|
||||
|
||||
# failure items
|
||||
converge_if_changed :load_balancer_capabilities do
|
||||
cmd << configure_application_pool("failure.loadBalancerCapabilities:#{new_resource.load_balancer_capabilities}")
|
||||
end
|
||||
converge_if_changed :orphan_worker_process do
|
||||
cmd << configure_application_pool("failure.orphanWorkerProcess:#{new_resource.orphan_worker_process}")
|
||||
end
|
||||
converge_if_changed :orphan_action_exe do
|
||||
cmd << configure_application_pool("failure.orphanActionExe:#{new_resource.orphan_action_exe}")
|
||||
end
|
||||
converge_if_changed :orphan_action_params do
|
||||
cmd << configure_application_pool("failure.orphanActionParams:#{new_resource.orphan_action_params}")
|
||||
end
|
||||
converge_if_changed :rapid_fail_protection do
|
||||
cmd << configure_application_pool("failure.rapidFailProtection:#{new_resource.rapid_fail_protection}")
|
||||
end
|
||||
converge_if_changed :rapid_fail_protection_interval do
|
||||
cmd << configure_application_pool("failure.rapidFailProtectionInterval:#{new_resource.rapid_fail_protection_interval}")
|
||||
end
|
||||
converge_if_changed :rapid_fail_protection_max_crashes do
|
||||
cmd << configure_application_pool("failure.rapidFailProtectionMaxCrashes:#{new_resource.rapid_fail_protection_max_crashes}")
|
||||
end
|
||||
converge_if_changed :auto_shutdown_exe do
|
||||
cmd << configure_application_pool("failure.autoShutdownExe:#{new_resource.auto_shutdown_exe}")
|
||||
end
|
||||
converge_if_changed :auto_shutdown_params do
|
||||
cmd << configure_application_pool("failure.autoShutdownParams:#{new_resource.auto_shutdown_params}")
|
||||
end
|
||||
|
||||
# cpu items
|
||||
converge_if_changed :cpu_action do
|
||||
cmd << configure_application_pool("cpu.action:#{new_resource.cpu_action}")
|
||||
end
|
||||
converge_if_changed :cpu_limit do
|
||||
cmd << configure_application_pool("cpu.limit:#{new_resource.cpu_limit}")
|
||||
end
|
||||
converge_if_changed :cpu_reset_interval do
|
||||
cmd << configure_application_pool("cpu.resetInterval:#{new_resource.cpu_reset_interval}")
|
||||
end
|
||||
converge_if_changed :cpu_smp_affinitized do
|
||||
cmd << configure_application_pool("cpu.smpAffinitized:#{new_resource.cpu_smp_affinitized}")
|
||||
end
|
||||
converge_if_changed :smp_processor_affinity_mask do
|
||||
cmd << configure_application_pool("cpu.smpProcessorAffinityMask:#{new_resource.smp_processor_affinity_mask.floor}")
|
||||
end
|
||||
converge_if_changed :smp_processor_affinity_mask_2 do
|
||||
cmd << configure_application_pool("cpu.smpProcessorAffinityMask2:#{new_resource.smp_processor_affinity_mask_2.floor}")
|
||||
end
|
||||
|
||||
unless current_resource.runtime_version && cmd == "#{appcmd(node)} set config /section:applicationPools"
|
||||
converge_by "Configured Application Pool \"#{new_resource}\"" do
|
||||
Chef::Log.debug(cmd)
|
||||
shell_out!(cmd)
|
||||
end
|
||||
end
|
||||
|
||||
# Application Pool Identity Settings
|
||||
if new_resource.username && new_resource.username != ''
|
||||
cmd = default_app_pool_user
|
||||
converge_if_changed :username do
|
||||
cmd << " \"/[name='#{new_resource.name}'].processModel.userName:#{new_resource.username}\""
|
||||
end
|
||||
converge_if_changed :password do
|
||||
cmd << " \"/[name='#{new_resource.name}'].processModel.password:#{new_resource.password}\""
|
||||
end
|
||||
if cmd != default_app_pool_user
|
||||
converge_by "Configured Application Pool Identity Settings \"#{new_resource}\"" do
|
||||
Chef::Log.debug(cmd)
|
||||
shell_out!(cmd)
|
||||
end
|
||||
end
|
||||
elsif new_resource.identity_type != 'SpecificUser'
|
||||
converge_if_changed :identity_type do
|
||||
cmd = "#{appcmd(node)} set config /section:applicationPools"
|
||||
cmd << " \"/[name='#{new_resource.name}'].processModel.identityType:#{new_resource.identity_type}\""
|
||||
Chef::Log.debug(cmd)
|
||||
shell_out!(cmd)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def default_app_pool_user
|
||||
cmd_default = "#{appcmd(node)} set config /section:applicationPools"
|
||||
cmd_default << " \"/[name='#{new_resource.name}'].processModel.identityType:SpecificUser\""
|
||||
end
|
||||
|
||||
def configure_application_pool(config, add_remove = '')
|
||||
" \"/#{add_remove}[name='#{new_resource.name}'].#{config}\""
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user