diff --git a/app/models/miq_worker/service_worker.rb b/app/models/miq_worker/service_worker.rb index 58935b00564..5e11097ceba 100644 --- a/app/models/miq_worker/service_worker.rb +++ b/app/models/miq_worker/service_worker.rb @@ -17,6 +17,13 @@ def create_container_objects container[:env] << {:name => "PORT", :value => container_port.to_s} container[:env] << {:name => "BINDING_ADDRESS", :value => "0.0.0.0"} add_readiness_probe(container) + container[:volumeMounts] ||= [] + definition[:spec][:template][:spec][:volumes] ||= [] + + if kind_of?(MiqUiWorker) + container[:volumeMounts] << {:name => "ui-httpd-configs", :mountPath => "/etc/httpd/conf.d"} + definition[:spec][:template][:spec][:volumes] << {:name=>"ui-httpd-configs", :configMap=>{:name=>"ui-httpd-configs", :defaultMode=>420}} + end end scale_deployment diff --git a/spec/models/miq_worker/container_common_spec.rb b/spec/models/miq_worker/container_common_spec.rb index b9247c1cb38..15f4367049f 100644 --- a/spec/models/miq_worker/container_common_spec.rb +++ b/spec/models/miq_worker/container_common_spec.rb @@ -43,6 +43,24 @@ def deployment_name_for(name) expect(test_deployment.dig(:spec, :template, :spec).keys).not_to include(:nodeSelector) end + + it "MiqUiWorker adds the ui_httpd_configs volume mount" do + container_orchestrator = ContainerOrchestrator.new + kubeclient = double("Kubeclient::Client") + + expect(ContainerOrchestrator).to receive(:new).and_return(container_orchestrator) + expect(container_orchestrator).to receive(:my_namespace).and_return("my-namespace") + expect(container_orchestrator).to receive(:raw_connect).and_return(kubeclient) + + expect(kubeclient).to receive(:create_deployment) do |deployment| + expect(deployment.fetch_path(:spec, :template, :spec, :containers, 0, :volumeMounts)).to match_array([{:name => "ui-httpd-configs", :mountPath => "/etc/httpd/conf.d"}]) + expect(deployment.fetch_path(:spec, :template, :spec, :volumes)).to match_array([{:name=>"ui-httpd-configs", :configMap=>{:name=>"ui-httpd-configs", :defaultMode=>420}}]) + end + + ui_worker = MiqUiWorker.new + expect(ui_worker).to receive(:scale_deployment) + ui_worker.create_container_objects + end end describe "#zone_selector" do