← Back to team overview

python-jenkins-developers team mailing list archive

[Bug 1781381] Re: Cannot delete build using delete_build

 

my cmd2.Cmd wrapper with a workaround, simply replaces b'' w/ {}

     def do_deletebuild(self, args):                                                                  
          """delete build numbers                                                                      
                                                                                                       
          WIP, fails on maybe_add_crumb                                                                
          https://www.mail-archive.com/python-jenkins-developers@xxxxxxxxxxxxxxxxxxx/msg00533.html     
          """                                                                                          
          if hasattr(self, 'jobs'):                                                                    
              _jobs = self.jobs                                                                        
          else:                                                                                        
              # this is the path for nested jobs                                                       
              # e.g. Release_3.3/GOLD/PERFORMANCE/EDGE1000 property lastBuild                          
              _jobs = args[:1]                                                                         
              args = args[1:]                                                                          
          if isinstance(_jobs[0], str):                                                                
              _jobs[0] = dict(name=_jobs[0])                                                           
          jobname = _jobs[0]['name']                                                                   
          try:                                                                                         
              numbers = int(args[0])                                                                   
              if numbers < 0:                                                                          
                  # TODO all but N newest                                                              
                  pass                                                                                 
              numbers = range(numbers, numbers + 1)                                                    
          except ValueError:                                                                           
              numbers = args[0].split('-')                                                             
              numbers = range(int(numbers[0]), int(numbers[1]) + 1)                                    
              # delete a range                                                                         
                                                                                                       
          for number in numbers:                                                                       
              folder_url, short_name = self.server._get_job_folder(jobname)                            
              url = self.server._build_url(jenkins.DELETE_BUILD, locals())                             
              headers = {}                                                                             
              self.server.jenkins_open(requests.Request('POST', url, headers))

-- 
You received this bug notification because you are a member of Python
Jenkins Developers, which is subscribed to Python Jenkins.
https://bugs.launchpad.net/bugs/1781381

Title:
  Cannot delete build using delete_build

Status in Python Jenkins:
  New

Bug description:
  Requirement already up-to-date: python-jenkins in
  .XXXXXXX/venv/lib/python3.6/site-packages (1.0.2)

  
  In line 357 of __init__.py (function maybe_add_crumb) the code fails on req.headers[self.crumb['crumbRequestField']] = self.crumb['crumb']

  at this point i have a value for self.crumb and req.headers is b''

  the error i get is "bytes' object does not support item assignment"

  trace

   File "XXXXXX.py", line 9, in <module>
      j.delete_build(r"Whale Watchers/Project Whale Watcher QA - Grouped", k)
    File "XXXXXX/venv/lib/python3.6/site-packages/jenkins/__init__.py", line 1354, in delete_build
      self._build_url(DELETE_BUILD, locals()), b''))
    File "XXXXXX/venv/lib/python3.6/site-packages/jenkins/__init__.py", line 540, in jenkins_open
      return self.jenkins_request(req, add_crumb, resolve_auth).text
    File "XXXXXX/venv/lib/python3.6/site-packages/jenkins/__init__.py", line 556, in jenkins_request
      self.maybe_add_crumb(req)
    File "XXXXXX/venv/lib/python3.6/site-packages/jenkins/__init__.py", line 357, in maybe_add_crumb
      req.headers[self.crumb['crumbRequestField']] = self.crumb['crumb']
  TypeError: 'bytes' object does not support item assignment

To manage notifications about this bug go to:
https://bugs.launchpad.net/python-jenkins/+bug/1781381/+subscriptions


References