Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Component/s: core
    • Labels:

      Description

      Hello,

      It's not possible to create a view from the API, since the views are part of the Hudson config.xml itself, it seems that the createItem URL doesn't match the need as it looks designed to create the new config.xml for a dedicated job.

      The REST API could be some thing like:

      GET http://myserver:8080/view (All views)
      GET http://myserver:8080/view/myView (switch to Specific view - myView)
      POST http://myserver:8080/view (Create new view as defined in the posted XML)

      Can you please have a look?

      Thanks and regards,

      Julien

        Issue Links

          Activity

          Hide
          simonendele Simon Endele added a comment -

          It is possible to create a view, though it's a bit complicated:
          wget --post-data='name=ViewX&mode=hudson.model.ListView&json=

          {"name": "ViewX", "mode": "hudson.model.ListView"}

          ' http://.../jenkins/createView

          Both parameters "name" and "mode" are required twice, as POST parameter and in the json argument. If one is missing, Jenkins responds with "400 Bad Request".
          I think this URL is not meant to be used as remote REST API, but it actually can.

          I would suggest to fix the problem above, so that either POST parameters can be used or a JSON snippet can be posted.

          Show
          simonendele Simon Endele added a comment - It is possible to create a view, though it's a bit complicated: wget --post-data='name=ViewX&mode=hudson.model.ListView&json= {"name": "ViewX", "mode": "hudson.model.ListView"} ' http://.../jenkins/createView Both parameters "name" and "mode" are required twice, as POST parameter and in the json argument. If one is missing, Jenkins responds with "400 Bad Request". I think this URL is not meant to be used as remote REST API, but it actually can. I would suggest to fix the problem above, so that either POST parameters can be used or a JSON snippet can be posted.
          Hide
          nullin Nalin Makar added a comment -

          another option:

          java -jar jenkins-cli.jar -s <jenkins_url> groovy createView.groovy --username <user> --password <passwd>

          where createView.groovy contains

          hudson.model.Hudson.instance.addView(new hudson.model.ListView("ViewX"))

          Show
          nullin Nalin Makar added a comment - another option: java -jar jenkins-cli.jar -s <jenkins_url> groovy createView.groovy --username <user> --password <passwd> where createView.groovy contains hudson.model.Hudson.instance.addView(new hudson.model.ListView("ViewX"))
          Hide
          patbos Patrik Boström added a comment - - edited

          Found this by looking through the source code:
          It is possible in Jenkins 1.509.4 to create views via the REST api

          view.xml:

           
          <?xml version="1.0" encoding="UTF-8"?>
          <hudson.model.ListView>
          <name>MyView</name>
          <filterExecutors>false</filterExecutors>
          <filterQueue>false</filterQueue>
          <properties class="hudson.model.View$PropertyList"/>
          <jobNames>
          <comparator class="hudson.util.CaseInsensitiveComparator"/>
          </jobNames>
          <jobFilters/>
          <columns>
          <hudson.views.StatusColumn/>
          <hudson.views.WeatherColumn/>
          <hudson.views.JobColumn/>
          <hudson.views.LastSuccessColumn/>
          <hudson.views.LastFailureColumn/>
          <hudson.views.LastDurationColumn/>
          <hudson.views.BuildButtonColumn/>
          </columns>
          </hudson.model.ListView>
          

          Create the view:

          curl -vvv -X POST -d @view.xml -H "Content-Type: text/xml" http://localhost:8080/jenkins/createView?name=MyView
          

          Get the configuration:

          curl http://localhost:8080/jenkins/view/MyView/config.xml
          

          Update the view:

          curl -X POST -d @view.xml -H "Content-Type: text/xml" http://localhost:8080/jenkins/view/MyView/config.xml
          
          Show
          patbos Patrik Boström added a comment - - edited Found this by looking through the source code: It is possible in Jenkins 1.509.4 to create views via the REST api view.xml: <?xml version= "1.0" encoding= "UTF-8" ?> <hudson.model.ListView> <name> MyView </name> <filterExecutors> false </filterExecutors> <filterQueue> false </filterQueue> <properties class= "hudson.model.View$PropertyList" /> <jobNames> <comparator class= "hudson.util.CaseInsensitiveComparator" /> </jobNames> <jobFilters/> <columns> <hudson.views.StatusColumn/> <hudson.views.WeatherColumn/> <hudson.views.JobColumn/> <hudson.views.LastSuccessColumn/> <hudson.views.LastFailureColumn/> <hudson.views.LastDurationColumn/> <hudson.views.BuildButtonColumn/> </columns> </hudson.model.ListView> Create the view: curl -vvv -X POST -d @view.xml -H "Content-Type: text/xml" http://localhost:8080/jenkins/createView?name=MyView Get the configuration: curl http://localhost:8080/jenkins/view/MyView/config.xml Update the view: curl -X POST -d @view.xml -H "Content-Type: text/xml" http://localhost:8080/jenkins/view/MyView/config.xml
          Hide
          oleg_nenashev Oleg Nenashev added a comment -

          @Patrik
          Should we consider the issue as "Resolved"?

          Show
          oleg_nenashev Oleg Nenashev added a comment - @Patrik Should we consider the issue as "Resolved"?
          Hide
          danielbeck Daniel Beck added a comment -

          Oleg: Needs to be documented on the /view/Foo/api page, similar to 'Create Job' on /api.

          Show
          danielbeck Daniel Beck added a comment - Oleg: Needs to be documented on the /view/Foo/api page, similar to 'Create Job' on /api.
          Hide
          taszluk Lukasz Tasz added a comment -

          this solution works pretty well with few limitation:

          • nestedView plugin does not register it's own class and curl end with exception that NestedView is not resolved.
          • in case of subviews, xml needs to be extended with <parent> node, unfortunately in case of coping view a to b, parent node is not visible.
          Show
          taszluk Lukasz Tasz added a comment - this solution works pretty well with few limitation: nestedView plugin does not register it's own class and curl end with exception that NestedView is not resolved. in case of subviews, xml needs to be extended with <parent> node, unfortunately in case of coping view a to b, parent node is not visible.

            People

            • Assignee:
              Unassigned
              Reporter:
              foch Julien Faucher
            • Votes:
              10 Vote for this issue
              Watchers:
              13 Start watching this issue

              Dates

              • Created:
                Updated: