{"action":"created","comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/28689668","id":28689668,"diff_hunk":"@@ -1,1173 +0,0 @@\n-class MiqProxyController < ApplicationController\n-\n-  before_filter :check_privileges\n-  before_filter :get_session_data\n-  after_filter :cleanup_action\n-  after_filter :set_session_data\n-\n-  def index\n-    if role_allows(:feature=>\"miq_proxy_show_list\") && !params[:jobs_tab]\n-      redirect_to :action => 'show_list'\n-    else\n-      @tabform = nil\n-      @tabform ||= \"tasks_1\" if role_allows(:feature=>\"job_my_smartproxy\")\n-      @tabform ||= \"tasks_2\" if role_allows(:feature=>\"miq_task_my_ui\")\n-      @tabform ||= \"tasks_3\" if role_allows(:feature=>\"job_all_smartproxy\") && role_allows(:feature=>\"job_all_smartproxy\")\n-      @tabform ||= \"tasks_4\" if role_allows(:feature=>\"miq_task_all_ui\") && role_allows(:feature=>\"miq_task_all_ui\")\n-      jobs\n-      render :action=>\"jobs\"\n-    end\n-  end\n-\n-  # New tab was pressed\n-  def change_tab\n-    @tabform = \"tasks_\" + params[:tab]\n-    jobs\n-    render :action=>\"jobs\"\n-  end\n-\n-  def build_jobs_tab\n-    @pp_choices = PPCHOICES2  # Get special pp choices for jobs/tasks lists\n-    @settings[:perpage][:job_task] ||= 50       # Default to 50 per page until changed\n-    @tasks_options = HashWithIndifferentAccess.new if @tasks_options.blank?\n-    @tasks_options[:zones] = Zone.all.collect{|z| z.name unless z.miq_servers.blank?}.compact\n-#   session[:user_choice] = \"all\"\n-#   sm_states = [[\"Initializing\",\"initializing\"], [\"Waiting to Start\",\"waiting_to_start\"], [\"Cancelling\",\"cancelling\"], [\"Aborting\",\"aborting\"],\n-#       [\"Finished\",\"finished\"],[\"Snapshot Create\",\"snapshot_create\"], [\"Scanning\",\"scanning\"], [\"Snapshot Delete\",\"snapshot_delete\"],\n-#       [\"Synchronizing\",\"synchronizing\"], [\"Deploy Smartproxy\",\"deploy_smartproxy\"]]\n-#   ui_states = [[\"Initialized\",\"Initialized\"], [\"Queued\",\"Queued\"],[\"Active\",\"Active\"],[\"Finished\",\"Finished\"]]\n-#\n-    tasks_set_default_options if @tasks_options[@tabform].blank?\n-\n-    if role_allows(:feature=>\"job_my_smartproxy\")\n-      @tabs ||= [ [\"1\", \"\"] ]\n-      @tabs.push( [\"1\", \"My VM Analysis Tasks\"] )\n-    end\n-    if role_allows(:feature=>\"miq_task_my_ui\")\n-      @tabs ||= [ [\"2\", \"\"] ]\n-      @tabs.push( [\"2\", \"My Other UI Tasks\"] )\n-    end\n-    if role_allows(:feature=>\"job_all_smartproxy\") && role_allows(:feature=>\"job_all_smartproxy\")\n-      @tabs ||= [ [\"3\", \"\"] ]\n-      @tabs.push( [\"3\", \"All VM Analysis Tasks\"] )\n-    end\n-    if role_allows(:feature=>\"miq_task_all_ui\") && role_allows(:feature=>\"miq_task_all_ui\")\n-      @tabs ||= [ [\"4\", \"\"] ]\n-      @tabs.push( [\"4\", \"All Other Tasks\"] )\n-    end\n-    case @tabform\n-    when \"tasks_1\"\n-      @tabs[0][0] = \"1\"\n-    when \"tasks_2\"\n-      @tabs[0][0] = \"2\"\n-    when \"tasks_3\"\n-      @tabs[0][0] = \"3\"\n-    when \"tasks_4\"\n-      @tabs[0][0] = \"4\"\n-    end\n-  end\n-\n-  # Show job list for the current user\n-  def jobs\n-    build_jobs_tab\n-    @title = \"Tasks for #{session[:username]}\"\n-    @breadcrumbs = Array.new\n-    @lastaction = \"jobs\"\n-\n-    @edit = Hash.new\n-    @edit[:opts] = Hash.new\n-    @edit[:opts] = copy_hash(@tasks_options[@tabform])   # Backup current settings\n-\n-    if params[:action] != \"button\" && (params[:ppsetting] || params[:searchtag] || params[:entry] || params[:sort_choice] || params[:user_choice])\n-      get_jobs(tasks_condition(@tasks_options[@tabform]))\n-      render :update do |page|\n-        page.replace_html(\"gtl_div\", :partial=>\"layouts/gtl\", :locals=>{:action_url=>@lastaction})\n-        page << \"miqSparkle(false);\"  # Need to turn off sparkle in case original ajax element gets replaced\n-      end\n-    else                      # Came in from non-ajax, just get the jobs\n-      get_jobs(tasks_condition(@tasks_options[@tabform]))\n-    end\n-  end\n-\n-  def get_jobs(conditions)\n-    if @tabform == \"tasks_1\"\n-      #My SmartProxy Tasks\n-      @layout = \"my_tasks\"\n-      @lastaction = \"jobs\"\n-      @view, @pages = get_view(Job, :conditions=>conditions)  # Get the records (into a view) and the paginator\n-      drop_breadcrumb( {:name=>\"My VM Analysis Tasks\", :url=>\"/miq_proxy/index?jobs_tab=tasks\"})\n-\n-    elsif @tabform == \"tasks_2\"\n-      #My UI Tasks\n-      @layout = \"my_ui_tasks\"\n-      @lastaction = \"ui_jobs\"\n-      @view, @pages = get_view(MiqTask, :conditions=>conditions)  # Get the records (into a view) and the paginator\n-      drop_breadcrumb( {:name=>\"My Other UI Tasks\", :url=>\"/miq_proxy/index?jobs_tab=tasks\"})\n-\n-    elsif @tabform == \"tasks_3\" || @tabform == \"alltasks_1\"\n-      #All SmartProxy Tasks\n-      @layout = \"all_tasks\"\n-      @lastaction = \"all_jobs\"\n-      @view, @pages = get_view(Job, :conditions=>conditions)  # Get the records (into a view) and the paginator\n-      drop_breadcrumb( {:name=>\"All VM Analysis Tasks\", :url=>\"/miq_proxy/index?jobs_tab=alltasks\"} )\n-      @user_names = []\n-      job_recs = Job.all(:select=>\"userid\", :group=>\"userid\")\n-      job_recs.each do |j|\n-        @user_names.push(j.userid) unless j.userid.blank?\n-      end\n-\n-    elsif @tabform == \"tasks_4\" || @tabform == \"alltasks_2\"\n-      #All UI Tasks\n-      @layout = \"all_ui_tasks\"\n-      @lastaction = \"all_ui_jobs\"\n-      @view, @pages = get_view(MiqTask, :conditions=>conditions)  # Get the records (into a view) and the paginator\n-      drop_breadcrumb( {:name=>\"All Other Tasks\", :url=>\"/miq_proxy/index?jobs_tab=alltasks\"} )\n-      @user_names = []\n-      job_recs = MiqTask.all(:select=>\"userid\", :group=>\"userid\")\n-      job_recs.each do |j|\n-        @user_names.push(j.userid) unless j.userid.blank?\n-      end\n-    end\n-  end\n-\n-  # Cancel a single selected job\n-  def canceljobs\n-    assert_privileges(\"miq_task_canceljob\")\n-    job_id = Array.new\n-    job_id = find_checked_items\n-    if job_id.empty?\n-      add_flash(_(\"No %{model} were selected for %{task}\") % {:model=>ui_lookup(:tables=>\"miq_task\"), :task=>\"cancellation\"}, :error)\n-    end\n-    case @layout\n-      when \"my_tasks\", \"all_tasks\"\n-        db_class = Job\n-      when \"my_ui_tasks\",\"all_ui_tasks\"\n-        db_class = MiqTask\n-    end\n-    job = db_class.find_by_id(job_id)\n-    if job[\"state\"].downcase == \"finished\"\n-      add_flash(_(\"Finished Task cannot be cancelled\"), :error)\n-    else\n-      process_jobs(job_id, \"cancel\")  if ! job_id.empty?\n-      add_flash(_(\"The selected Task was cancelled\"), :error) if @flash_array == nil\n-    end\n-    jobs\n-    @refresh_partial = \"layouts/tasks\"\n-  end\n-\n-  # Delete all selected or single displayed job(s)\n-  def deletejobs\n-    assert_privileges(\"miq_task_delete\")\n-    job_ids = Array.new\n-    job_ids = find_checked_items\n-    if job_ids.empty?\n-      add_flash(_(\"No %{model} were selected for %{task}\") % {:model=>ui_lookup(:tables=>\"miq_task\"), :task=>\"deletion\"}, :error)\n-    else\n-      case @layout\n-        when \"my_tasks\", \"all_tasks\"\n-          db_class = Job\n-        when \"my_ui_tasks\",\"all_ui_tasks\"\n-          db_class = MiqTask\n-      end\n-      db_class.delete_by_id(job_ids)\n-      AuditEvent.success(:userid=>session[:userid],:event=>\"Delete selected tasks\",\n-          :message=>\"Delete started for record ids: #{job_ids.inspect}\",\n-          :target_class=>db_class.base_class.name)\n-      add_flash(_(\"%{task} initiated for %{count_model} from the CFME Database\") % {:task=>\"Delete\", :count_model=>pluralize(job_ids.length,ui_lookup(:tables=>\"miq_task\"))}) if @flash_array == nil\n-    end\n-    jobs\n-    @refresh_partial = \"layouts/tasks\"\n-  end\n-\n-  # Delete all finished job(s)\n-  def deletealljobs\n-    assert_privileges(\"miq_task_deleteall\")\n-    job_ids = Array.new\n-    session[:view].table.data.each do |rec|\n-      job_ids.push(rec[\"id\"])\n-    end\n-    if job_ids.empty?\n-      add_flash(_(\"No %{model} were selected for %{task}\") % {:model=>ui_lookup(:tables=>\"miq_task\"), :task=>\"deletion\"}, :error)\n-    else\n-      case @layout\n-        when \"my_tasks\", \"all_tasks\"\n-          db_class = Job\n-        when \"my_ui_tasks\",\"all_ui_tasks\"\n-          db_class = MiqTask\n-      end\n-      db_class.delete_by_id(job_ids)\n-      AuditEvent.success(:userid=>session[:userid],:event=>\"Delete all finished tasks\",\n-          :message=>\"Delete started for record ids: #{job_ids.inspect}\",\n-          :target_class=>db_class.base_class.name)\n-      add_flash(_(\"%{task} initiated for %{count_model} from the CFME Database\") % {:task=>\"Delete\", :count_model=>pluralize(job_ids.length,ui_lookup(:tables=>\"miq_task\"))})  if @flash_array == nil\n-    end\n-    jobs\n-    @refresh_partial = \"layouts/tasks\"\n-  end\n-\n-  # Delete all job(s) older than selected job(s)\n-  def deleteolderjobs\n-    assert_privileges(\"miq_task_deleteolder\")\n-    jobid = find_checked_items\n-    case @layout\n-      when \"my_tasks\", \"all_tasks\"\n-        db_class = Job\n-      when \"my_ui_tasks\",\"all_ui_tasks\"\n-        db_class = MiqTask\n-    end\n-    # fetching job record for the selected job\n-    job = db_class.find_by_id(jobid)\n-    if job\n-      if @layout.starts_with?(\"my_\")\n-        uid = session[:userid]\n-      else\n-        uid = @tasks_options[@tabform][:user_choice].blank? ? nil : @tasks_options[@tabform][:user_choice]\n-      end\n-      db_class.delete_older(job.updated_on, tasks_condition(@tasks_options[@tabform], false))\n-      AuditEvent.success(:userid=>session[:userid],:event=>\"Delete older tasks\",\n-          :message=>\"Delete started for records older than #{job.updated_on}, conditions: #{@tasks_options[@tabform].inspect}\",\n-          :target_class=>db_class.base_class.name)\n-      add_flash(_(\"%{task} initiated for %{count_model} from the CFME Database\") % {:task=>\"Delete all older Tasks\", :count_model=>pluralize(jobid.length,ui_lookup(:tables=>\"miq_task\"))})\n-    else\n-      add_flash(_(\"The selected job no longer exists, Delete all older Tasks was not completed\"), :warning)\n-    end\n-\n-    jobs\n-    @refresh_partial = \"layouts/tasks\"\n-  end\n-\n-  def process_jobs(jobs, task)\n-    case @layout\n-      when \"my_tasks\", \"all_tasks\"\n-        db_class = Job\n-      when \"my_ui_tasks\",\"all_ui_tasks\"\n-        db_class = MiqTask\n-    end\n-    db_class.find_all_by_id(jobs, :order => \"lower(name)\").each do |job|\n-      id = job.id\n-      job_name = job.name\n-      if task == \"destroy\"\n-        audit = {:event=>\"jobs_record_delete\", :message=>\"[#{job_name}] Record deleted\", :target_id=>id, :target_class=>db_class.base_class.name, :userid => session[:userid]}\n-      end\n-      begin\n-        job.send(task.to_sym) if job.respond_to?(task)    # Run the task\n-      rescue StandardError => bang\n-        add_flash(_(\"%{model} \\\"%{name}\\\": Error during '%{task}': \") % {:model=>ui_lookup(:model=>\"MiqProxy\"), :name=>job_name, :task=>task} << bang.message, :error)\n-      else\n-        if task == \"destroy\"\n-          AuditEvent.success(audit)\n-          add_flash(_(\"%{model} \\\"%{name}\\\": Delete successful\") % {:model=>ui_lookup(:tables=>\"miq_task\"), :name=>job_name}, :error)\n-        else\n-          add_flash(_(\"\\\"%{record}\\\": %{task} successfully initiated\") % {:record=>job_name, :task=>task})\n-        end\n-      end\n-    end\n-  end\n-\n-  # handle buttons pressed on the button bar\n-  def button\n-    @edit = session[:edit]                                  # Restore @edit for adv search box\n-    params[:display] = @display if [\"vms\",\"hosts\",\"storages\"].include?(@display)  # Were we displaying vms/hosts/storages\n-\n-    edit_record  if params[:pressed] == \"host_edit\"\n-    scanhosts if params[:pressed] == \"host_scan\"\n-    refreshhosts   if params[:pressed] == \"host_refresh\"\n-    tag(Host) if params[:pressed] == \"host_tag\"\n-    deletehosts if params[:pressed] == \"host_delete\"\n-    assign_policies(Host) if params[:pressed] == \"host_protect\"\n-\n-    refreshstorage if params[:pressed] == \"storage_refresh\"\n-    tag(Storage) if params[:pressed] == \"storage_tag\"\n-\n-    pfx = pfx_for_vm_button_pressed(params[:pressed])\n-    process_vm_buttons(pfx)\n-\n-    edit_record if params[:pressed] == \"miq_proxy_edit\"\n-    deploy_build  if params[:pressed] == \"miq_proxy_deploy\"\n-\n-    deletejobs if params[:pressed] == \"miq_task_delete\"\n-    deletealljobs if params[:pressed] == \"miq_task_deleteall\"\n-    deleteolderjobs if params[:pressed] == \"miq_task_deleteolder\"\n-    canceljobs if params[:pressed] == \"miq_task_canceljob\"\n-    reloadjobs if params[:pressed] == \"miq_task_reload\"\n-\n-    # Control transferred to another screen, so return\n-    return if [\"miq_proxy_deploy\",\"host_tag\", \"#{pfx}_policy_sim\", \"host_scan\",\n-               \"host_refresh\",\"host_protect\",\"#{pfx}_compare\", \"#{pfx}_tag\",\n-               \"#{pfx}_protect\",\"#{pfx}_scan\",\"#{pfx}_retire\",\"#{pfx}_ownership\",\n-               \"#{pfx}_right_size\",\"storage_tag\"].include?(params[:pressed]) && @flash_array == nil\n-\n-    if ![\"#{pfx}_edit\",\"host_edit\",\"miq_proxy_edit\",\"delete\",\"deleteall\",\n-         \"deleteolder\",\"canceljob\",\"miq_task_delete\",\"miq_task_deleteall\",\n-         \"miq_task_deleteolder\",\"miq_task_canceljob\",\"miq_task_reload\",\n-         \"miq_proxy_deploy\",\"#{pfx}_miq_request_new\",\"#{pfx}_clone\",\"#{pfx}_migrate\",\n-         \"#{pfx}_publish\"].include?(params[:pressed])\n-      @refresh_div = \"main_div\"\n-      @refresh_partial = \"layouts/gtl\"\n-      show                                                        # Handle EMS buttons\n-    end\n-\n-    if !@refresh_partial # if no button handler ran, show not implemented msg\n-      add_flash(_(\"Button not yet implemented\"), :error)\n-      @refresh_partial = \"layouts/flash_msg\"\n-      @refresh_div = \"flash_msg_div\"\n-    end\n-\n-    if params[:pressed].ends_with?(\"_edit\")\n-      render :update do |page|\n-        page.redirect_to :action=>@refresh_partial, :id=>@redirect_id\n-      end\n-    elsif [\"#{pfx}_miq_request_new\",\"#{pfx}_clone\",\"#{pfx}_migrate\",\"#{pfx}_publish\"].include?(params[:pressed])\n-      if @redirect_controller\n-        if [\"#{pfx}_clone\",\"#{pfx}_migrate\",\"#{pfx}_publish\"].include?(params[:pressed])\n-          render :update do |page|\n-            page.redirect_to :controller=>@redirect_controller, :action=>@refresh_partial, :id=>@redirect_id, :prov_type=>@prov_type, :prov_id=>@prov_id\n-          end\n-        else\n-          render :update do |page|\n-            page.redirect_to :controller=>@redirect_controller, :action=>@refresh_partial, :id=>@redirect_id\n-          end\n-        end\n-      else\n-        render :update do |page|\n-          page.redirect_to :action=>@refresh_partial, :id=>@redirect_id\n-        end\n-      end\n-    else\n-      render :update do |page|                    # Use RJS to update the display\n-        if @refresh_partial != nil\n-          if @refresh_div == \"flash_msg_div\"\n-            page << \"miqSetButtons(0,'center_tb');\"                             # Reset the center toolbar\n-            page.replace(@refresh_div, :partial=>@refresh_partial)\n-          else\n-            page << \"miqSetButtons(0,'center_tb');\"                             # Reset the center toolbar\n-            if @display == \"vms\"  # If displaying vms, action_url s/b show\n-              page.replace_html(\"main_div\", :partial=>\"layouts/gtl\", :locals=>{:action_url=>\"show/#{@miq_proxy.id}\"})\n-            else\n-              page.replace_html(\"main_div\", :partial=>@refresh_partial)\n-            end\n-          end\n-        end\n-      end\n-    end\n-  end\n-\n-  # Show the main SmartProxy list view\n-  def show_list\n-    @layout = \"miq_proxy\"\n-    process_show_list\n-  end\n-\n-  # show a single item from a detail list\n-  def show\n-    @display = params[:display] || \"main\" unless control_selected?\n-    identify_miq_proxy\n-    return if record_no_longer_exists?(@miq_proxy)\n-\n-    drop_breadcrumb( {:name=>\"SmartProxies\", :url=>\"/miq_proxy/show_list?page=#{@current_page}&refresh=y\"}, true )\n-    case @display\n-    when \"download_pdf\", \"main\", \"summary_only\"\n-      get_tagdata(@miq_proxy)\n-      drop_breadcrumb( {:name=>\"SmartProxy: \" + @miq_proxy.name, :url=>\"/miq_proxy/show/#{@miq_proxy.id}\"} )\n-      @showtype = \"main\"\n-      set_summary_pdf_data if [\"download_pdf\",\"summary_only\"].include?(@display)\n-      @layout = \"miq_proxy\"\n-\n-    when \"hosts\"\n-      drop_breadcrumb( {:name=>@miq_proxy.name+\" (All Managed Hosts)\", :url=>\"/miq_proxy/show/#{@miq_proxy.id}?display=hosts\"} )\n-      @view, @pages = get_view(Host, :parent=>@miq_proxy) # Get the records (into a view) and the paginator\n-      @showtype = \"hosts\"\n-      @gtl_url = \"/miq_proxy/show/\" << @miq_proxy.id.to_s << \"?\"\n-      if @view.extras[:total_count] && @view.extras[:total_count] > @miq_proxy.hosts.length\n-        @bottom_msg = \"* You are not authorized to view \" + pluralize(@view.extras[:total_count] - @miq_proxy.hosts.length, \"other Host\") + \" on this SmartProxy\"\n-      end\n-\n-    when \"storages\"\n-      drop_breadcrumb( {:name=>@miq_proxy.name+\" (All Managed #{ui_lookup(:tables=>\"storages\")})\", :url=>\"/miq_proxy/show/#{@miq_proxy.id}?display=storages\"} )\n-      @view, @pages = get_view(Storage, :parent=>@miq_proxy)  # Get the records (into a view) and the paginator\n-      @showtype = \"storages\"\n-      @gtl_url = \"/miq_proxy/show/\" << @miq_proxy.id.to_s << \"?\"\n-      if @view.extras[:total_count] && @view.extras[:total_count] > @miq_proxy.storages.length\n-        @bottom_msg = \"* You are not authorized to view \" + pluralize(@view.extras[:total_count] - @miq_proxy.storages.length, \"other \" + ui_lookup(:table=>\"storages\")) + \" on this SmartProxy\"\n-      end\n-\n-    when \"miq_templates\", \"vms\"\n-      title, kls = @display == \"vms\" ? [\"VMs\", Vm] : [\"Templates\", MiqTemplate]\n-      drop_breadcrumb( {:name=>@miq_proxy.name+\" (All #{title})\", :url=>\"/miq_proxy/show/#{@miq_proxy.id}?display=#{@display}\"} )\n-      @view, @pages = get_view(kls, :parent=>@miq_proxy)  # Get the records (into a view) and the paginator\n-      @showtype = @display\n-      @gtl_url = \"/miq_proxy/show/\" << @miq_proxy.id.to_s << \"?\"\n-      if @view.extras[:total_count] && @view.extras[:auth_count] &&\n-          @view.extras[:total_count] > @view.extras[:auth_count]\n-        @bottom_msg = \"* You are not authorized to view \" + pluralize(@view.extras[:total_count] - @view.extras[:auth_count], \"other #{title.singularize}\") + \" on this SmartProxy\"\n-      end\n-    end\n-    @lastaction = \"show\"\n-    # Came in from outside show_list partial\n-    if params[:ppsetting]  || params[:searchtag] || params[:entry] || params[:sort_choice]\n-      replace_gtl_main_div\n-    end\n-  end\n-\n-  def new\n-    assert_privileges(\"miq_proxy_new\")\n-    @miq_proxy = MiqProxy.new\n-    set_form_vars\n-    @in_a_form = true\n-    drop_breadcrumb( {:name=>\"Add New SmartProxy\", :url=>\"/miq_proxy/new\"} )\n-  end\n-\n-  def create\n-    assert_privileges(\"miq_proxy_new\")\n-    return unless load_edit(\"proxy_edit__new\")\n-    get_form_vars\n-    case params[:button]\n-    when \"cancel\"\n-      render :update do |page|\n-        page.redirect_to :action=>'show_list', :flash_msg=>_(\"Add of new %s was cancelled by the user\") % ui_lookup(:model=>\"MiqProxy\")\n-      end\n-    when \"add\"\n-      add_miq_proxy = MiqProxy.new\n-      set_record_vars(add_miq_proxy)\n-      if valid_record?(add_miq_proxy) && add_miq_proxy.save\n-        Host.find_by_name(@edit[:new][:name]).miq_proxy = add_miq_proxy\n-        AuditEvent.success(build_created_audit(add_miq_proxy, @edit))\n-        render :update do |page|\n-          page.redirect_to :action=>'show_list', :flash_msg=>_(\"%{model} \\\"%{name}\\\" was added\") % {:model=>ui_lookup(:model=>\"MiqProxy\"), :name=>add_miq_proxy.name}\n-        end\n-        return\n-      else\n-        @in_a_form = true\n-        @edit[:errors].each { |msg| add_flash(msg, :error) }\n-        add_miq_proxy.errors.each do |field,msg|\n-          add_flash(\"#{field.to_s.capitalize} #{msg}\", :error)\n-        end\n-        drop_breadcrumb( {:name=>\"Add New SmartProxy\", :url=>\"/miq_proxy/new\"} )\n-        render :update do |page|\n-          page.replace(\"flash_msg_div\", :partial=>\"layouts/flash_msg\")\n-        end\n-      end\n-    when \"validate\"\n-      verify_miq_proxy = MiqProxy.new\n-      set_record_vars(verify_miq_proxy)\n-      @in_a_form = true\n-      begin\n-        verify_miq_proxy.verify_credentials\n-      rescue StandardError=>bang\n-        add_flash(\"#{bang}\", :error)\n-      else\n-        add_flash(_(\"Credential validation was successful\"))\n-      end\n-      render :update do |page|\n-        page.replace(\"flash_msg_div\", :partial=>\"layouts/flash_msg\")\n-      end\n-    end\n-  end\n-\n-  def edit\n-    assert_privileges(\"miq_proxy_edit\")\n-    identify_miq_proxy\n-    set_form_vars\n-    @in_a_form = true\n-    session[:changed] = false\n-    drop_breadcrumb( {:name=>\"Edit SmartProxy '#{@miq_proxy.name}'\", :url=>\"/miq_proxy/edit/#{@miq_proxy.id}\"} )\n-  end\n-\n-  # AJAX driven routine to check for changes in ANY field on the form\n-  def form_field_changed\n-    return unless load_edit(\"proxy_edit__#{params[:id]}\")\n-    get_form_vars\n-    changed = (@edit[:new] != @edit[:current])\n-    render :update do |page|                    # Use JS to update the display\n-      if changed != session[:changed]\n-        session[:changed] = changed\n-        page << javascript_for_miq_button_visibility(changed)\n-      end\n-    end\n-  end\n-\n-  def update\n-    assert_privileges(\"miq_proxy_edit\")\n-    return unless load_edit(\"proxy_edit__#{params[:id]}\")\n-    get_form_vars\n-    changed = (@edit[:new] != @edit[:current])\n-    case params[:button]\n-    when \"cancel\"\n-      session[:edit] = nil  # clean out the saved info\n-      flash = _(\"Edit of %{model} \\\"%{name}\\\" was cancelled by the user\") % {:model=>ui_lookup(:model=>\"MiqProxy\"), :name=>@miq_proxy.name}\n-      render :update do |page|\n-        page.redirect_to :action=>@lastaction, :id=>@miq_proxy.id, :display=>session[:miqproxy_display], :flash_msg=>flash\n-      end\n-    when \"save\"\n-      update_miq_proxy = find_by_id_filtered(MiqProxy, params[:id])\n-      set_record_vars(update_miq_proxy)\n-      if valid_record?(update_miq_proxy) && update_miq_proxy.save\n-        flash = _(\"%{model} \\\"%{name}\\\" was saved\") % {:model=>ui_lookup(:model=>\"MiqProxy\"), :name=>update_miq_proxy.name}\n-        AuditEvent.success(build_saved_audit(update_miq_proxy, @edit))\n-        if agent_settings_changed?\n-          audit = {:event=>\"agent_settings_activate\", :target_id=>update_miq_proxy.id, :target_class=>update_miq_proxy.class.base_class.name, :userid => session[:userid]}\n-          begin\n-          update_miq_proxy.change_agent_config          # Activate the new miq_proxy settings\n-          rescue StandardError=>bang\n-            add_flash(_(\"Settings activation returned: \") << bang.message, :error)\n-            AuditEvent.failure(audit.merge(:message=>\"[#{update_miq_proxy.name}] SmartProxy settings activation returned: #{bang}\"))\n-          else\n-            add_flash(_(\"New settings have been activated\"))\n-            AuditEvent.success(audit.merge(:message=>\"[#{update_miq_proxy.name}] SmartProxy settings have been activated\"))\n-          end\n-        end\n-        session[:edit] = nil  # clean out the saved info\n-        render :update do |page|\n-          page.redirect_to :action=>'show', :id=>@miq_proxy.id.to_s, :flash_msg=>flash\n-        end\n-        return\n-      else\n-        @edit[:errors].each { |msg| add_flash(msg, :error) }\n-        update_miq_proxy.errors.each do |field,msg|\n-          add_flash(\"#{field.to_s.capitalize} #{msg}\", :error)\n-        end\n-        drop_breadcrumb( {:name=>\"Edit SmartProxy '#{@miq_proxy.name}'\", :url=>\"/miq_proxy/edit/#{@miq_proxy.id}\"} )\n-        @in_a_form = true\n-        session[:changed] = changed\n-        @changed = true\n-        render :update do |page|\n-          page.replace(\"flash_msg_div\", :partial=>\"layouts/flash_msg\")\n-        end\n-      end\n-    when \"reset\"\n-      params[:edittype] = @edit[:edittype]    # remember the edit type\n-      add_flash(_(\"All changes have been reset\"), :warning)\n-      @in_a_form = true\n-      session[:flash_msgs] = @flash_array.dup                 # Put msgs in session for next transaction\n-      render :update do |page|\n-        page.redirect_to :action=>'edit', :id=>@miq_proxy.id.to_s\n-      end\n-    end\n-  end\n-\n-  # Gather any changed options\n-  def tasks_change_options\n-    @edit = session[:edit]\n-    @edit[:opts][:zone] = params[:chosen_zone] if params[:chosen_zone]\n-    @edit[:opts][:user_choice] = params[:user_choice] if params[:user_choice]\n-    @edit[:opts][:time_period] = params[:time_period].to_i if params[:time_period]\n-    @edit[:opts][:queued] = params[:queued] == \"1\" ? params[:queued] : nil if params[:queued]\n-    @edit[:opts][:ok] = params[:ok] == \"1\" ? params[:ok] : nil if params[:ok]\n-    @edit[:opts][:error] = params[:error] == \"1\" ? params[:error] : nil if params[:error]\n-    @edit[:opts][:warn] = params[:warn] == \"1\" ? params[:warn] : nil if params[:warn]\n-    @edit[:opts][:running] = params[:running] == \"1\" ? params[:running] : nil if params[:running]\n-    @edit[:opts][:state_choice] = params[:state_choice] if params[:state_choice]\n-\n-    render :update do |page|\n-      page << javascript_for_miq_button_visibility(@tasks_options[@tabform] != @edit[:opts])\n-    end\n-  end\n-\n-  # Refresh the display with the chosen filters\n-  def tasks_button\n-    @edit = session[:edit]\n-    if params[:button] == \"apply\"\n-      @tasks_options[@tabform] = copy_hash(@edit[:opts]) # Copy the latest changed options\n-    elsif params[:button] == \"reset\"\n-      @edit[:opts] = copy_hash(@tasks_options[@tabform]) # Reset to the saved options\n-    elsif params[:button] == \"default\"\n-      tasks_set_default_options\n-      @edit[:opts] = copy_hash(@tasks_options[@tabform]) # Backup current settings\n-    end\n-\n-    get_jobs(tasks_condition(@tasks_options[@tabform]))  # Get the jobs based on the latest options\n-    @pp_choices = PPCHOICES2                             # Get special pp choices for jobs/tasks lists\n-\n-    render :update do |page|\n-      page.replace(\"flash_msg_div\", :partial => \"layouts/flash_msg\")\n-      page << \"miqSetButtons(0,'center_tb');\"                             # Reset the center toolbar\n-      page.replace(\"main_div\", :partial=>\"layouts/tasks\")\n-      page << \"miqSparkle(false);\"\n-    end\n-  end\n-\n-  # Install/reinstall a SmartProxy build on the associated host\n-  def install_007","path":"vmdb/app/controllers/miq_proxy_controller.rb","position":590,"original_position":590,"commit_id":"dd78b889084087c8e1db28ee1b3ecb62e48c1f91","original_commit_id":"dd78b889084087c8e1db28ee1b3ecb62e48c1f91","user":{"login":"jrafanie","id":19339,"avatar_url":"https://avatars.githubusercontent.com/u/19339?v=3","gravatar_id":"","url":"https://api.github.com/users/jrafanie","html_url":"https://github.com/jrafanie","followers_url":"https://api.github.com/users/jrafanie/followers","following_url":"https://api.github.com/users/jrafanie/following{/other_user}","gists_url":"https://api.github.com/users/jrafanie/gists{/gist_id}","starred_url":"https://api.github.com/users/jrafanie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrafanie/subscriptions","organizations_url":"https://api.github.com/users/jrafanie/orgs","repos_url":"https://api.github.com/users/jrafanie/repos","events_url":"https://api.github.com/users/jrafanie/events{/privacy}","received_events_url":"https://api.github.com/users/jrafanie/received_events","type":"User","site_admin":false},"body":"Goodbye 007, you'll be missed!\r\n\r\nDon't say \"agent\", call it something else...","created_at":"2015-04-20T13:50:55Z","updated_at":"2015-04-20T13:50:55Z","html_url":"https://github.com/ManageIQ/manageiq/pull/1531#discussion_r28689668","pull_request_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531","_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments/28689668"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/1531#discussion_r28689668"},"pull_request":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531"}}},"pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531","id":28419068,"html_url":"https://github.com/ManageIQ/manageiq/pull/1531","diff_url":"https://github.com/ManageIQ/manageiq/pull/1531.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/1531.patch","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/1531","number":1531,"state":"closed","locked":false,"title":"Remove MiqProxy and related code","user":{"login":"gmcculloug","id":2591569,"avatar_url":"https://avatars.githubusercontent.com/u/2591569?v=3","gravatar_id":"","url":"https://api.github.com/users/gmcculloug","html_url":"https://github.com/gmcculloug","followers_url":"https://api.github.com/users/gmcculloug/followers","following_url":"https://api.github.com/users/gmcculloug/following{/other_user}","gists_url":"https://api.github.com/users/gmcculloug/gists{/gist_id}","starred_url":"https://api.github.com/users/gmcculloug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmcculloug/subscriptions","organizations_url":"https://api.github.com/users/gmcculloug/orgs","repos_url":"https://api.github.com/users/gmcculloug/repos","events_url":"https://api.github.com/users/gmcculloug/events{/privacy}","received_events_url":"https://api.github.com/users/gmcculloug/received_events","type":"User","site_admin":false},"body":"Removing logic related to the external SmartProxy.\r\n\r\n@dclarizio  This PR needs some UI effort to remove references to the removed models: MiqProxy, ProductUpdate and ProxyTask","created_at":"2015-01-31T18:57:18Z","updated_at":"2015-04-20T13:50:55Z","closed_at":"2015-04-20T13:43:19Z","merged_at":"2015-04-20T13:43:19Z","merge_commit_sha":"2dfd6a4111818ed9858dc92fbaf5ae3e5f3287f7","assignee":null,"milestone":{"url":"https://api.github.com/repos/ManageIQ/manageiq/milestones/16","html_url":"https://github.com/ManageIQ/manageiq/milestones/Sprint%2022%20Ending%20Apr%2020,%202015","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones/16/labels","id":1047038,"number":16,"title":"Sprint 22 Ending Apr 20, 2015","description":"","creator":{"login":"Fryguy","id":52120,"avatar_url":"https://avatars.githubusercontent.com/u/52120?v=3","gravatar_id":"","url":"https://api.github.com/users/Fryguy","html_url":"https://github.com/Fryguy","followers_url":"https://api.github.com/users/Fryguy/followers","following_url":"https://api.github.com/users/Fryguy/following{/other_user}","gists_url":"https://api.github.com/users/Fryguy/gists{/gist_id}","starred_url":"https://api.github.com/users/Fryguy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Fryguy/subscriptions","organizations_url":"https://api.github.com/users/Fryguy/orgs","repos_url":"https://api.github.com/users/Fryguy/repos","events_url":"https://api.github.com/users/Fryguy/events{/privacy}","received_events_url":"https://api.github.com/users/Fryguy/received_events","type":"User","site_admin":false},"open_issues":0,"closed_issues":177,"state":"open","created_at":"2015-03-31T13:58:52Z","updated_at":"2015-04-20T13:50:48Z","due_on":"2015-04-20T04:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531/commits","review_comments_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531/comments","review_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/1531/comments","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/dd78b889084087c8e1db28ee1b3ecb62e48c1f91","head":{"label":"gmcculloug:remove_miq_proxy","ref":"remove_miq_proxy","sha":"dd78b889084087c8e1db28ee1b3ecb62e48c1f91","user":{"login":"gmcculloug","id":2591569,"avatar_url":"https://avatars.githubusercontent.com/u/2591569?v=3","gravatar_id":"","url":"https://api.github.com/users/gmcculloug","html_url":"https://github.com/gmcculloug","followers_url":"https://api.github.com/users/gmcculloug/followers","following_url":"https://api.github.com/users/gmcculloug/following{/other_user}","gists_url":"https://api.github.com/users/gmcculloug/gists{/gist_id}","starred_url":"https://api.github.com/users/gmcculloug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmcculloug/subscriptions","organizations_url":"https://api.github.com/users/gmcculloug/orgs","repos_url":"https://api.github.com/users/gmcculloug/repos","events_url":"https://api.github.com/users/gmcculloug/events{/privacy}","received_events_url":"https://api.github.com/users/gmcculloug/received_events","type":"User","site_admin":false},"repo":{"id":20885993,"name":"manageiq","full_name":"gmcculloug/manageiq","owner":{"login":"gmcculloug","id":2591569,"avatar_url":"https://avatars.githubusercontent.com/u/2591569?v=3","gravatar_id":"","url":"https://api.github.com/users/gmcculloug","html_url":"https://github.com/gmcculloug","followers_url":"https://api.github.com/users/gmcculloug/followers","following_url":"https://api.github.com/users/gmcculloug/following{/other_user}","gists_url":"https://api.github.com/users/gmcculloug/gists{/gist_id}","starred_url":"https://api.github.com/users/gmcculloug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gmcculloug/subscriptions","organizations_url":"https://api.github.com/users/gmcculloug/orgs","repos_url":"https://api.github.com/users/gmcculloug/repos","events_url":"https://api.github.com/users/gmcculloug/events{/privacy}","received_events_url":"https://api.github.com/users/gmcculloug/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gmcculloug/manageiq","description":"ManageIQ Cloud Management Platform","fork":true,"url":"https://api.github.com/repos/gmcculloug/manageiq","forks_url":"https://api.github.com/repos/gmcculloug/manageiq/forks","keys_url":"https://api.github.com/repos/gmcculloug/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gmcculloug/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gmcculloug/manageiq/teams","hooks_url":"https://api.github.com/repos/gmcculloug/manageiq/hooks","issue_events_url":"https://api.github.com/repos/gmcculloug/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/gmcculloug/manageiq/events","assignees_url":"https://api.github.com/repos/gmcculloug/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/gmcculloug/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/gmcculloug/manageiq/tags","blobs_url":"https://api.github.com/repos/gmcculloug/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gmcculloug/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gmcculloug/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/gmcculloug/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gmcculloug/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/gmcculloug/manageiq/languages","stargazers_url":"https://api.github.com/repos/gmcculloug/manageiq/stargazers","contributors_url":"https://api.github.com/repos/gmcculloug/manageiq/contributors","subscribers_url":"https://api.github.com/repos/gmcculloug/manageiq/subscribers","subscription_url":"https://api.github.com/repos/gmcculloug/manageiq/subscription","commits_url":"https://api.github.com/repos/gmcculloug/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/gmcculloug/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/gmcculloug/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/gmcculloug/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/gmcculloug/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/gmcculloug/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gmcculloug/manageiq/merges","archive_url":"https://api.github.com/repos/gmcculloug/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gmcculloug/manageiq/downloads","issues_url":"https://api.github.com/repos/gmcculloug/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/gmcculloug/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/gmcculloug/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/gmcculloug/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gmcculloug/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/gmcculloug/manageiq/releases{/id}","created_at":"2014-06-16T13:34:52Z","updated_at":"2015-04-18T14:09:39Z","pushed_at":"2015-04-20T13:50:35Z","git_url":"git://github.com/gmcculloug/manageiq.git","ssh_url":"git@github.com:gmcculloug/manageiq.git","clone_url":"https://github.com/gmcculloug/manageiq.git","svn_url":"https://github.com/gmcculloug/manageiq","homepage":null,"size":70972,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ManageIQ:master","ref":"master","sha":"f6a659bfd50643dee68688a5ee6510b953d38fc0","user":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"repo":{"id":20789757,"name":"manageiq","full_name":"ManageIQ/manageiq","owner":{"login":"ManageIQ","id":1125575,"avatar_url":"https://avatars.githubusercontent.com/u/1125575?v=3","gravatar_id":"","url":"https://api.github.com/users/ManageIQ","html_url":"https://github.com/ManageIQ","followers_url":"https://api.github.com/users/ManageIQ/followers","following_url":"https://api.github.com/users/ManageIQ/following{/other_user}","gists_url":"https://api.github.com/users/ManageIQ/gists{/gist_id}","starred_url":"https://api.github.com/users/ManageIQ/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ManageIQ/subscriptions","organizations_url":"https://api.github.com/users/ManageIQ/orgs","repos_url":"https://api.github.com/users/ManageIQ/repos","events_url":"https://api.github.com/users/ManageIQ/events{/privacy}","received_events_url":"https://api.github.com/users/ManageIQ/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ManageIQ/manageiq","description":"ManageIQ Cloud Management Platform","fork":false,"url":"https://api.github.com/repos/ManageIQ/manageiq","forks_url":"https://api.github.com/repos/ManageIQ/manageiq/forks","keys_url":"https://api.github.com/repos/ManageIQ/manageiq/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ManageIQ/manageiq/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ManageIQ/manageiq/teams","hooks_url":"https://api.github.com/repos/ManageIQ/manageiq/hooks","issue_events_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/events{/number}","events_url":"https://api.github.com/repos/ManageIQ/manageiq/events","assignees_url":"https://api.github.com/repos/ManageIQ/manageiq/assignees{/user}","branches_url":"https://api.github.com/repos/ManageIQ/manageiq/branches{/branch}","tags_url":"https://api.github.com/repos/ManageIQ/manageiq/tags","blobs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ManageIQ/manageiq/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ManageIQ/manageiq/git/refs{/sha}","trees_url":"https://api.github.com/repos/ManageIQ/manageiq/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ManageIQ/manageiq/statuses/{sha}","languages_url":"https://api.github.com/repos/ManageIQ/manageiq/languages","stargazers_url":"https://api.github.com/repos/ManageIQ/manageiq/stargazers","contributors_url":"https://api.github.com/repos/ManageIQ/manageiq/contributors","subscribers_url":"https://api.github.com/repos/ManageIQ/manageiq/subscribers","subscription_url":"https://api.github.com/repos/ManageIQ/manageiq/subscription","commits_url":"https://api.github.com/repos/ManageIQ/manageiq/commits{/sha}","git_commits_url":"https://api.github.com/repos/ManageIQ/manageiq/git/commits{/sha}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/comments{/number}","issue_comment_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/comments{/number}","contents_url":"https://api.github.com/repos/ManageIQ/manageiq/contents/{+path}","compare_url":"https://api.github.com/repos/ManageIQ/manageiq/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ManageIQ/manageiq/merges","archive_url":"https://api.github.com/repos/ManageIQ/manageiq/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ManageIQ/manageiq/downloads","issues_url":"https://api.github.com/repos/ManageIQ/manageiq/issues{/number}","pulls_url":"https://api.github.com/repos/ManageIQ/manageiq/pulls{/number}","milestones_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones{/number}","notifications_url":"https://api.github.com/repos/ManageIQ/manageiq/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/labels{/name}","releases_url":"https://api.github.com/repos/ManageIQ/manageiq/releases{/id}","created_at":"2014-06-13T02:31:26Z","updated_at":"2015-04-20T13:50:45Z","pushed_at":"2015-04-20T13:50:44Z","git_url":"git://github.com/ManageIQ/manageiq.git","ssh_url":"git@github.com:ManageIQ/manageiq.git","clone_url":"https://github.com/ManageIQ/manageiq.git","svn_url":"https://github.com/ManageIQ/manageiq","homepage":"manageiq.org","size":121542,"stargazers_count":104,"watchers_count":104,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":102,"mirror_url":null,"open_issues_count":361,"forks":102,"open_issues":361,"watchers":104,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531"},"html":{"href":"https://github.com/ManageIQ/manageiq/pull/1531"},"issue":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/1531"},"comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/issues/1531/comments"},"review_comments":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531/comments"},"review_comment":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ManageIQ/manageiq/pulls/1531/commits"},"statuses":{"href":"https://api.github.com/repos/ManageIQ/manageiq/statuses/dd78b889084087c8e1db28ee1b3ecb62e48c1f91"}}}}