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)
|
time.sleep(1)
|
||||||
|
|
||||||
self.api.accept_status_comment(project, staging_packages[project])
|
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.api.staging_deactivate(project)
|
||||||
|
|
||||||
self.reset_rebuild_data(prj)
|
self.reset_rebuild_data(prj)
|
||||||
|
@ -5,7 +5,6 @@ from colorama import Fore
|
|||||||
|
|
||||||
from osc import oscerr
|
from osc import oscerr
|
||||||
from osc.core import get_request
|
from osc.core import get_request
|
||||||
from osc.core import delete_project
|
|
||||||
from osc.core import show_package_meta
|
from osc.core import show_package_meta
|
||||||
from osc import conf
|
from osc import conf
|
||||||
|
|
||||||
@ -56,33 +55,19 @@ class AdiCommand:
|
|||||||
return
|
return
|
||||||
|
|
||||||
overall_state = info.get('state')
|
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')
|
raise oscerr.WrongArgs('Missed some case')
|
||||||
|
|
||||||
# no longer accept/delete adi projects
|
ready = []
|
||||||
return
|
for req in info.findall('staged_requests/request'):
|
||||||
|
ready.append('{}[{}]'.format(Fore.CYAN + req.get('package') + Fore.RESET, req.get('id')))
|
||||||
if self.api.is_user_member_of(self.api.user, self.api.cstaging_group):
|
if len(ready):
|
||||||
print(query_project + ' ' + Fore.GREEN + 'ready')
|
print(query_project, Fore.GREEN + 'ready:', ', '.join(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))
|
|
||||||
|
|
||||||
def check_adi_projects(self):
|
def check_adi_projects(self):
|
||||||
for p in self.api.get_adi_projects():
|
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 buildlog_strip_time
|
||||||
from osc.core import change_review_state
|
from osc.core import change_review_state
|
||||||
from osc.core import delete_package
|
from osc.core import delete_package
|
||||||
|
from osc.core import delete_project
|
||||||
from osc.core import get_commitlog
|
from osc.core import get_commitlog
|
||||||
from osc.core import get_group
|
from osc.core import get_group
|
||||||
from osc.core import get_request
|
from osc.core import get_request
|
||||||
@ -70,6 +71,7 @@ class StagingAPI(object):
|
|||||||
self._package_metas = dict()
|
self._package_metas = dict()
|
||||||
self._supersede = False
|
self._supersede = False
|
||||||
self._package_disabled = {}
|
self._package_disabled = {}
|
||||||
|
self._is_staging_manager = None
|
||||||
|
|
||||||
Cache.init()
|
Cache.init()
|
||||||
|
|
||||||
@ -146,6 +148,12 @@ class StagingAPI(object):
|
|||||||
xpath = 'repository[@name="images"]'
|
xpath = 'repository[@name="images"]'
|
||||||
return len(meta.xpath(xpath)) > 0
|
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):
|
def makeurl(self, l, query=None):
|
||||||
"""
|
"""
|
||||||
Wrapper around osc's makeurl passing our apiurl
|
Wrapper around osc's makeurl passing our apiurl
|
||||||
@ -1249,7 +1257,10 @@ class StagingAPI(object):
|
|||||||
root = self.project_status(project, reload=True)
|
root = self.project_status(project, reload=True)
|
||||||
if root.get('state') == 'empty':
|
if root.get('state') == 'empty':
|
||||||
# Cleanup like accept since the staging is now 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:
|
else:
|
||||||
self.build_switch_staging_project(project, 'enable')
|
self.build_switch_staging_project(project, 'enable')
|
||||||
|
|
||||||
@ -1484,3 +1495,16 @@ class StagingAPI(object):
|
|||||||
return meta.find(xpath) is not None
|
return meta.find(xpath) is not None
|
||||||
|
|
||||||
return False
|
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