Upgrade with graph as default instead python based
Closes-bug: 1646112 Change-Id: I37365b134e10e429f82fbbaff341ed04b31030b9
This commit is contained in:
parent
678d7ea1ef
commit
ed1b08b6f4
|
@ -262,27 +262,32 @@ class UpgradeOSDCommand(cmd.Command):
|
||||||
type=int,
|
type=int,
|
||||||
metavar='SEED_ENV_ID',
|
metavar='SEED_ENV_ID',
|
||||||
help="ID of seed environment")
|
help="ID of seed environment")
|
||||||
parser.add_argument(
|
group = parser.add_argument_group()
|
||||||
|
group.add_argument(
|
||||||
"--admin-password",
|
"--admin-password",
|
||||||
type=str,
|
type=str,
|
||||||
action="store",
|
action="store",
|
||||||
dest="admin_password",
|
dest="admin_password",
|
||||||
required=True,
|
help="Fuel admin password",
|
||||||
help="Fuel admin password")
|
required=False)
|
||||||
parser.add_argument(
|
group.add_argument(
|
||||||
'--with-graph', action='store_true',
|
'--without-graph', action='store_true',
|
||||||
help='EXPERIMENTAL: Use Fuel deployment graphs'
|
help='Use python-based commands'
|
||||||
' instead of python-based commands.')
|
' instead of Fuel deployment graphs.',
|
||||||
|
required=False)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
if parsed_args.with_graph:
|
if (bool(parsed_args.admin_password) != parsed_args.without_graph):
|
||||||
upgrade_osd_with_graph(
|
raise AssertionError(
|
||||||
parsed_args.orig_env_id,
|
'Admin password required only for not graph upgrade')
|
||||||
parsed_args.seed_env_id)
|
if parsed_args.without_graph:
|
||||||
else:
|
|
||||||
upgrade_osd(
|
upgrade_osd(
|
||||||
parsed_args.orig_env_id,
|
parsed_args.orig_env_id,
|
||||||
parsed_args.seed_env_id,
|
parsed_args.seed_env_id,
|
||||||
'admin',
|
'admin',
|
||||||
parsed_args.admin_password)
|
parsed_args.admin_password)
|
||||||
|
else:
|
||||||
|
upgrade_osd_with_graph(
|
||||||
|
parsed_args.orig_env_id,
|
||||||
|
parsed_args.seed_env_id)
|
||||||
|
|
|
@ -154,14 +154,14 @@ class PreupgradeComputeCommand(cmd.Command):
|
||||||
help="IDs of compute nodes to be preupgraded",
|
help="IDs of compute nodes to be preupgraded",
|
||||||
nargs="+")
|
nargs="+")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--with-graph', action='store_true',
|
'--without-graph', action='store_true',
|
||||||
help='EXPERIMENTAL: Use Fuel deployment graphs'
|
help='Use python-based commands'
|
||||||
' instead of python-based commands.')
|
' instead of Fuel deployment graphs.')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
if parsed_args.with_graph:
|
if parsed_args.without_graph:
|
||||||
|
preupgrade_compute(parsed_args.release_id, parsed_args.node_ids)
|
||||||
|
else:
|
||||||
preupgrade_compute_with_graph(parsed_args.release_id,
|
preupgrade_compute_with_graph(parsed_args.release_id,
|
||||||
parsed_args.node_ids)
|
parsed_args.node_ids)
|
||||||
else:
|
|
||||||
preupgrade_compute(parsed_args.release_id, parsed_args.node_ids)
|
|
||||||
|
|
|
@ -191,13 +191,13 @@ class UpgradeCephCommand(cmd.Command):
|
||||||
'seed_id', type=int, metavar='SEED_ID',
|
'seed_id', type=int, metavar='SEED_ID',
|
||||||
help="ID of seed environment")
|
help="ID of seed environment")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--with-graph', action='store_true',
|
'--without-graph', action='store_true',
|
||||||
help='EXPERIMENTAL: Use Fuel deployment graphs'
|
help='Use Fuel python-based commands'
|
||||||
' instead of python-based commands.')
|
' instead of deployment graphs.')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
if parsed_args.with_graph:
|
if parsed_args.without_graph:
|
||||||
upgrade_ceph_with_graph(parsed_args.orig_id, parsed_args.seed_id)
|
|
||||||
else:
|
|
||||||
upgrade_ceph(parsed_args.orig_id, parsed_args.seed_id)
|
upgrade_ceph(parsed_args.orig_id, parsed_args.seed_id)
|
||||||
|
else:
|
||||||
|
upgrade_ceph_with_graph(parsed_args.orig_id, parsed_args.seed_id)
|
||||||
|
|
|
@ -139,15 +139,15 @@ class UpgradeControlPlaneCommand(cmd.Command):
|
||||||
'seed_id', type=int, metavar='SEED_ID',
|
'seed_id', type=int, metavar='SEED_ID',
|
||||||
help="ID of seed environment")
|
help="ID of seed environment")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--with-graph', action='store_true',
|
'--without-graph', action='store_true',
|
||||||
help='EXPERIMENTAL: Use Fuel deployment graphs'
|
help='Use python-based commands'
|
||||||
' instead of python-based commands.')
|
' instead of Fuel deployment graphs.')
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
if parsed_args.with_graph:
|
if parsed_args.without_graph:
|
||||||
|
upgrade_control_plane(parsed_args.orig_id, parsed_args.seed_id)
|
||||||
|
else:
|
||||||
upgrade_control_plane_with_graph(
|
upgrade_control_plane_with_graph(
|
||||||
parsed_args.orig_id,
|
parsed_args.orig_id,
|
||||||
parsed_args.seed_id)
|
parsed_args.seed_id)
|
||||||
else:
|
|
||||||
upgrade_control_plane(parsed_args.orig_id, parsed_args.seed_id)
|
|
||||||
|
|
|
@ -117,22 +117,21 @@ class UpgradeDBCommand(cmd.Command):
|
||||||
'seed_id', type=int, metavar='SEED_ID',
|
'seed_id', type=int, metavar='SEED_ID',
|
||||||
help="ID of seed environment")
|
help="ID of seed environment")
|
||||||
|
|
||||||
group = parser.add_mutually_exclusive_group()
|
group = parser.add_argument_group()
|
||||||
group.add_argument(
|
group.add_argument(
|
||||||
'--db_role_name', type=str, metavar='DB_ROLE_NAME',
|
'--db_role_name', type=str, metavar='DB_ROLE_NAME',
|
||||||
default="controller", help="Set not standard role name for DB "
|
default="controller", help="Set not standard role name for DB "
|
||||||
"(default controller).")
|
"(default controller).")
|
||||||
group.add_argument(
|
group.add_argument(
|
||||||
'--with-graph', action='store_true',
|
'--without-graph', action='store_true',
|
||||||
help="EXPERIMENTAL: Use Fuel deployment graphs"
|
help="Use python-based commands"
|
||||||
" instead of python-based commands.")
|
" instead of Fuel deployment graphs.")
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
# Execute alternative approach if requested
|
if parsed_args.without_graph:
|
||||||
if parsed_args.with_graph:
|
|
||||||
upgrade_db_with_graph(parsed_args.orig_id, parsed_args.seed_id)
|
|
||||||
else:
|
|
||||||
upgrade_db(parsed_args.orig_id, parsed_args.seed_id,
|
upgrade_db(parsed_args.orig_id, parsed_args.seed_id,
|
||||||
parsed_args.db_role_name)
|
parsed_args.db_role_name)
|
||||||
|
else:
|
||||||
|
upgrade_db_with_graph(parsed_args.orig_id, parsed_args.seed_id)
|
||||||
|
|
|
@ -22,9 +22,13 @@ from octane.util import ssh
|
||||||
@pytest.mark.parametrize("orig_env_id", [None, 1])
|
@pytest.mark.parametrize("orig_env_id", [None, 1])
|
||||||
@pytest.mark.parametrize("seed_env_id", [None, 2])
|
@pytest.mark.parametrize("seed_env_id", [None, 2])
|
||||||
@pytest.mark.parametrize("admin_pswd", [None, "pswd"])
|
@pytest.mark.parametrize("admin_pswd", [None, "pswd"])
|
||||||
def test_osd_cmd_upgrade(
|
@pytest.mark.parametrize("without_graph", [True, False])
|
||||||
mocker, octane_app, orig_env_id, seed_env_id, admin_pswd):
|
def test_osd_cmd_upgrade(mocker, octane_app, orig_env_id, seed_env_id,
|
||||||
upgrade_osd_mock = mocker.patch("octane.commands.osd_upgrade.upgrade_osd")
|
admin_pswd, without_graph):
|
||||||
|
upgrade_osd_mock = mocker.patch(
|
||||||
|
"octane.commands.osd_upgrade.upgrade_osd_with_graph")
|
||||||
|
upgrade_osd_mock_without_graph = mocker.patch(
|
||||||
|
"octane.commands.osd_upgrade.upgrade_osd")
|
||||||
params = ["upgrade-osd"]
|
params = ["upgrade-osd"]
|
||||||
if admin_pswd:
|
if admin_pswd:
|
||||||
params += ["--admin-password", admin_pswd]
|
params += ["--admin-password", admin_pswd]
|
||||||
|
@ -32,10 +36,15 @@ def test_osd_cmd_upgrade(
|
||||||
params += [str(orig_env_id)]
|
params += [str(orig_env_id)]
|
||||||
if seed_env_id:
|
if seed_env_id:
|
||||||
params += [str(seed_env_id)]
|
params += [str(seed_env_id)]
|
||||||
if orig_env_id and seed_env_id and admin_pswd:
|
if without_graph:
|
||||||
|
params += ['--without-graph']
|
||||||
|
if orig_env_id and seed_env_id and (bool(admin_pswd) == without_graph):
|
||||||
octane_app.run(params)
|
octane_app.run(params)
|
||||||
upgrade_osd_mock.assert_called_once_with(
|
if without_graph:
|
||||||
orig_env_id, seed_env_id, "admin", admin_pswd)
|
upgrade_osd_mock_without_graph.assert_called_once_with(
|
||||||
|
orig_env_id, seed_env_id, "admin", admin_pswd)
|
||||||
|
else:
|
||||||
|
upgrade_osd_mock.assert_called_once_with(orig_env_id, seed_env_id)
|
||||||
return
|
return
|
||||||
with pytest.raises(AssertionError):
|
with pytest.raises(AssertionError):
|
||||||
octane_app.run(params)
|
octane_app.run(params)
|
||||||
|
|
|
@ -22,7 +22,8 @@ from octane import magic_consts
|
||||||
(["preupgrade-compute", "1", "1"], 1, [1]),
|
(["preupgrade-compute", "1", "1"], 1, [1]),
|
||||||
])
|
])
|
||||||
def test_parser(mocker, octane_app, cmd, release_id, node_ids):
|
def test_parser(mocker, octane_app, cmd, release_id, node_ids):
|
||||||
m = mocker.patch("octane.commands.preupgrade_compute.preupgrade_compute")
|
m = mocker.patch(
|
||||||
|
"octane.commands.preupgrade_compute.preupgrade_compute_with_graph")
|
||||||
octane_app.run(cmd)
|
octane_app.run(cmd)
|
||||||
assert not octane_app.stdout.getvalue()
|
assert not octane_app.stdout.getvalue()
|
||||||
assert not octane_app.stderr.getvalue()
|
assert not octane_app.stderr.getvalue()
|
||||||
|
|
|
@ -18,7 +18,7 @@ from octane.handlers.upgrade import ceph_osd
|
||||||
|
|
||||||
|
|
||||||
def test_parser(mocker, octane_app):
|
def test_parser(mocker, octane_app):
|
||||||
m = mocker.patch('octane.commands.upgrade_ceph.upgrade_ceph')
|
m = mocker.patch('octane.commands.upgrade_ceph.upgrade_ceph_with_graph')
|
||||||
octane_app.run(["upgrade-ceph", "1", "2"])
|
octane_app.run(["upgrade-ceph", "1", "2"])
|
||||||
assert not octane_app.stdout.getvalue()
|
assert not octane_app.stdout.getvalue()
|
||||||
assert not octane_app.stderr.getvalue()
|
assert not octane_app.stderr.getvalue()
|
||||||
|
|
|
@ -18,7 +18,8 @@ from octane.commands import upgrade_db
|
||||||
|
|
||||||
def test_parser(mocker, octane_app):
|
def test_parser(mocker, octane_app):
|
||||||
m = mocker.patch('octane.commands.upgrade_db.upgrade_db')
|
m = mocker.patch('octane.commands.upgrade_db.upgrade_db')
|
||||||
octane_app.run(["upgrade-db", "1", "2", "--db_role_name", "3"])
|
octane_app.run([
|
||||||
|
"upgrade-db", "--without-graph", "1", "2", "--db_role_name", "3"])
|
||||||
assert not octane_app.stdout.getvalue()
|
assert not octane_app.stdout.getvalue()
|
||||||
assert not octane_app.stderr.getvalue()
|
assert not octane_app.stderr.getvalue()
|
||||||
m.assert_called_once_with(1, 2, '3')
|
m.assert_called_once_with(1, 2, '3')
|
||||||
|
@ -26,20 +27,12 @@ def test_parser(mocker, octane_app):
|
||||||
|
|
||||||
def test_parser_with_graph(mocker, octane_app):
|
def test_parser_with_graph(mocker, octane_app):
|
||||||
m = mocker.patch("octane.commands.upgrade_db.upgrade_db_with_graph")
|
m = mocker.patch("octane.commands.upgrade_db.upgrade_db_with_graph")
|
||||||
octane_app.run(["upgrade-db", "--with-graph", "1", "2"])
|
octane_app.run(["upgrade-db", "1", "2"])
|
||||||
assert not octane_app.stdout.getvalue()
|
assert not octane_app.stdout.getvalue()
|
||||||
assert not octane_app.stderr.getvalue()
|
assert not octane_app.stderr.getvalue()
|
||||||
m.assert_called_once_with(1, 2)
|
m.assert_called_once_with(1, 2)
|
||||||
|
|
||||||
|
|
||||||
def test_parser_exclusive_group(mocker, octane_app):
|
|
||||||
mocker.patch("octane.commands.upgrade_db.upgrade_db")
|
|
||||||
mocker.patch("octane.commands.upgrade_db.upgrade_db_with_graph")
|
|
||||||
with pytest.raises(AssertionError):
|
|
||||||
octane_app.run(["upgrade-db", "--with-graph", "--db_role_name", "db",
|
|
||||||
"1", "2"])
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(("calls", "graph_names", "catch"), [
|
@pytest.mark.parametrize(("calls", "graph_names", "catch"), [
|
||||||
# Orig is fine, seed is fine and there is no need to rollback.
|
# Orig is fine, seed is fine and there is no need to rollback.
|
||||||
(
|
(
|
||||||
|
|
Loading…
Reference in New Issue