Delete adi projects whenever we'd build disable them
This commit is contained in:
parent
24345fd45d
commit
b60333075a
@ -116,6 +116,10 @@ class AcceptCommand(object):
|
||||
time.sleep(1)
|
||||
|
||||
self.api.accept_status_comment(project, staging_packages[project])
|
||||
if self.api.is_adi_project(project):
|
||||
self.api.delete_empty_adi_project(project)
|
||||
return
|
||||
|
||||
self.api.staging_deactivate(project)
|
||||
|
||||
self.reset_rebuild_data(prj)
|
||||
|
@ -5,7 +5,6 @@ from colorama import Fore
|
||||
|
||||
from osc import oscerr
|
||||
from osc.core import get_request
|
||||
from osc.core import delete_project
|
||||
from osc.core import show_package_meta
|
||||
from osc import conf
|
||||
|
||||
@ -56,33 +55,19 @@ class AdiCommand:
|
||||
return
|
||||
|
||||
overall_state = info.get('state')
|
||||
if overall_state != 'acceptable' and overall_state != 'empty':
|
||||
|
||||
if overall_state == 'empty':
|
||||
self.api.delete_empty_adi_project(project)
|
||||
return
|
||||
|
||||
if overall_state != 'acceptable':
|
||||
raise oscerr.WrongArgs('Missed some case')
|
||||
|
||||
# no longer accept/delete adi projects
|
||||
return
|
||||
|
||||
if self.api.is_user_member_of(self.api.user, self.api.cstaging_group):
|
||||
print(query_project + ' ' + Fore.GREEN + 'ready')
|
||||
packages = []
|
||||
for req in info.findall('staged_requests/request'):
|
||||
msg = 'ready to accept'
|
||||
print(' - {} [{}]'.format(Fore.CYAN + req.get('package') + Fore.RESET, req.get('id')))
|
||||
self.api.rm_from_prj(project, request_id=req.get('id'), msg=msg)
|
||||
self.api.do_change_review_state(req.get('id'), 'accepted', by_group=self.api.cstaging_group, message=msg)
|
||||
packages.append(req.get('package'))
|
||||
self.api.accept_status_comment(project, packages)
|
||||
try:
|
||||
delete_project(self.api.apiurl, project, force=True)
|
||||
except HTTPError as e:
|
||||
print(e)
|
||||
pass
|
||||
else:
|
||||
ready = []
|
||||
for req in info.findall('staged_requests/request'):
|
||||
ready.append('{}[{}]'.format(Fore.CYAN + req.get('package') + Fore.RESET, req.get('id')))
|
||||
if len(ready):
|
||||
print(query_project, Fore.GREEN + 'ready:', ', '.join(ready))
|
||||
ready = []
|
||||
for req in info.findall('staged_requests/request'):
|
||||
ready.append('{}[{}]'.format(Fore.CYAN + req.get('package') + Fore.RESET, req.get('id')))
|
||||
if len(ready):
|
||||
print(query_project, Fore.GREEN + 'ready:', ', '.join(ready))
|
||||
|
||||
def check_adi_projects(self):
|
||||
for p in self.api.get_adi_projects():
|
||||
|
@ -20,6 +20,7 @@ from osc.core import show_package_meta
|
||||
from osc.core import buildlog_strip_time
|
||||
from osc.core import change_review_state
|
||||
from osc.core import delete_package
|
||||
from osc.core import delete_project
|
||||
from osc.core import get_commitlog
|
||||
from osc.core import get_group
|
||||
from osc.core import get_request
|
||||
@ -70,6 +71,7 @@ class StagingAPI(object):
|
||||
self._package_metas = dict()
|
||||
self._supersede = False
|
||||
self._package_disabled = {}
|
||||
self._is_staging_manager = None
|
||||
|
||||
Cache.init()
|
||||
|
||||
@ -146,6 +148,12 @@ class StagingAPI(object):
|
||||
xpath = 'repository[@name="images"]'
|
||||
return len(meta.xpath(xpath)) > 0
|
||||
|
||||
@property
|
||||
def is_staging_manager(self):
|
||||
if self._is_staging_manager is None:
|
||||
self._is_staging_manager = self.is_user_member_of(self.user, self.cstaging_group)
|
||||
return self._is_staging_manager
|
||||
|
||||
def makeurl(self, l, query=None):
|
||||
"""
|
||||
Wrapper around osc's makeurl passing our apiurl
|
||||
@ -1249,7 +1257,10 @@ class StagingAPI(object):
|
||||
root = self.project_status(project, reload=True)
|
||||
if root.get('state') == 'empty':
|
||||
# Cleanup like accept since the staging is now empty.
|
||||
self.staging_deactivate(project)
|
||||
if self.is_adi_project(project):
|
||||
self.api.delete_empty_adi_project(project)
|
||||
else:
|
||||
self.staging_deactivate(project)
|
||||
else:
|
||||
self.build_switch_staging_project(project, 'enable')
|
||||
|
||||
@ -1484,3 +1495,16 @@ class StagingAPI(object):
|
||||
return meta.find(xpath) is not None
|
||||
|
||||
return False
|
||||
|
||||
def delete_empty_adi_project(self, project):
|
||||
if not self.is_adi_project(project):
|
||||
return
|
||||
|
||||
if not self.is_staging_manager:
|
||||
return
|
||||
|
||||
try:
|
||||
delete_project(self.apiurl, project, force=True)
|
||||
except HTTPError as e:
|
||||
print(e)
|
||||
pass
|
||||
|
Loading…
x
Reference in New Issue
Block a user