@@ -237,7 +237,7 @@ def atomic_form_field_changed
237237 build_automate_tree ( :automate_catalog ) if automate_tree_needed?
238238 if params [ :st_prov_type ] # build request screen for selected item type
239239 @_params [ :org_controller ] = "service_template"
240- if ansible_playbook?
240+ if ansible_playbook? || terraform_template?
241241 @record = ServiceTemplate . new
242242 # waiting for back-end PR to be merged to implement this
243243 # if false
@@ -285,7 +285,10 @@ def atomic_form_field_changed
285285
286286 render :update do |page |
287287 page << javascript_prologue
288- if @edit [ :new ] [ :st_prov_type ] == "generic_ansible_playbook"
288+ if @edit [ :new ] [ :st_prov_type ] == "generic_terraform_template"
289+ page . replace ( "form_div" , :partial => "tt_react_form" )
290+ page << javascript_hide ( "form_buttons_div" )
291+ elsif @edit [ :new ] [ :st_prov_type ] == "generic_ansible_playbook"
289292 page . replace ( "form_div" , :partial => "st_angular_form" )
290293 page << javascript_hide ( "form_buttons_div" )
291294 else
@@ -370,6 +373,7 @@ def explorer
370373 end
371374 template_locals = { :locals => { :controller => "catalog" } }
372375 template_locals [ :locals ] . merge! ( fetch_playbook_details ) if need_ansible_locals?
376+ template_locals [ :locals ] . merge! ( fetch_terraform_template_details ) if need_terraform_locals?
373377 template_locals [ :locals ] . merge! ( fetch_ct_details ) if need_container_template_locals?
374378 template_locals [ :locals ] . merge! ( fetch_ovf_template_details ) if need_ovf_template_locals?
375379
@@ -890,7 +894,7 @@ def resource_action_entry_point(resource_action)
890894 def build_tenants_tree
891895 tenants = @record ? @record . additional_tenants : Tenant . where ( :id => @edit [ :new ] [ :tenant_ids ] )
892896 catalog_bundle = @edit . present? && @edit [ :key ] && @edit [ :key ] . starts_with? ( 'st_edit' ) # Get the info if adding/editing Catalog Item or Bundle; not important if only displaying
893- TreeBuilderTenants . new ( 'tenants_tree' , @sb , true , :additional_tenants => tenants , :selectable => @edit . present? , :ansible_playbook => ansible_playbook_type? , :catalog_bundle => catalog_bundle )
897+ TreeBuilderTenants . new ( 'tenants_tree' , @sb , true , :additional_tenants => tenants , :selectable => @edit . present? , :template => ansible_playbook_type? || terraform_template_type ?, :catalog_bundle => catalog_bundle )
894898 end
895899
896900 def svc_catalog_provision_finish_submit_endpoint
@@ -915,6 +919,24 @@ def ansible_playbook?
915919 end
916920 helper_method :ansible_playbook?
917921
922+ def terraform_template_type?
923+ prov_type = if params [ :st_prov_type ]
924+ params [ :st_prov_type ]
925+ elsif @record
926+ @record . prov_type
927+ elsif @edit
928+ @edit [ :new ] [ :st_prov_type ]
929+ end
930+ prov_type == 'generic_terraform_template'
931+ end
932+
933+ def terraform_template?
934+ terraform_template = terraform_template_type?
935+ @current_region = MiqRegion . my_region . region if terraform_template
936+ terraform_template
937+ end
938+ helper_method :terraform_template?
939+
918940 # Get all the available Catalogs
919941 def available_catalogs
920942 Rbac . filtered ( ServiceTemplateCatalog . all ) . collect do |sc |
@@ -1904,7 +1926,7 @@ def get_node_info_handle_leaf_node(id)
19041926 @no_wf_msg = _ ( "Request is missing for selected item" )
19051927 end
19061928 end
1907- unless @record . prov_type == "generic_ansible_playbook"
1929+ unless @record . prov_type == "generic_ansible_playbook" || @record . prov_type == "generic_terraform_template"
19081930 @sb [ :dialog_label ] = _ ( "No Dialog" )
19091931 @sb [ :fqname ] = nil
19101932 @sb [ :reconfigure_fqname ] = nil
@@ -2199,6 +2221,40 @@ def fetch_playbook_details
21992221 playbook_details
22002222 end
22012223
2224+ def fetch_terraform_template_details
2225+ terraform_template_details = { }
2226+ provision = @record . config_info [ :provision ]
2227+ terraform_template_details [ :provisioning ] = { }
2228+ terraform_template_details [ :provisioning ] [ :repository ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::ConfigurationScriptSource , provision [ :repository_id ] )
2229+ terraform_template_details [ :provisioning ] [ :template ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::ConfigurationScriptPayload , provision [ :configuration_script_payload_id ] )
2230+ terraform_template_details [ :provisioning ] [ :credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::Credential , provision [ :credential_id ] )
2231+ terraform_template_details [ :provisioning ] [ :network_credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::NetworkCredential , provision [ :network_credential_id ] ) if provision [ :network_credential_id ]
2232+ terraform_template_details [ :provisioning ] [ :cloud_credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::CloudCredential , provision [ :cloud_credential_id ] ) if provision [ :cloud_credential_id ]
2233+ fetch_dialog ( terraform_template_details , provision [ :dialog_id ] , :provisioning )
2234+ terraform_template_details [ :provisioning ] [ :execution_ttl ] = provision [ :execution_ttl ]
2235+ terraform_template_details [ :provisioning ] [ :verbosity ] = provision [ :verbosity ]
2236+ terraform_template_details [ :provisioning ] [ :log_output ] = provision [ :log_output ]
2237+ terraform_template_details [ :provisioning ] [ :become_enabled ] = provision [ :become_enabled ] == true ? _ ( 'Yes' ) : _ ( 'No' )
2238+
2239+ if @record . config_info [ :retirement ]
2240+ retirement = @record . config_info [ :retirement ]
2241+ terraform_template_details [ :retirement ] = { }
2242+ terraform_template_details [ :retirement ] [ :remove_resources ] = retirement [ :remove_resources ]
2243+ if retirement [ :repository_id ]
2244+ terraform_template_details [ :retirement ] [ :repository ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::ConfigurationScriptSource , retirement [ :repository_id ] )
2245+ terraform_template_details [ :retirement ] [ :template ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::ConfigurationScriptPayload , retirement [ :configuration_script_payload_id ] )
2246+ terraform_template_details [ :retirement ] [ :credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::Credential , retirement [ :credential_id ] )
2247+ terraform_template_details [ :retirement ] [ :network_credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::NetworkCredential , retirement [ :network_credential_id ] ) if retirement [ :network_credential_id ]
2248+ terraform_template_details [ :retirement ] [ :cloud_credential ] = fetch_name_from_object ( ManageIQ ::Providers ::EmbeddedTerraform ::AutomationManager ::CloudCredential , retirement [ :cloud_credential_id ] ) if retirement [ :cloud_credential_id ]
2249+ end
2250+ terraform_template_details [ :retirement ] [ :execution_ttl ] = retirement [ :execution_ttl ]
2251+ terraform_template_details [ :retirement ] [ :verbosity ] = retirement [ :verbosity ]
2252+ terraform_template_details [ :retirement ] [ :log_output ] = retirement [ :log_output ]
2253+ terraform_template_details [ :retirement ] [ :become_enabled ] = retirement [ :become_enabled ] == true ? _ ( 'Yes' ) : _ ( 'No' )
2254+ end
2255+ terraform_template_details
2256+ end
2257+
22022258 def fetch_dialog ( playbook_details , dialog_id , key )
22032259 return nil if dialog_id . nil?
22042260
@@ -2303,6 +2359,8 @@ def replace_right_cell(options = {})
23032359 content = if @tagging
23042360 action_url = x_active_tree == :ot_tree ? "ot_tags_edit" : "st_tags_edit"
23052361 r [ :partial => "layouts/x_tagging" , :locals => { :action_url => action_url } ]
2362+ elsif action && %w[ at_st_new st_new ] . include? ( action ) && terraform_template?
2363+ r [ :partial => "tt_react_form" ]
23062364 elsif action && %w[ at_st_new st_new ] . include? ( action )
23072365 r [ :partial => ansible_playbook? ? "st_angular_form" : "st_form" ]
23082366 elsif action && %w[ ownership ] . include? ( action )
@@ -2321,6 +2379,7 @@ def replace_right_cell(options = {})
23212379 else
23222380 template_locals = { :controller => "catalog" }
23232381 template_locals . merge! ( fetch_playbook_details ) if need_ansible_locals?
2382+ template_locals . merge! ( fetch_terraform_template_details ) if need_terraform_locals?
23242383 template_locals . merge! ( fetch_ct_details ) if need_container_template_locals?
23252384 template_locals . merge! ( fetch_ovf_template_details ) if need_ovf_template_locals?
23262385 r [ :partial => "catalog/#{ x_active_tree } _show" , :locals => template_locals ]
@@ -2344,7 +2403,7 @@ def replace_right_cell(options = {})
23442403 presenter . hide ( :toolbar ) . show ( :paging_div )
23452404 # incase it was hidden for summary screen, and incase there were no records on show_list
23462405 presenter . remove_paging
2347- if ( action == 'at_st_new' && ansible_playbook? ) || %w[ st_catalog_new st_catalog_edit copy_catalog ] . include? ( action )
2406+ if ( action == 'at_st_new' && ( ansible_playbook? || terraform_template? ) ) || %w[ st_catalog_new st_catalog_edit copy_catalog ] . include? ( action )
23482407 presenter . hide ( :form_buttons_div )
23492408 else
23502409 presenter . show ( :form_buttons_div )
@@ -2407,6 +2466,12 @@ def need_ansible_locals?
24072466 @record . prov_type == "generic_ansible_playbook"
24082467 end
24092468
2469+ def need_terraform_locals?
2470+ x_active_tree == :sandt_tree &&
2471+ TreeBuilder . get_model_for_prefix ( @nodetype ) == "ServiceTemplate" &&
2472+ @record . prov_type == "generic_terraform_template"
2473+ end
2474+
24102475 def need_container_template_locals?
24112476 x_active_tree == :sandt_tree &&
24122477 TreeBuilder . get_model_for_prefix ( @nodetype ) == "ServiceTemplate" &&
0 commit comments