Skip to content

Commit b14922b

Browse files
authored
v1.3.3 (#107)
1 parent d3ee699 commit b14922b

File tree

13 files changed

+253
-85
lines changed

13 files changed

+253
-85
lines changed

_cmd.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,11 +659,25 @@ def _do_command(self, obd):
659659
return self._show_help()
660660

661661

662+
class ClusterChangeRepositoryCommand(ClusterMirrorCommand):
663+
664+
def __init__(self):
665+
super(ClusterChangeRepositoryCommand, self).__init__('change-repo', 'Change repository for a deployed component')
666+
self.parser.add_option('-c', '--component', type='string', help="Component name to change repository.")
667+
self.parser.add_option('--hash', type='string', help="Repository's hash")
668+
self.parser.add_option('-f', '--force', action='store_true', help="force change even start failed.")
669+
670+
def _do_command(self, obd):
671+
if self.cmds:
672+
return obd.change_repository(self.cmds[0], self.opts)
673+
else:
674+
return self._show_help()
675+
676+
662677
class CLusterUpgradeCommand(ClusterMirrorCommand):
663678

664679
def __init__(self):
665680
super(CLusterUpgradeCommand, self).__init__('upgrade', 'Upgrade a cluster.')
666-
self.parser.add_option('-f', '--force', action='store_true', help="Force upgrade.")
667681
self.parser.add_option('-c', '--component', type='string', help="Component name to upgrade.")
668682
self.parser.add_option('-V', '--version', type='string', help="Target version.")
669683
self.parser.add_option('--skip-check', action='store_true', help="Skip all the possible checks.")
@@ -748,6 +762,7 @@ def __init__(self):
748762
self.register_command(ClusterEditConfigCommand())
749763
self.register_command(ClusterReloadCommand())
750764
self.register_command(CLusterUpgradeCommand())
765+
self.register_command(ClusterChangeRepositoryCommand())
751766
self.register_command(ClusterTenantCommand())
752767

753768

_deploy.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -984,18 +984,18 @@ def update_upgrade_ctx(self, **uprade_ctx):
984984
self._uprade_meta = uprade_meta
985985
return False
986986

987-
def _update_component_repository(self, component, repository):
988-
if not self.deploy_config.update_component_package_hash(component, repository.hash, repository.version):
987+
def update_component_repository(self, repository):
988+
if not self.deploy_config.update_component_package_hash(repository.name, repository.hash, repository.version):
989989
return False
990-
self.use_model(component, repository)
990+
self.use_model(repository.name, repository)
991991
return True
992992

993993
def stop_upgrade(self, dest_repository=None):
994994
if self._update_deploy_status(DeployStatus.STATUS_RUNNING):
995995
self._uprade_meta = None
996996
self._dump_upgrade_meta_data()
997997
if dest_repository:
998-
self._update_component_repository(dest_repository.name, dest_repository)
998+
self.update_component_repository(dest_repository)
999999
return True
10001000
return False
10011001

_mirror.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ def get_exact_pkg(self, **pattern):
112112
info = self.get_exact_pkg_info(**pattern)
113113
return self.get_rpm_pkg_by_info(info) if info else None
114114

115+
def _pattern_check(self, pkg, **pattern):
116+
for key in ['md5', 'name', 'version', 'release', 'arch']:
117+
if pattern.get(key) is not None and getattr(pkg, key) != pattern[key]:
118+
self.stdio and getattr(self.stdio, 'verbose', print)('pkg %s is %s, but %s is required' % (key, getattr(pkg, key), pattern[key]))
119+
return None
120+
return pkg
121+
115122
def get_rpm_pkg_by_info(self, pkg_info):
116123
return None
117124

@@ -428,14 +435,14 @@ def get_repomds(self, update=False):
428435
def get_all_pkg_info(self):
429436
return [self.db[key] for key in self.db]
430437

431-
def get_rpm_info_by_md5(self, md5):
438+
def get_rpm_info_by_md5(self, md5, **pattern):
432439
if md5 in self.db:
433-
return self.db[md5]
440+
return self._pattern_check(self.db[md5], **pattern)
434441
for key in self.db:
435442
info = self.db[key]
436443
if info.md5 == md5:
437444
self.stdio and getattr(self.stdio, 'verbose', print)('%s translate info %s' % (md5, info.md5))
438-
return info
445+
return self._pattern_check(info, **pattern)
439446
return None
440447

441448
def get_rpm_pkg_by_info(self, pkg_info):
@@ -464,7 +471,7 @@ def get_best_pkg_info(self, **pattern):
464471
def get_exact_pkg_info(self, **pattern):
465472
if 'md5' in pattern and pattern['md5']:
466473
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is %s' % pattern['md5'])
467-
return self.get_rpm_info_by_md5(pattern['md5'])
474+
return self.get_rpm_info_by_md5(**pattern)
468475
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is None')
469476
if 'name' not in pattern and not pattern['name']:
470477
self.stdio and getattr(self.stdio, 'verbose', print)('name is None')
@@ -499,7 +506,10 @@ def get_pkgs_info_with_score(self, **pattern):
499506
matchs = []
500507
if 'md5' in pattern and pattern['md5']:
501508
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is %s' % pattern['md5'])
502-
return [self.db[pattern['md5']], (0xfffffffff, )] if pattern['md5'] in self.db else matchs
509+
info = None
510+
if pattern['md5'] in self.db:
511+
info = self._pattern_check(self.db[pattern['md5']], **pattern)
512+
return [info, (0xfffffffff, )] if info else matchs
503513
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is None')
504514
if 'name' not in pattern and not pattern['name']:
505515
self.stdio and getattr(self.stdio, 'verbose', print)('name is None')
@@ -689,7 +699,10 @@ def get_best_pkg_info(self, **pattern):
689699
def get_exact_pkg_info(self, **pattern):
690700
if 'md5' in pattern and pattern['md5']:
691701
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is %s' % pattern['md5'])
692-
return self.db[pattern['md5']] if pattern['md5'] in self.db else None
702+
info = None
703+
if pattern['md5'] in self.db:
704+
info = self._pattern_check(self.db[pattern['md5']], **pattern)
705+
return info
693706
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is None')
694707
if 'name' not in pattern and not pattern['name']:
695708
self.stdio and getattr(self.stdio, 'verbose', print)('name is None')
@@ -730,7 +743,10 @@ def get_pkgs_info_with_score(self, **pattern):
730743
matchs = []
731744
if 'md5' in pattern and pattern['md5']:
732745
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is %s' % pattern['md5'])
733-
return [self.db[pattern['md5']], (0xfffffffff, )] if pattern['md5'] in self.db else matchs
746+
info = None
747+
if pattern['md5'] in self.db:
748+
info = self._pattern_check(self.db[pattern['md5']], **pattern)
749+
return [info, (0xfffffffff, )] if info else matchs
734750
self.stdio and getattr(self.stdio, 'verbose', print)('md5 is None')
735751
if 'name' not in pattern and not pattern['name']:
736752
return matchs

0 commit comments

Comments
 (0)