Fix 'print' issue for Python 2/3 compatible code.
and remove 'H233 Python 3.x incompatible use of print operator' pep8/flake8 ignore case in cgts-client and sysinv tox setup enable flake8 hacking and ignore some case and fix it later for those ignore case. Story: 2003433 Task: 24629 Change-Id: I0dfc4c17681dd9b0042a4277b7956d270eb73495 Signed-off-by: Sun Austin <austin.sun@intel.com>
This commit is contained in:
parent
1f53e7abf3
commit
3ee670f0c8
|
@ -10,6 +10,7 @@
|
|||
# sockets, cores per package, threads per core,
|
||||
# total memory, and numa nodes
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
@ -182,51 +183,51 @@ class Topology(object):
|
|||
cpu_list.sort()
|
||||
total_memory_GiB = self.total_memory_MiB/1024.0
|
||||
|
||||
print 'TOPOLOGY:'
|
||||
print '%16s : %5d' % ('logical cpus', self.num_cpus)
|
||||
print '%16s : %5d' % ('sockets', self.num_sockets)
|
||||
print '%16s : %5d' % ('cores_per_pkg', self.num_cores_per_pkg)
|
||||
print '%16s : %5d' % ('threads_per_core', self.num_threads_per_core)
|
||||
print '%16s : %5d' % ('numa_nodes', self.num_nodes)
|
||||
print '%16s : %5.2f %s' % ('total_memory', total_memory_GiB, 'GiB')
|
||||
print '%16s :' % ('memory_per_node'),
|
||||
print('TOPOLOGY:')
|
||||
print('%16s : %5d' % ('logical cpus', self.num_cpus))
|
||||
print('%16s : %5d' % ('sockets', self.num_sockets))
|
||||
print('%16s : %5d' % ('cores_per_pkg', self.num_cores_per_pkg))
|
||||
print('%16s : %5d' % ('threads_per_core', self.num_threads_per_core))
|
||||
print('%16s : %5d' % ('numa_nodes', self.num_nodes))
|
||||
print('%16s : %5.2f %s' % ('total_memory', total_memory_GiB, 'GiB'))
|
||||
print('%16s :' % ('memory_per_node'), end=' ')
|
||||
for node in range(self.num_nodes):
|
||||
node_memory_GiB = self.total_memory_nodes_MiB[node]/1024.0
|
||||
print '%5.2f' % (node_memory_GiB),
|
||||
print '%s' % ('GiB')
|
||||
print
|
||||
print('%5.2f' % (node_memory_GiB), end=' ')
|
||||
print('%s' % ('GiB'))
|
||||
print('')
|
||||
|
||||
print 'LOGICAL CPU TOPOLOGY:'
|
||||
print "%9s :" % 'cpu_id',
|
||||
print('LOGICAL CPU TOPOLOGY:')
|
||||
print("%9s :" % 'cpu_id', end=' ')
|
||||
for cpu in cpu_list:
|
||||
print "%3d" % cpu,
|
||||
print
|
||||
print "%9s :" % 'socket_id',
|
||||
print("%3d" % cpu, end=' ')
|
||||
print('')
|
||||
print("%9s :" % 'socket_id', end=' ')
|
||||
for cpu in cpu_list:
|
||||
socket_id = self.topology_idx[cpu]['s']
|
||||
print "%3d" % socket_id,
|
||||
print
|
||||
print "%9s :" % 'core_id',
|
||||
print("%3d" % socket_id, end=' ')
|
||||
print('')
|
||||
print("%9s :" % 'core_id', end=' ')
|
||||
for cpu in cpu_list:
|
||||
core_id = self.topology_idx[cpu]['c']
|
||||
print "%3d" % core_id,
|
||||
print
|
||||
print "%9s :" % 'thread_id',
|
||||
print("%3d" % core_id, end=' ')
|
||||
print('')
|
||||
print("%9s :" % 'thread_id', end=' ')
|
||||
for cpu in cpu_list:
|
||||
thread_id = self.topology_idx[cpu]['t']
|
||||
print "%3d" % thread_id,
|
||||
print
|
||||
print
|
||||
print("%3d" % thread_id, end=' ')
|
||||
print('')
|
||||
print('')
|
||||
|
||||
print 'CORE TOPOLOGY:'
|
||||
print "%6s %9s %7s %9s %s" % ('cpu_id', 'socket_id', 'core_id', 'thread_id', 'affinity')
|
||||
print('CORE TOPOLOGY:')
|
||||
print("%6s %9s %7s %9s %s" % ('cpu_id', 'socket_id', 'core_id', 'thread_id', 'affinity'))
|
||||
for cpu in cpu_list:
|
||||
affinity = 1<<cpu
|
||||
socket_id = self.topology_idx[cpu]['s']
|
||||
core_id = self.topology_idx[cpu]['c']
|
||||
thread_id = self.topology_idx[cpu]['t']
|
||||
print "%6d %9d %7d %9d 0x%x" \
|
||||
% (cpu, socket_id, core_id, thread_id, affinity)
|
||||
print("%6d %9d %7d %9d 0x%x" \
|
||||
% (cpu, socket_id, core_id, thread_id, affinity))
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ HGAP = 10
|
|||
|
||||
def debug(msg):
|
||||
if DEBUG:
|
||||
print msg
|
||||
print(msg)
|
||||
|
||||
|
||||
# Tracks what type of controls will implement a config question
|
||||
|
|
|
@ -5,6 +5,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
from six.moves import configparser
|
||||
|
@ -24,11 +25,11 @@ def parse_config(config_file):
|
|||
|
||||
|
||||
def show_help():
|
||||
print ("Usage: %s\n"
|
||||
"Perform validation of a given configuration file\n\n"
|
||||
"--system-config <name> Validate a system configuration file\n"
|
||||
"--region-config <name> Validate a region configuration file\n"
|
||||
% sys.argv[0])
|
||||
print("Usage: %s\n"
|
||||
"Perform validation of a given configuration file\n\n"
|
||||
"--system-config <name> Validate a system configuration file\n"
|
||||
"--region-config <name> Validate a region configuration file\n"
|
||||
% sys.argv[0])
|
||||
exit(1)
|
||||
|
||||
|
||||
|
@ -44,8 +45,8 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
config_file = sys.argv[arg]
|
||||
else:
|
||||
print "--system-config requires the filename of the config " \
|
||||
"file"
|
||||
print("--system-config requires the filename of the config "
|
||||
"file")
|
||||
exit(1)
|
||||
system_config = True
|
||||
elif sys.argv[arg] == "--region-config":
|
||||
|
@ -53,19 +54,19 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
config_file = sys.argv[arg]
|
||||
else:
|
||||
print "--region-config requires the filename of the config " \
|
||||
"file"
|
||||
print("--region-config requires the filename of the config "
|
||||
"file")
|
||||
exit(1)
|
||||
region_config = True
|
||||
elif sys.argv[arg] in ["--help", "-h", "-?"]:
|
||||
show_help()
|
||||
else:
|
||||
print "Invalid option."
|
||||
print("Invalid option.")
|
||||
show_help()
|
||||
arg += 1
|
||||
|
||||
if [system_config, region_config].count(True) != 1:
|
||||
print "Invalid combination of options selected"
|
||||
print("Invalid combination of options selected")
|
||||
show_help()
|
||||
|
||||
if system_config:
|
||||
|
@ -78,12 +79,12 @@ def main():
|
|||
exit(1)
|
||||
|
||||
# Parse the system config file
|
||||
print "Parsing configuration file... ",
|
||||
print("Parsing configuration file... ", end=' ')
|
||||
system_config = parse_config(config_file)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Validate the system config file
|
||||
print "Validating configuration file... ",
|
||||
print("Validating configuration file... ", end=' ')
|
||||
try:
|
||||
# we use the presence of tsconfig to determine if we are onboard or
|
||||
# not since it will not be available in the offboard case
|
||||
|
@ -97,4 +98,4 @@ def main():
|
|||
print("Error parsing configuration file %s: %s" % (config_file, e))
|
||||
except (ConfigFail, ValidateFail) as e:
|
||||
print("\nValidation failed: %s" % e)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
|
|
@ -18,5 +18,20 @@ commands = {posargs}
|
|||
|
||||
[testenv:flake8]
|
||||
basepython = python2.7
|
||||
deps = flake8<3.6.0
|
||||
deps = hacking
|
||||
flake8<3.6.0
|
||||
commands = flake8 {posargs}
|
||||
|
||||
# H series are hacking
|
||||
# H102: Apache 2.0 license header not found
|
||||
# H104: File contains nothing but comments
|
||||
# H301: one import per line
|
||||
# H306: imports not in alphabetical order
|
||||
# H401: docstring should not start with a space
|
||||
# H403: multi line docstrings should end on a new line
|
||||
# H404: multi line docstring should start without a leading new line
|
||||
# H405: multi line docstring summary not separated with an empty line
|
||||
# W503 line break before binary operator
|
||||
[flake8]
|
||||
ignore = H102,H104,H301,H306,H401,H403,H404,H405,
|
||||
W503
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
Backup & Restore
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import copy
|
||||
import filecmp
|
||||
import fileinput
|
||||
|
@ -336,7 +337,7 @@ def restore_configuration(archive, staging_dir):
|
|||
# The INSTALL_UUID must be updated to match the new INSTALL_UUID
|
||||
# which was generated when this controller was installed prior to
|
||||
# doing the restore.
|
||||
print "INSTALL_UUID=%s" % install_uuid
|
||||
print("INSTALL_UUID=%s" % install_uuid)
|
||||
elif line.startswith("management_interface=") or \
|
||||
line.startswith("oam_interface=") or \
|
||||
line.startswith("infrastructure_interface=") or \
|
||||
|
@ -346,7 +347,7 @@ def restore_configuration(archive, staging_dir):
|
|||
# platform_conf manifest will add these back in.
|
||||
pass
|
||||
else:
|
||||
print line,
|
||||
print(line, end=' ')
|
||||
fileinput.close()
|
||||
# Move updated platform.conf file into place.
|
||||
os.rename(temp_platform_conf_file, tsconfig.PLATFORM_CONF_FILE)
|
||||
|
@ -965,10 +966,10 @@ def check_size(archive_dir, cinder_config):
|
|||
utils.filesystem_get_free_space(archive_dir)
|
||||
|
||||
if backup_size > archive_dir_free_space:
|
||||
print ("Archive directory (%s) does not have enough free "
|
||||
"space (%s), estimated backup size is %s." %
|
||||
(archive_dir, utils.print_bytes(archive_dir_free_space),
|
||||
utils.print_bytes(backup_size)))
|
||||
print("Archive directory (%s) does not have enough free "
|
||||
"space (%s), estimated backup size is %s." %
|
||||
(archive_dir, utils.print_bytes(archive_dir_free_space),
|
||||
utils.print_bytes(backup_size)))
|
||||
|
||||
raise BackupFail("Not enough free space for backup.")
|
||||
|
||||
|
@ -1155,12 +1156,12 @@ def backup(backup_name, archive_dir, clone=False):
|
|||
system_msg += ": " + system_tar_path
|
||||
images_msg += ": " + images_tar_path
|
||||
|
||||
print system_msg
|
||||
print(system_msg)
|
||||
if tsconfig.region_config != "yes":
|
||||
print images_msg
|
||||
print(images_msg)
|
||||
if warnings != '':
|
||||
print "WARNING: The following problems occurred:"
|
||||
print textwrap.fill(warnings, 80)
|
||||
print("WARNING: The following problems occurred:")
|
||||
print(textwrap.fill(warnings, 80))
|
||||
|
||||
|
||||
def create_restore_runtime_config(filename):
|
||||
|
@ -1206,11 +1207,11 @@ def restore_complete():
|
|||
"""
|
||||
if utils.get_system_type() == sysinv_constants.TIS_AIO_BUILD:
|
||||
if not os.path.isfile(restore_system_ready):
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"--restore-complete can only be run "
|
||||
"after restore-system has completed "
|
||||
"successfully", 80
|
||||
)
|
||||
))
|
||||
return False
|
||||
|
||||
# The iscsi target config file must be overwritten with the
|
||||
|
@ -1222,9 +1223,9 @@ def restore_complete():
|
|||
# we use use that.
|
||||
overwrite_iscsi_target_config()
|
||||
|
||||
print ("\nApplying compute manifests for %s. " %
|
||||
(utils.get_controller_hostname()))
|
||||
print ("Node will reboot on completion.")
|
||||
print("\nApplying compute manifests for %s. " %
|
||||
(utils.get_controller_hostname()))
|
||||
print("Node will reboot on completion.")
|
||||
|
||||
sysinv.do_compute_config_complete(utils.get_controller_hostname())
|
||||
|
||||
|
@ -1241,11 +1242,11 @@ def restore_complete():
|
|||
|
||||
else:
|
||||
if not os.path.isfile(restore_system_ready):
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"--restore-complete can only be run "
|
||||
"after restore-system has completed "
|
||||
"successfully", 80
|
||||
)
|
||||
))
|
||||
return False
|
||||
overwrite_iscsi_target_config()
|
||||
os.remove(restore_system_ready)
|
||||
|
@ -1258,11 +1259,11 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
if (os.path.exists(constants.CGCS_CONFIG_FILE) or
|
||||
os.path.exists(tsconfig.CONFIG_PATH) or
|
||||
os.path.exists(constants.INITIAL_CONFIG_COMPLETE_FILE)):
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"Configuration has already been done. "
|
||||
"A system restore operation can only be done "
|
||||
"immediately after the load has been installed.", 80)
|
||||
print
|
||||
"immediately after the load has been installed.", 80))
|
||||
print('')
|
||||
raise RestoreFail("System configuration already completed")
|
||||
|
||||
if not os.path.isabs(backup_file):
|
||||
|
@ -1288,7 +1289,7 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
LOG.error("The cgts-vg volume group was not found")
|
||||
raise RestoreFail("Volume groups not configured")
|
||||
|
||||
print "\nRestoring system (this will take several minutes):"
|
||||
print("\nRestoring system (this will take several minutes):")
|
||||
# Use /scratch for the staging dir for now,
|
||||
# until /opt/backups is available
|
||||
staging_dir = tempfile.mkdtemp(dir='/scratch')
|
||||
|
@ -1343,10 +1344,10 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
# If the controller was impacted by patches, we need to reboot.
|
||||
if os.path.isfile(node_is_patched):
|
||||
if not clone:
|
||||
print ("\nThis controller has been patched. " +
|
||||
"A reboot is required.")
|
||||
print ("After the reboot is complete, " +
|
||||
"re-execute the restore command.")
|
||||
print("\nThis controller has been patched. " +
|
||||
"A reboot is required.")
|
||||
print("After the reboot is complete, " +
|
||||
"re-execute the restore command.")
|
||||
while True:
|
||||
user_input = input(
|
||||
"Enter 'reboot' to reboot controller: ")
|
||||
|
@ -1581,7 +1582,7 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
|
||||
if tsconfig.system_mode != sysinv_constants.SYSTEM_MODE_SIMPLEX:
|
||||
|
||||
print "\nRestoring node states (this will take several minutes):"
|
||||
print("\nRestoring node states (this will take several minutes):")
|
||||
|
||||
backend_services = sysinv.get_storage_backend_services()
|
||||
|
||||
|
@ -1621,7 +1622,7 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
LOG.info("At least one node is not in a disabling state. "
|
||||
"Continuing.")
|
||||
|
||||
print "\nLocking nodes:"
|
||||
print("\nLocking nodes:")
|
||||
try:
|
||||
failed_hosts = client.lock_hosts(skip_hosts,
|
||||
utils.progress,
|
||||
|
@ -1635,7 +1636,7 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
failed_lock_host = True
|
||||
|
||||
if not failed_lock_host:
|
||||
print "\nPowering-off nodes:"
|
||||
print("\nPowering-off nodes:")
|
||||
try:
|
||||
client.power_off_hosts(skip_hosts,
|
||||
utils.progress,
|
||||
|
@ -1646,25 +1647,25 @@ def restore_system(backup_file, include_storage_reinstall=False, clone=False):
|
|||
|
||||
if failed_lock_host or len(skip_hosts) > skip_hosts_count:
|
||||
if include_storage_reinstall:
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"Failed to lock at least one node. " +
|
||||
"Please lock the unlocked nodes manually.", 80
|
||||
)
|
||||
))
|
||||
else:
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"Failed to lock at least one node. " +
|
||||
"Please lock the unlocked controller-1 or " +
|
||||
"compute nodes manually.", 80
|
||||
)
|
||||
))
|
||||
|
||||
if not clone:
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"Before continuing to the next step in the restore, " +
|
||||
"please ensure all nodes other than controller-0 " +
|
||||
"and storage nodes, if they are not being " +
|
||||
"reinstalled, are powered off. Please refer to the " +
|
||||
"system administration guide for more details.", 80
|
||||
)
|
||||
))
|
||||
|
||||
finally:
|
||||
os.remove(restore_in_progress)
|
||||
|
@ -1705,11 +1706,11 @@ def restore_images(backup_file, clone=False):
|
|||
"""Restoring images."""
|
||||
|
||||
if not os.path.exists(constants.INITIAL_CONFIG_COMPLETE_FILE):
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"System restore has not been done. "
|
||||
"An image restore operation can only be done after "
|
||||
"the system restore has been completed.", 80)
|
||||
print
|
||||
"the system restore has been completed.", 80))
|
||||
print('')
|
||||
raise RestoreFail("System restore required")
|
||||
|
||||
if not os.path.isabs(backup_file):
|
||||
|
@ -1725,7 +1726,7 @@ def restore_images(backup_file, clone=False):
|
|||
newline = clone
|
||||
|
||||
try:
|
||||
print "\nRestoring images (this will take several minutes):"
|
||||
print("\nRestoring images (this will take several minutes):")
|
||||
os.chdir('/')
|
||||
|
||||
step = 1
|
||||
|
|
|
@ -9,6 +9,7 @@ Clone a Configured System and Install the image on another
|
|||
identical hardware or the same hardware.
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import re
|
||||
import glob
|
||||
|
@ -116,11 +117,11 @@ def check_size(archive_dir):
|
|||
utils.filesystem_get_free_space(archive_dir)
|
||||
|
||||
if clone_size > archive_dir_free_space:
|
||||
print ("\nArchive directory (%s) does not have enough free "
|
||||
"space (%s), estimated size to create image is %s." %
|
||||
(archive_dir,
|
||||
utils.print_bytes(archive_dir_free_space),
|
||||
utils.print_bytes(clone_size)))
|
||||
print("\nArchive directory (%s) does not have enough free "
|
||||
"space (%s), estimated size to create image is %s." %
|
||||
(archive_dir,
|
||||
utils.print_bytes(archive_dir_free_space),
|
||||
utils.print_bytes(clone_size)))
|
||||
raise CloneFail("Not enough free space.\n")
|
||||
|
||||
|
||||
|
@ -475,7 +476,7 @@ def find_and_replace_in_file(target, find, replace):
|
|||
fpat = r'\b' + find + r'\b'
|
||||
line = re.sub(fpat, replace, line)
|
||||
found = True
|
||||
print line,
|
||||
print(line, end=' ')
|
||||
|
||||
except Exception as e:
|
||||
LOG.error("Failed to replace [{}] with [{}] in [{}]: {}"
|
||||
|
|
|
@ -5,6 +5,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import json
|
||||
import netaddr
|
||||
import os
|
||||
|
@ -20,19 +21,19 @@ from six.moves import input
|
|||
def is_valid_management_address(ip_address, management_subnet):
|
||||
"""Determine whether a management address is valid."""
|
||||
if ip_address == management_subnet.network:
|
||||
print "Cannot use network address"
|
||||
print("Cannot use network address")
|
||||
return False
|
||||
elif ip_address == management_subnet.broadcast:
|
||||
print "Cannot use broadcast address"
|
||||
print("Cannot use broadcast address")
|
||||
return False
|
||||
elif ip_address.is_multicast():
|
||||
print "Invalid address - multicast address not allowed"
|
||||
print("Invalid address - multicast address not allowed")
|
||||
return False
|
||||
elif ip_address.is_loopback():
|
||||
print "Invalid address - loopback address not allowed"
|
||||
print("Invalid address - loopback address not allowed")
|
||||
return False
|
||||
elif ip_address not in management_subnet:
|
||||
print "Address must be in the management subnet"
|
||||
print("Address must be in the management subnet")
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
@ -42,7 +43,7 @@ def configure_management():
|
|||
interface_list = list()
|
||||
lldp_interface_list = list()
|
||||
|
||||
print "Enabling interfaces... ",
|
||||
print("Enabling interfaces... ", end=' ')
|
||||
ip_link_output = subprocess.check_output(['ip', '-o', 'link'])
|
||||
|
||||
for line in ip_link_output.splitlines():
|
||||
|
@ -50,43 +51,44 @@ def configure_management():
|
|||
if interface != 'lo':
|
||||
interface_list.append(interface)
|
||||
subprocess.call(['ip', 'link', 'set', interface, 'up'])
|
||||
print 'DONE'
|
||||
print('DONE')
|
||||
|
||||
wait_seconds = 120
|
||||
delay_seconds = 5
|
||||
print "Waiting %d seconds for LLDP neighbor discovery" % wait_seconds,
|
||||
print("Waiting %d seconds for LLDP neighbor discovery" % wait_seconds,
|
||||
end=' ')
|
||||
while wait_seconds > 0:
|
||||
sys.stdout.write('.')
|
||||
sys.stdout.flush()
|
||||
time.sleep(delay_seconds)
|
||||
wait_seconds -= delay_seconds
|
||||
print ' DONE'
|
||||
print(' DONE')
|
||||
|
||||
print "Retrieving neighbor details... ",
|
||||
print("Retrieving neighbor details... ", end=' ')
|
||||
lldpcli_show_output = subprocess.check_output(
|
||||
['sudo', 'lldpcli', 'show', 'neighbors', 'summary', '-f', 'json'])
|
||||
lldp_interfaces = json.loads(lldpcli_show_output)['lldp'][0]['interface']
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
print "\nAvailable interfaces:"
|
||||
print "%-20s %s" % ("local interface", "remote port")
|
||||
print "%-20s %s" % ("---------------", "-----------")
|
||||
print("\nAvailable interfaces:")
|
||||
print("%-20s %s" % ("local interface", "remote port"))
|
||||
print("%-20s %s" % ("---------------", "-----------"))
|
||||
for interface in lldp_interfaces:
|
||||
print "%-20s %s" % (interface['name'],
|
||||
interface['port'][0]['id'][0]['value'])
|
||||
print("%-20s %s" % (interface['name'],
|
||||
interface['port'][0]['id'][0]['value']))
|
||||
lldp_interface_list.append(interface['name'])
|
||||
for interface in interface_list:
|
||||
if interface not in lldp_interface_list:
|
||||
print "%-20s %s" % (interface, 'unknown')
|
||||
print("%-20s %s" % (interface, 'unknown'))
|
||||
|
||||
print
|
||||
print('')
|
||||
while True:
|
||||
user_input = input("Enter management interface name: ")
|
||||
if user_input in interface_list:
|
||||
management_interface = user_input
|
||||
break
|
||||
else:
|
||||
print "Invalid interface name"
|
||||
print("Invalid interface name")
|
||||
continue
|
||||
|
||||
while True:
|
||||
|
@ -133,31 +135,31 @@ def configure_management():
|
|||
user_input, min_addresses)
|
||||
break
|
||||
except cexeptions.ValidateFail as e:
|
||||
print "{}".format(e)
|
||||
print("{}".format(e))
|
||||
|
||||
print "Disabling non-management interfaces... ",
|
||||
print("Disabling non-management interfaces... ", end=' ')
|
||||
for interface in interface_list:
|
||||
if interface != management_interface:
|
||||
subprocess.call(['ip', 'link', 'set', interface, 'down'])
|
||||
print 'DONE'
|
||||
print('DONE')
|
||||
|
||||
print "Configuring management interface... ",
|
||||
print("Configuring management interface... ", end=' ')
|
||||
subprocess.call(['ip', 'addr', 'add', str(management_cidr), 'dev',
|
||||
management_interface])
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
print "Adding route to System Controller... ",
|
||||
print("Adding route to System Controller... ", end=' ')
|
||||
subprocess.call(['ip', 'route', 'add', str(system_controller_subnet),
|
||||
'dev', management_interface, 'via',
|
||||
str(management_gateway_address)])
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
|
||||
def main():
|
||||
if not os.geteuid() == 0:
|
||||
print "%s must be run with root privileges" % sys.argv[0]
|
||||
print("%s must be run with root privileges" % sys.argv[0])
|
||||
exit(1)
|
||||
try:
|
||||
configure_management()
|
||||
except KeyboardInterrupt:
|
||||
print "\nAborted"
|
||||
print("\nAborted")
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
from six.moves import configparser
|
||||
import os
|
||||
import subprocess
|
||||
|
@ -545,16 +546,16 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
"""Configure the region"""
|
||||
|
||||
# Parse the region/subcloud config file
|
||||
print "Parsing configuration file... ",
|
||||
print("Parsing configuration file... ", end=' ')
|
||||
region_config = parse_system_config(config_file)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
if config_type == SUBCLOUD_CONFIG:
|
||||
# Set defaults in region_config for subclouds
|
||||
set_subcloud_config_defaults(region_config)
|
||||
|
||||
# Validate the region/subcloud config file
|
||||
print "Validating configuration file... ",
|
||||
print("Validating configuration file... ", end=' ')
|
||||
try:
|
||||
create_cgcs_config_file(None, region_config, None, None, None,
|
||||
config_type=config_type,
|
||||
|
@ -562,15 +563,15 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
except configparser.Error as e:
|
||||
raise ConfigFail("Error parsing configuration file %s: %s" %
|
||||
(config_file, e))
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Bring up management interface to allow us to reach Region 1
|
||||
print "Configuring management interface... ",
|
||||
print("Configuring management interface... ", end=' ')
|
||||
configure_management_interface(region_config, config_type=config_type)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Get token from keystone
|
||||
print "Retrieving keystone token...",
|
||||
print("Retrieving keystone token...", end=' ')
|
||||
sys.stdout.flush()
|
||||
auth_url = region_config.get('SHARED_SERVICES', 'KEYSTONE_ADMINURL')
|
||||
if region_config.has_option('SHARED_SERVICES', 'ADMIN_TENANT_NAME'):
|
||||
|
@ -604,18 +605,19 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
if not token:
|
||||
attempts += 1
|
||||
if attempts < 10:
|
||||
print "\rRetrieving keystone token...{}".format(
|
||||
'.' * attempts),
|
||||
print("\rRetrieving keystone token...{}".format(
|
||||
'.' * attempts), end=' ')
|
||||
sys.stdout.flush()
|
||||
time.sleep(10)
|
||||
else:
|
||||
raise ConfigFail(
|
||||
"Unable to obtain keystone token. Please ensure "
|
||||
"networking and keystone configuration is correct.")
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Get services, endpoints, users and domains from keystone
|
||||
print "Retrieving services, endpoints and users from keystone... ",
|
||||
print("Retrieving services, endpoints and users from keystone... ",
|
||||
end=' ')
|
||||
region_name = region_config.get('SHARED_SERVICES', 'REGION_NAME')
|
||||
service_name = region_config.get('SHARED_SERVICES',
|
||||
'KEYSTONE_SERVICE_NAME')
|
||||
|
@ -634,12 +636,12 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
raise ConfigFail(
|
||||
"Unable to retrieve services, endpoints or users from keystone. "
|
||||
"Please ensure networking and keystone configuration is correct.")
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
user_config = None
|
||||
if config_type == SUBCLOUD_CONFIG:
|
||||
# Retrieve subcloud configuration from dcmanager
|
||||
print "Retrieving configuration from dcmanager... ",
|
||||
print("Retrieving configuration from dcmanager... ", end=' ')
|
||||
dcmanager_url = token.get_service_url(
|
||||
'SystemController', 'dcmanager', 'dcmanager', "admin")
|
||||
subcloud_name = region_config.get('REGION_2_SERVICES',
|
||||
|
@ -651,7 +653,7 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
subcloud_name,
|
||||
hash_string)
|
||||
user_config = subcloud_config['users']
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
try:
|
||||
# Configure missing region one keystone entries
|
||||
|
@ -659,28 +661,28 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
# Prepare region configuration for puppet to create keystone identities
|
||||
if (region_config.has_option('REGION_2_SERVICES', 'CREATE') and
|
||||
region_config.get('REGION_2_SERVICES', 'CREATE') == 'Y'):
|
||||
print "Preparing keystone configuration... ",
|
||||
print("Preparing keystone configuration... ", end=' ')
|
||||
# If keystone configuration for this region already in place,
|
||||
# validate it only
|
||||
else:
|
||||
# Validate region one keystone config
|
||||
create = False
|
||||
print "Validating keystone configuration... ",
|
||||
print("Validating keystone configuration... ", end=' ')
|
||||
|
||||
validate_region_one_keystone_config(region_config, token, api_url,
|
||||
users, services, endpoints, create,
|
||||
config_type=config_type,
|
||||
user_config=user_config)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# validate ldap if it is shared
|
||||
if region_config.has_option('SHARED_SERVICES', 'LDAP_SERVICE_URL'):
|
||||
print "Validating ldap configuration... ",
|
||||
print("Validating ldap configuration... ", end=' ')
|
||||
validate_region_one_ldap_config(region_config)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Create cgcs_config file
|
||||
print "Creating config apply file... ",
|
||||
print("Creating config apply file... ", end=' ')
|
||||
try:
|
||||
create_cgcs_config_file(TEMP_CGCS_CONFIG_FILE, region_config,
|
||||
services, endpoints, domains,
|
||||
|
@ -688,33 +690,33 @@ def configure_region(config_file, config_type=REGION_CONFIG):
|
|||
except configparser.Error as e:
|
||||
raise ConfigFail("Error parsing configuration file %s: %s" %
|
||||
(config_file, e))
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Configure controller
|
||||
assistant = ConfigAssistant()
|
||||
assistant.configure(TEMP_CGCS_CONFIG_FILE, display_config=False)
|
||||
|
||||
except ConfigFail as e:
|
||||
print "A configuration failure has occurred.",
|
||||
print("A configuration failure has occurred.", end=' ')
|
||||
raise e
|
||||
|
||||
|
||||
def show_help_region():
|
||||
print ("Usage: %s [OPTIONS] <CONFIG_FILE>" % sys.argv[0])
|
||||
print textwrap.fill(
|
||||
print("Usage: %s [OPTIONS] <CONFIG_FILE>" % sys.argv[0])
|
||||
print(textwrap.fill(
|
||||
"Perform region configuration using the region "
|
||||
"configuration from CONFIG_FILE.", 80)
|
||||
print ("--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n")
|
||||
"configuration from CONFIG_FILE.", 80))
|
||||
print("--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n")
|
||||
|
||||
|
||||
def show_help_subcloud():
|
||||
print ("Usage: %s [OPTIONS] <CONFIG_FILE>" % sys.argv[0])
|
||||
print textwrap.fill(
|
||||
"Perform subcloud configuration using the subcloud "
|
||||
"configuration from CONFIG_FILE.", 80)
|
||||
print ("--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n")
|
||||
print("Usage: %s [OPTIONS] <CONFIG_FILE>" % sys.argv[0])
|
||||
print(textwrap.fill(
|
||||
"Perform subcloud configuration using the subcloud "
|
||||
"configuration from CONFIG_FILE.", 80))
|
||||
print("--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n")
|
||||
|
||||
|
||||
def config_main(config_type=REGION_CONFIG):
|
||||
|
@ -739,7 +741,7 @@ def config_main(config_type=REGION_CONFIG):
|
|||
elif arg == len(sys.argv) - 1:
|
||||
config_file = sys.argv[arg]
|
||||
else:
|
||||
print "Invalid option. Use --help for more information."
|
||||
print("Invalid option. Use --help for more information.")
|
||||
exit(1)
|
||||
arg += 1
|
||||
|
||||
|
@ -748,26 +750,26 @@ def config_main(config_type=REGION_CONFIG):
|
|||
# Check if that the command is being run from the console
|
||||
if utils.is_ssh_parent():
|
||||
if allow_ssh:
|
||||
print textwrap.fill(constants.SSH_WARNING_MESSAGE, 80)
|
||||
print
|
||||
print(textwrap.fill(constants.SSH_WARNING_MESSAGE, 80))
|
||||
print('')
|
||||
else:
|
||||
print textwrap.fill(constants.SSH_ERROR_MESSAGE, 80)
|
||||
print(textwrap.fill(constants.SSH_ERROR_MESSAGE, 80))
|
||||
exit(1)
|
||||
|
||||
if not os.path.isfile(config_file):
|
||||
print "Config file %s does not exist." % config_file
|
||||
print("Config file %s does not exist." % config_file)
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
configure_region(config_file, config_type=config_type)
|
||||
except KeyboardInterrupt:
|
||||
print "\nAborting configuration"
|
||||
print("\nAborting configuration")
|
||||
except ConfigFail as e:
|
||||
LOG.exception(e)
|
||||
print "\nConfiguration failed: {}".format(e)
|
||||
print("\nConfiguration failed: {}".format(e))
|
||||
except Exception as e:
|
||||
LOG.exception(e)
|
||||
print "\nConfiguration failed: {}".format(e)
|
||||
print("\nConfiguration failed: {}".format(e))
|
||||
else:
|
||||
print("\nConfiguration finished successfully.")
|
||||
finally:
|
||||
|
|
|
@ -5,6 +5,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
from six.moves import configparser
|
||||
import os
|
||||
import readline
|
||||
|
@ -249,73 +250,73 @@ def configure_system(config_file):
|
|||
"""Configure the system"""
|
||||
|
||||
# Parse the system config file
|
||||
print "Parsing system configuration file... ",
|
||||
print("Parsing system configuration file... ", end=' ')
|
||||
system_config = parse_system_config(config_file)
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Validate the system config file
|
||||
print "Validating system configuration file... ",
|
||||
print("Validating system configuration file... ", end=' ')
|
||||
try:
|
||||
create_cgcs_config_file(None, system_config, None, None, None,
|
||||
DEFAULT_CONFIG, validate_only=True)
|
||||
except configparser.Error as e:
|
||||
raise ConfigFail("Error parsing configuration file %s: %s" %
|
||||
(config_file, e))
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
# Create cgcs_config file
|
||||
print "Creating config apply file... ",
|
||||
print("Creating config apply file... ", end=' ')
|
||||
try:
|
||||
create_cgcs_config_file(TEMP_CGCS_CONFIG_FILE, system_config,
|
||||
None, None, None, DEFAULT_CONFIG)
|
||||
except configparser.Error as e:
|
||||
raise ConfigFail("Error parsing configuration file %s: %s" %
|
||||
(config_file, e))
|
||||
print "DONE"
|
||||
print("DONE")
|
||||
|
||||
|
||||
def show_help():
|
||||
print ("Usage: %s\n"
|
||||
"Perform system configuration\n"
|
||||
"\nThe default action is to perform the initial configuration for "
|
||||
"the system.\nThe following options are also available:\n"
|
||||
"--config-file <name> Perform configuration using INI file\n"
|
||||
"--backup <name> Backup configuration using the given "
|
||||
"name\n"
|
||||
"--clone-iso <name> Clone and create an image with "
|
||||
"the given file name\n"
|
||||
"--clone-status Status of the last installation of "
|
||||
"cloned image\n"
|
||||
"--restore-system "
|
||||
"<include-storage-reinstall | exclude-storage-reinstall> "
|
||||
"<name>\n"
|
||||
" Restore system configuration from backup "
|
||||
"file with\n"
|
||||
" the given name, full path required\n"
|
||||
"--restore-images <name> Restore images from backup file with the "
|
||||
"given name,\n"
|
||||
" full path required\n"
|
||||
"--restore-complete Complete restore of controller-0\n"
|
||||
"--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n"
|
||||
% sys.argv[0])
|
||||
print("Usage: %s\n"
|
||||
"Perform system configuration\n"
|
||||
"\nThe default action is to perform the initial configuration for "
|
||||
"the system.\nThe following options are also available:\n"
|
||||
"--config-file <name> Perform configuration using INI file\n"
|
||||
"--backup <name> Backup configuration using the given "
|
||||
"name\n"
|
||||
"--clone-iso <name> Clone and create an image with "
|
||||
"the given file name\n"
|
||||
"--clone-status Status of the last installation of "
|
||||
"cloned image\n"
|
||||
"--restore-system "
|
||||
"<include-storage-reinstall | exclude-storage-reinstall> "
|
||||
"<name>\n"
|
||||
" Restore system configuration from backup "
|
||||
"file with\n"
|
||||
" the given name, full path required\n"
|
||||
"--restore-images <name> Restore images from backup file with the "
|
||||
"given name,\n"
|
||||
" full path required\n"
|
||||
"--restore-complete Complete restore of controller-0\n"
|
||||
"--allow-ssh Allow configuration to be executed in "
|
||||
"ssh\n"
|
||||
% sys.argv[0])
|
||||
|
||||
|
||||
def show_help_lab_only():
|
||||
print ("Usage: %s\n"
|
||||
"Perform initial configuration\n"
|
||||
"\nThe following options are for lab use only:\n"
|
||||
"--answerfile <file> Apply the configuration from the specified "
|
||||
"file without\n"
|
||||
" any validation or user interaction\n"
|
||||
"--default Apply default configuration with no NTP or "
|
||||
"DNS server\n"
|
||||
" configuration (suitable for testing in a "
|
||||
"virtual\n"
|
||||
" environment)\n"
|
||||
"--archive-dir <dir> Directory to store the archive in\n"
|
||||
"--provision Provision initial system data only\n"
|
||||
% sys.argv[0])
|
||||
print("Usage: %s\n"
|
||||
"Perform initial configuration\n"
|
||||
"\nThe following options are for lab use only:\n"
|
||||
"--answerfile <file> Apply the configuration from the specified "
|
||||
"file without\n"
|
||||
" any validation or user interaction\n"
|
||||
"--default Apply default configuration with no NTP or "
|
||||
"DNS server\n"
|
||||
" configuration (suitable for testing in a "
|
||||
"virtual\n"
|
||||
" environment)\n"
|
||||
"--archive-dir <dir> Directory to store the archive in\n"
|
||||
"--provision Provision initial system data only\n"
|
||||
% sys.argv[0])
|
||||
|
||||
|
||||
def no_complete(text, state):
|
||||
|
@ -356,14 +357,14 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
answerfile = sys.argv[arg]
|
||||
else:
|
||||
print "--answerfile option requires a file to be specified"
|
||||
print("--answerfile option requires a file to be specified")
|
||||
exit(1)
|
||||
elif sys.argv[arg] == "--backup":
|
||||
arg += 1
|
||||
if arg < len(sys.argv):
|
||||
backup_name = sys.argv[arg]
|
||||
else:
|
||||
print "--backup requires the name of the backup"
|
||||
print("--backup requires the name of the backup")
|
||||
exit(1)
|
||||
do_backup = True
|
||||
elif sys.argv[arg] == "--restore-system":
|
||||
|
@ -377,16 +378,16 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
backup_name = sys.argv[arg]
|
||||
else:
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"--restore-system requires the filename "
|
||||
" of the backup", 80)
|
||||
" of the backup", 80))
|
||||
exit(1)
|
||||
else:
|
||||
backup_name = sys.argv[arg]
|
||||
else:
|
||||
print textwrap.fill(
|
||||
print(textwrap.fill(
|
||||
"--restore-system requires the filename "
|
||||
"of the backup", 80)
|
||||
"of the backup", 80))
|
||||
exit(1)
|
||||
do_system_restore = True
|
||||
elif sys.argv[arg] == "--restore-images":
|
||||
|
@ -394,7 +395,7 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
backup_name = sys.argv[arg]
|
||||
else:
|
||||
print "--restore-images requires the filename of the backup"
|
||||
print("--restore-images requires the filename of the backup")
|
||||
exit(1)
|
||||
do_images_restore = True
|
||||
elif sys.argv[arg] == "--restore-complete":
|
||||
|
@ -404,14 +405,14 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
archive_dir = sys.argv[arg]
|
||||
else:
|
||||
print "--archive-dir requires a directory"
|
||||
print("--archive-dir requires a directory")
|
||||
exit(1)
|
||||
elif sys.argv[arg] == "--clone-iso":
|
||||
arg += 1
|
||||
if arg < len(sys.argv):
|
||||
backup_name = sys.argv[arg]
|
||||
else:
|
||||
print "--clone-iso requires the name of the image"
|
||||
print("--clone-iso requires the name of the image")
|
||||
exit(1)
|
||||
do_clone = True
|
||||
elif sys.argv[arg] == "--clone-status":
|
||||
|
@ -424,7 +425,7 @@ def main():
|
|||
if arg < len(sys.argv):
|
||||
system_config_file = sys.argv[arg]
|
||||
else:
|
||||
print "--config-file requires the filename of the config file"
|
||||
print("--config-file requires the filename of the config file")
|
||||
exit(1)
|
||||
do_non_interactive = True
|
||||
elif sys.argv[arg] in ["--help", "-h", "-?"]:
|
||||
|
@ -442,7 +443,7 @@ def main():
|
|||
# are stable, we will remove it and make kubernetes the default.
|
||||
options['kubernetes'] = True
|
||||
else:
|
||||
print "Invalid option. Use --help for more information."
|
||||
print("Invalid option. Use --help for more information.")
|
||||
exit(1)
|
||||
arg += 1
|
||||
|
||||
|
@ -453,7 +454,7 @@ def main():
|
|||
do_clone,
|
||||
do_default_config,
|
||||
do_non_interactive].count(True) > 1:
|
||||
print "Invalid combination of options selected"
|
||||
print("Invalid combination of options selected")
|
||||
exit(1)
|
||||
|
||||
if answerfile and [do_backup,
|
||||
|
@ -463,7 +464,8 @@ def main():
|
|||
do_clone,
|
||||
do_default_config,
|
||||
do_non_interactive].count(True) > 0:
|
||||
print "The --answerfile option cannot be used with the selected option"
|
||||
print("The --answerfile option cannot be used with the selected "
|
||||
"option")
|
||||
exit(1)
|
||||
|
||||
log.configure()
|
||||
|
@ -472,10 +474,10 @@ def main():
|
|||
# Check if that the command is being run from the console
|
||||
if utils.is_ssh_parent():
|
||||
if allow_ssh:
|
||||
print textwrap.fill(constants.SSH_WARNING_MESSAGE, 80)
|
||||
print
|
||||
print(textwrap.fill(constants.SSH_WARNING_MESSAGE, 80))
|
||||
print('')
|
||||
else:
|
||||
print textwrap.fill(constants.SSH_ERROR_MESSAGE, 80)
|
||||
print(textwrap.fill(constants.SSH_ERROR_MESSAGE, 80))
|
||||
exit(1)
|
||||
|
||||
# Reduce the printk console log level to avoid noise during configuration
|
||||
|
@ -490,19 +492,19 @@ def main():
|
|||
try:
|
||||
if do_backup:
|
||||
backup_restore.backup(backup_name, archive_dir)
|
||||
print "\nBackup complete"
|
||||
print("\nBackup complete")
|
||||
elif do_system_restore:
|
||||
backup_restore.restore_system(backup_name,
|
||||
include_storage_reinstall)
|
||||
print "\nSystem restore complete"
|
||||
print("\nSystem restore complete")
|
||||
elif do_images_restore:
|
||||
backup_restore.restore_images(backup_name)
|
||||
print "\nImages restore complete"
|
||||
print("\nImages restore complete")
|
||||
elif do_complete_restore:
|
||||
backup_restore.restore_complete()
|
||||
elif do_clone:
|
||||
clone.clone(backup_name, archive_dir)
|
||||
print "\nCloning complete"
|
||||
print("\nCloning complete")
|
||||
elif do_provision:
|
||||
assistant = ConfigAssistant(**options)
|
||||
assistant.provision(answerfile)
|
||||
|
@ -521,24 +523,24 @@ def main():
|
|||
answerfile = TEMP_CGCS_CONFIG_FILE
|
||||
assistant = ConfigAssistant(**options)
|
||||
assistant.configure(answerfile, do_default_config)
|
||||
print "\nConfiguration was applied\n"
|
||||
print textwrap.fill(
|
||||
print("\nConfiguration was applied\n")
|
||||
print(textwrap.fill(
|
||||
"Please complete any out of service commissioning steps "
|
||||
"with system commands and unlock controller to proceed.", 80)
|
||||
"with system commands and unlock controller to proceed.", 80))
|
||||
assistant.check_required_interfaces_status()
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print "\nAborting configuration"
|
||||
print("\nAborting configuration")
|
||||
except BackupFail as e:
|
||||
print "\nBackup failed: {}".format(e)
|
||||
print("\nBackup failed: {}".format(e))
|
||||
except RestoreFail as e:
|
||||
print "\nRestore failed: {}".format(e)
|
||||
print("\nRestore failed: {}".format(e))
|
||||
except ConfigFail as e:
|
||||
print "\nConfiguration failed: {}".format(e)
|
||||
print("\nConfiguration failed: {}".format(e))
|
||||
except CloneFail as e:
|
||||
print "\nCloning failed: {}".format(e)
|
||||
print("\nCloning failed: {}".format(e))
|
||||
except UserQuit:
|
||||
print "\nAborted configuration"
|
||||
print("\nAborted configuration")
|
||||
finally:
|
||||
if os.path.isfile(TEMP_CGCS_CONFIG_FILE):
|
||||
os.remove(TEMP_CGCS_CONFIG_FILE)
|
||||
|
|
|
@ -35,7 +35,7 @@ def _test_answerfile(tmpdir, filename,
|
|||
assistant.input_config_from_file(answerfile)
|
||||
|
||||
# Test the display method
|
||||
print "Output from display_config:"
|
||||
print("Output from display_config:")
|
||||
assistant.display_config()
|
||||
|
||||
# Ensure we can write the configuration
|
||||
|
@ -50,7 +50,7 @@ def _test_answerfile(tmpdir, filename,
|
|||
f.write("\n[cAUTHENTICATION]\nADMIN_PASSWORD=Li69nux*\n")
|
||||
|
||||
# Do a diff between the answerfile and the generated config file
|
||||
print "\n\nDiff of answerfile vs. generated config file:\n"
|
||||
print("\n\nDiff of answerfile vs. generated config file:\n")
|
||||
with open(answerfile) as a, open(constants.CGCS_CONFIG_FILE) as b:
|
||||
a_lines = a.readlines()
|
||||
b_lines = b.readlines()
|
||||
|
|
|
@ -5,6 +5,7 @@ SPDX-License-Identifier: Apache-2.0
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
from six.moves import configparser
|
||||
import difflib
|
||||
import filecmp
|
||||
|
@ -436,16 +437,16 @@ FAKE_DOMAIN_DATA = {u'domains': [
|
|||
def _dump_config(config):
|
||||
""" Prints contents of config object """
|
||||
for section in config.sections():
|
||||
print "[%s]" % section
|
||||
print("[%s]" % section)
|
||||
for (name, value) in config.items(section):
|
||||
print "%s=%s" % (name, value)
|
||||
print("%s=%s" % (name, value))
|
||||
|
||||
|
||||
def _replace_in_file(filename, old, new):
|
||||
""" Replaces old with new in file filename. """
|
||||
for line in fileinput.FileInput(filename, inplace=1):
|
||||
line = line.replace(old, new)
|
||||
print line,
|
||||
print(line, end=' ')
|
||||
fileinput.close()
|
||||
|
||||
|
||||
|
@ -463,7 +464,7 @@ def _test_region_config(tmpdir, inputfile, resultfile,
|
|||
region_config = cr.parse_system_config(inputfile)
|
||||
|
||||
# Dump results for debugging
|
||||
print "Parsed region_config:\n"
|
||||
print("Parsed region_config:\n")
|
||||
_dump_config(region_config)
|
||||
|
||||
# Validate the region config file
|
||||
|
@ -477,7 +478,7 @@ def _test_region_config(tmpdir, inputfile, resultfile,
|
|||
shutil.copyfile(resultfile, local_resultfile)
|
||||
|
||||
# Do a diff between the output and the expected results
|
||||
print "\n\nDiff of output file vs. expected results file:\n"
|
||||
print("\n\nDiff of output file vs. expected results file:\n")
|
||||
with open(outputfile) as a, open(local_resultfile) as b:
|
||||
a_lines = a.readlines()
|
||||
b_lines = b.readlines()
|
||||
|
@ -515,7 +516,7 @@ def test_region_config_simple(tmpdir):
|
|||
|
||||
def test_region_config_simple_can_ips(tmpdir):
|
||||
""" Test import of simple region_config file with unit ips for CAN """
|
||||
print "IN TEST ################################################"
|
||||
print("IN TEST ################################################")
|
||||
regionfile = os.path.join(
|
||||
os.getcwd(), "controllerconfig/tests/files/",
|
||||
"region_config.simple.can_ips")
|
||||
|
|
|
@ -22,9 +22,9 @@ import controllerconfig.systemconfig as cr # noqa: E402
|
|||
def _dump_config(config):
|
||||
""" Prints contents of config object """
|
||||
for section in config.sections():
|
||||
print "[%s]" % section
|
||||
print("[%s]" % section)
|
||||
for (name, value) in config.items(section):
|
||||
print "%s=%s" % (name, value)
|
||||
print("%s=%s" % (name, value))
|
||||
|
||||
|
||||
def _test_system_config(filename):
|
||||
|
@ -34,7 +34,7 @@ def _test_system_config(filename):
|
|||
system_config = cr.parse_system_config(filename)
|
||||
|
||||
# Dump results for debugging
|
||||
print "Parsed system_config:\n"
|
||||
print("Parsed system_config:\n")
|
||||
_dump_config(system_config)
|
||||
|
||||
# Validate the system config file
|
||||
|
|
|
@ -124,10 +124,10 @@ class OpenStack(object):
|
|||
|
||||
|
||||
def show_help():
|
||||
print ("Usage: %s <user_action_log_file>" % sys.argv[0])
|
||||
print textwrap.fill(
|
||||
print("Usage: %s <user_action_log_file>" % sys.argv[0])
|
||||
print(textwrap.fill(
|
||||
"Tidy storage post system restore. Check user actions "
|
||||
"in the generated user_action_log_file.", 80)
|
||||
"in the generated user_action_log_file.", 80))
|
||||
|
||||
|
||||
def tidy_storage(result_file):
|
||||
|
@ -219,7 +219,7 @@ def tidy_storage(result_file):
|
|||
'rbd://{}/images/{}/snap'.format(ceph_cluster[0],
|
||||
image)
|
||||
|
||||
print ("Creating a Glance image %s ...\n " % fields['name'])
|
||||
print("Creating a Glance image %s ...\n " % fields['name'])
|
||||
g_client_v1.images.create(**fields)
|
||||
except subprocess.CalledProcessError:
|
||||
LOG.error("Failed to access rbd image %s" % image)
|
||||
|
@ -242,7 +242,7 @@ def tidy_storage(result_file):
|
|||
|
||||
snaps_no_backend_vol = []
|
||||
for snap in snap_l:
|
||||
print ("Check if volume snapshot %s has backend " % snap.name)
|
||||
print("Check if volume snapshot %s has backend " % snap.name)
|
||||
try:
|
||||
output = subprocess.check_output(
|
||||
["rbd", "ls", "--pool", "cinder-volumes"],
|
||||
|
@ -278,8 +278,8 @@ def tidy_storage(result_file):
|
|||
|
||||
if not keep_snap:
|
||||
try:
|
||||
print ("Volume snapshot %s has no backend data. "
|
||||
"Deleting it from Cinder...\n" % snap.name)
|
||||
print("Volume snapshot %s has no backend data. "
|
||||
"Deleting it from Cinder...\n" % snap.name)
|
||||
|
||||
c_client.volume_snapshots.delete(c_utils.find_resource(
|
||||
c_client.volume_snapshots, snap.id), force=True)
|
||||
|
@ -387,9 +387,9 @@ def tidy_storage(result_file):
|
|||
# supported in rbd. So we just remove the snapshot.
|
||||
|
||||
# Remove the snapshot
|
||||
print (textwrap.fill(
|
||||
"Removing snapshot %s from volume %s "
|
||||
"in rbd...\n" % (snap, vol_id), 76))
|
||||
print(textwrap.fill(
|
||||
"Removing snapshot %s from volume %s "
|
||||
"in rbd...\n" % (snap, vol_id), 76))
|
||||
del_snap = '{}@{}'.format(volume, snap)
|
||||
output = subprocess.check_output(
|
||||
["rbd", "snap", "unprotect", del_snap],
|
||||
|
@ -440,8 +440,8 @@ def tidy_storage(result_file):
|
|||
|
||||
for snap in snap_l:
|
||||
if snap not in cinder_snap_l:
|
||||
print ("Creating volume snapshot found-%s "
|
||||
"in Cinder...\n" % snap)
|
||||
print("Creating volume snapshot found-%s "
|
||||
"in Cinder...\n" % snap)
|
||||
|
||||
c_client.volume_snapshots.manage(
|
||||
volume_id=vol_id,
|
||||
|
|
|
@ -450,7 +450,7 @@ def import_databases(from_release, to_release, from_path=None, simplex=False):
|
|||
# Execute import commands
|
||||
for cmd in import_commands:
|
||||
try:
|
||||
print "Importing %s" % cmd[0]
|
||||
print("Importing %s" % cmd[0])
|
||||
LOG.info("Executing import command: %s" % cmd[1])
|
||||
subprocess.check_call([cmd[1]],
|
||||
shell=True, stdout=devnull)
|
||||
|
@ -483,7 +483,7 @@ def create_databases(from_release, to_release, db_credentials):
|
|||
with conn:
|
||||
with conn.cursor() as cur:
|
||||
for database in databases_to_create:
|
||||
print "Creating %s database" % database
|
||||
print("Creating %s database" % database)
|
||||
username = psycopg2.extensions.AsIs(
|
||||
'\"%s\"' % db_credentials[database]['username'])
|
||||
db_name = psycopg2.extensions.AsIs('\"%s\"' % database)
|
||||
|
@ -513,7 +513,7 @@ def migrate_sysinv_database():
|
|||
|
||||
sysinv_cmd = 'sysinv-dbsync'
|
||||
try:
|
||||
print "Migrating sysinv"
|
||||
print("Migrating sysinv")
|
||||
LOG.info("Executing migrate command: %s" % sysinv_cmd)
|
||||
subprocess.check_call([sysinv_cmd],
|
||||
shell=True, stdout=devnull, stderr=devnull)
|
||||
|
@ -686,7 +686,7 @@ def migrate_databases(from_release, shared_services, db_credentials,
|
|||
# Execute migrate commands
|
||||
for cmd in migrate_commands:
|
||||
try:
|
||||
print "Migrating %s" % cmd[0]
|
||||
print("Migrating %s" % cmd[0])
|
||||
LOG.info("Executing migrate command: %s" % cmd[1])
|
||||
subprocess.check_call([cmd[1]],
|
||||
shell=True, stdout=devnull, stderr=devnull)
|
||||
|
@ -826,19 +826,19 @@ def upgrade_controller(from_release, to_release):
|
|||
nfs_mount_filesystem(utils.POSTGRES_PATH, POSTGRES_MOUNT_PATH)
|
||||
|
||||
# Migrate keyring data
|
||||
print "Migrating keyring data..."
|
||||
print("Migrating keyring data...")
|
||||
migrate_keyring_data(from_release, to_release)
|
||||
|
||||
# Migrate pxeboot config
|
||||
print "Migrating pxeboot configuration..."
|
||||
print("Migrating pxeboot configuration...")
|
||||
migrate_pxeboot_config(from_release, to_release)
|
||||
|
||||
# Migrate sysinv data.
|
||||
print "Migrating sysinv configuration..."
|
||||
print("Migrating sysinv configuration...")
|
||||
migrate_sysinv_data(from_release, to_release)
|
||||
|
||||
# Prepare for database migration
|
||||
print "Preparing for database migration..."
|
||||
print("Preparing for database migration...")
|
||||
prepare_postgres_filesystems()
|
||||
|
||||
# Create the postgres database
|
||||
|
@ -863,7 +863,7 @@ def upgrade_controller(from_release, to_release):
|
|||
time.sleep(5)
|
||||
|
||||
# Import databases
|
||||
print "Importing databases..."
|
||||
print("Importing databases...")
|
||||
import_databases(from_release, to_release)
|
||||
|
||||
shared_services = get_shared_services()
|
||||
|
@ -881,17 +881,17 @@ def upgrade_controller(from_release, to_release):
|
|||
db_credentials = get_db_credentials(shared_services, from_release)
|
||||
|
||||
# Create any new databases
|
||||
print "Creating new databases..."
|
||||
print("Creating new databases...")
|
||||
create_databases(from_release, to_release, db_credentials)
|
||||
|
||||
print "Migrating databases..."
|
||||
print("Migrating databases...")
|
||||
# Migrate sysinv database
|
||||
migrate_sysinv_database()
|
||||
|
||||
# Migrate databases
|
||||
migrate_databases(from_release, shared_services, db_credentials)
|
||||
|
||||
print "Applying configuration..."
|
||||
print("Applying configuration...")
|
||||
|
||||
# Execute migration scripts
|
||||
utils.execute_migration_scripts(
|
||||
|
@ -934,7 +934,7 @@ def upgrade_controller(from_release, to_release):
|
|||
LOG.info("Failed to update hiera configuration")
|
||||
raise
|
||||
|
||||
print "Shutting down upgrade processes..."
|
||||
print("Shutting down upgrade processes...")
|
||||
|
||||
# Stop postgres service
|
||||
LOG.info("Stopping postgresql service")
|
||||
|
@ -957,7 +957,7 @@ def upgrade_controller(from_release, to_release):
|
|||
raise
|
||||
|
||||
# Copy upgraded database back to controller-0
|
||||
print "Writing upgraded databases..."
|
||||
print("Writing upgraded databases...")
|
||||
LOG.info("Copying upgraded database to controller-0")
|
||||
try:
|
||||
subprocess.check_call(
|
||||
|
@ -1003,13 +1003,13 @@ def upgrade_controller(from_release, to_release):
|
|||
unmount_filesystem("/tmp/etc_platform")
|
||||
os.rmdir("/tmp/etc_platform")
|
||||
|
||||
print "Controller-1 upgrade complete"
|
||||
print("Controller-1 upgrade complete")
|
||||
LOG.info("Controller-1 upgrade complete!!!")
|
||||
|
||||
|
||||
def show_help():
|
||||
print ("Usage: %s <FROM_RELEASE> <TO_RELEASE>" % sys.argv[0])
|
||||
print "Upgrade controller-1. For internal use only."
|
||||
print("Usage: %s <FROM_RELEASE> <TO_RELEASE>" % sys.argv[0])
|
||||
print("Upgrade controller-1. For internal use only.")
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -1026,22 +1026,22 @@ def main():
|
|||
elif arg == 2:
|
||||
to_release = sys.argv[arg]
|
||||
else:
|
||||
print ("Invalid option %s. Use --help for more information." %
|
||||
sys.argv[arg])
|
||||
print("Invalid option %s. Use --help for more information." %
|
||||
sys.argv[arg])
|
||||
exit(1)
|
||||
arg += 1
|
||||
|
||||
log.configure()
|
||||
|
||||
if not from_release or not to_release:
|
||||
print "Both the FROM_RELEASE and TO_RELEASE must be specified"
|
||||
print("Both the FROM_RELEASE and TO_RELEASE must be specified")
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
upgrade_controller(from_release, to_release)
|
||||
except Exception as e:
|
||||
LOG.exception(e)
|
||||
print "Upgrade failed: {}".format(e)
|
||||
print("Upgrade failed: {}".format(e))
|
||||
|
||||
# Set upgrade fail flag on mate controller
|
||||
LOG.info("Set upgrade fail flag on mate controller")
|
||||
|
@ -1520,13 +1520,13 @@ def upgrade_controller_simplex(backup_file):
|
|||
|
||||
|
||||
def print_log_info(string):
|
||||
print string
|
||||
print(string)
|
||||
LOG.info(string)
|
||||
|
||||
|
||||
def show_help_simplex():
|
||||
print ("Usage: %s <BACKUP_FILE>" % sys.argv[0])
|
||||
print "Upgrade controller-0 simplex. For internal use only."
|
||||
print("Usage: %s <BACKUP_FILE>" % sys.argv[0])
|
||||
print("Upgrade controller-0 simplex. For internal use only.")
|
||||
|
||||
|
||||
def simplex_main():
|
||||
|
@ -1539,8 +1539,8 @@ def simplex_main():
|
|||
elif arg == 1:
|
||||
backup_file = sys.argv[arg]
|
||||
else:
|
||||
print ("Invalid option %s. Use --help for more information." %
|
||||
sys.argv[arg])
|
||||
print("Invalid option %s. Use --help for more information." %
|
||||
sys.argv[arg])
|
||||
exit(1)
|
||||
arg += 1
|
||||
|
||||
|
@ -1554,14 +1554,14 @@ def simplex_main():
|
|||
exit(1)
|
||||
|
||||
if not backup_file:
|
||||
print "The BACKUP_FILE must be specified"
|
||||
print("The BACKUP_FILE must be specified")
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
upgrade_controller_simplex(backup_file)
|
||||
except Exception as e:
|
||||
LOG.exception(e)
|
||||
print "Upgrade failed: {}".format(e)
|
||||
print("Upgrade failed: {}".format(e))
|
||||
# TODO SET Upgrade fail flag
|
||||
# Set upgrade fail flag on mate controller
|
||||
exit(1)
|
||||
|
|
|
@ -247,5 +247,5 @@ def apply_upgrade_manifest(controller_address):
|
|||
subprocess.check_call(cmd, stdout=flog, stderr=flog)
|
||||
except subprocess.CalledProcessError:
|
||||
msg = "Failed to execute upgrade manifest"
|
||||
print msg
|
||||
print(msg)
|
||||
raise Exception(msg)
|
||||
|
|
|
@ -626,7 +626,7 @@ def apply_manifest(controller_address_0, personality, manifest, hieradata,
|
|||
subprocess.check_call(cmd, stdout=flog, stderr=flog)
|
||||
except subprocess.CalledProcessError:
|
||||
msg = "Failed to execute %s manifest" % manifest
|
||||
print msg
|
||||
print(msg)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
@ -657,7 +657,7 @@ def create_static_config():
|
|||
subprocess.check_call(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
msg = "Failed to create puppet hiera static config"
|
||||
print msg
|
||||
print(msg)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
@ -669,7 +669,7 @@ def create_system_config():
|
|||
subprocess.check_call(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
msg = "Failed to update puppet hiera system config"
|
||||
print msg
|
||||
print(msg)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
@ -684,7 +684,7 @@ def create_host_config(hostname=None):
|
|||
subprocess.check_call(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
msg = "Failed to update puppet hiera host config"
|
||||
print msg
|
||||
print(msg)
|
||||
raise Exception(msg)
|
||||
|
||||
|
||||
|
@ -821,7 +821,7 @@ def apply_banner_customization():
|
|||
stdout=blog, stderr=blog)
|
||||
except subprocess.CalledProcessError:
|
||||
error_text = "Failed to apply banner customization"
|
||||
print "%s; see %s for detail" % (error_text, logfile)
|
||||
print("%s; see %s for detail" % (error_text, logfile))
|
||||
|
||||
|
||||
def mtce_restart():
|
||||
|
|
|
@ -52,7 +52,7 @@ def main():
|
|||
elif arg == 3:
|
||||
action = sys.argv[arg]
|
||||
else:
|
||||
print ("Invalid option %s." % sys.argv[arg])
|
||||
print("Invalid option %s." % sys.argv[arg])
|
||||
return 1
|
||||
arg += 1
|
||||
|
||||
|
@ -65,7 +65,7 @@ def main():
|
|||
do_migration_work()
|
||||
except Exception as ex:
|
||||
LOG.exception(ex)
|
||||
print ex
|
||||
print(ex)
|
||||
return 1
|
||||
|
||||
|
||||
|
|
|
@ -30,11 +30,26 @@ commands = pylint {posargs} controllerconfig --rcfile=./pylint.rc --extension-pk
|
|||
|
||||
[testenv:flake8]
|
||||
basepython = python2.7
|
||||
deps = flake8<3.6.0
|
||||
deps = hacking
|
||||
flake8<3.6.0
|
||||
commands = flake8 {posargs}
|
||||
|
||||
[flake8]
|
||||
ignore = W503
|
||||
# H series are hacking
|
||||
# H101: Use TODO(NAME)
|
||||
# H102: Apache 2.0 license header not found
|
||||
# H104: File contains nothing but comments
|
||||
# H231: Python 3.x incompatible 'except x,y:' construct
|
||||
# H232: Python 3.x incompatible octal 400 should be written as 0o400
|
||||
# H238: old style class declaration, use new style (inherit from `object`)
|
||||
# H301: one import per line
|
||||
# H306: imports not in alphabetical order
|
||||
# H401: docstring should not start with a space
|
||||
# H403: multi line docstrings should end on a new line
|
||||
# H404: multi line docstring should start without a leading new line
|
||||
# H405: multi line docstring summary not separated with an empty line
|
||||
ignore = H101,H102,H104,H231,H232,H238,H301,H306,H401,H403,H404,H405,
|
||||
W503
|
||||
|
||||
[testenv:py27]
|
||||
basepython = python2.7
|
||||
|
|
|
@ -32,7 +32,7 @@ def main():
|
|||
elif arg == 3:
|
||||
action = sys.argv[arg]
|
||||
else:
|
||||
print ("Invalid option %s." % sys.argv[arg])
|
||||
print("Invalid option %s." % sys.argv[arg])
|
||||
return 1
|
||||
arg += 1
|
||||
|
||||
|
@ -47,7 +47,7 @@ def main():
|
|||
move_distributed_port_bindings_off_controller_1()
|
||||
except Exception as ex:
|
||||
LOG.exception(ex)
|
||||
print ex
|
||||
print(ex)
|
||||
return 1
|
||||
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ def main():
|
|||
elif arg == 3:
|
||||
action = sys.argv[arg]
|
||||
else:
|
||||
print ("Invalid option %s." % sys.argv[arg])
|
||||
print("Invalid option %s." % sys.argv[arg])
|
||||
return 1
|
||||
arg += 1
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from __future__ import print_function
|
||||
try:
|
||||
import tsconfig.tsconfig as tsc
|
||||
is_remote = False
|
||||
|
@ -225,7 +226,7 @@ def _sort_for_list(objs, fields, formatters={}, sortby=0, reversesort=False):
|
|||
|
||||
|
||||
def default_printer(s):
|
||||
print s
|
||||
print(s)
|
||||
|
||||
|
||||
def pt_builder(field_labels, fields, formatters, paging, printer=default_printer):
|
||||
|
@ -410,7 +411,7 @@ def print_tuple_list(tuples, tuple_labels=[], formatters={}):
|
|||
v = formatters[f](v)
|
||||
pt.add_row([l, v])
|
||||
|
||||
print pt.get_string()
|
||||
print(pt.get_string())
|
||||
|
||||
|
||||
def str_height(text):
|
||||
|
@ -465,7 +466,7 @@ def print_dict(d, dict_property="Property", wrap=0):
|
|||
col1 = ''
|
||||
else:
|
||||
pt.add_row([k, v])
|
||||
print pt.get_string()
|
||||
print(pt.get_string())
|
||||
|
||||
|
||||
def find_resource(manager, name_or_id):
|
||||
|
@ -561,7 +562,7 @@ def dict_to_patch(values, op='replace'):
|
|||
|
||||
def exit(msg=''):
|
||||
if msg:
|
||||
print >> sys.stderr, msg
|
||||
print(msg, file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
|
|
|
@ -800,7 +800,7 @@ def _simpleTestHarness(no_wrap):
|
|||
utils.print_list(logs, fields, field_labels, formatters=formatters, sortby=6,
|
||||
reversesort=True, no_wrap_fields=['entity_instance_id'])
|
||||
|
||||
print "nowrap = {}".format(is_nowrap_set())
|
||||
print("nowrap = {}".format(is_nowrap_set()))
|
||||
|
||||
if __name__ == "__main__":
|
||||
_simpleTestHarness(True)
|
||||
|
|
|
@ -98,7 +98,7 @@ def generate(srcfiles):
|
|||
for group, opts in opts_by_group.items():
|
||||
print_group_opts(group, opts)
|
||||
|
||||
print "# Total option count: %d" % OPTION_COUNT
|
||||
print("# Total option count: %d" % OPTION_COUNT)
|
||||
|
||||
|
||||
def _import_module(mod_str):
|
||||
|
@ -162,18 +162,18 @@ def _list_opts(obj):
|
|||
|
||||
|
||||
def print_group_opts(group, opts_by_module):
|
||||
print "[%s]" % group
|
||||
print
|
||||
print("[%s]" % group)
|
||||
print('')
|
||||
global OPTION_COUNT
|
||||
for mod, opts in opts_by_module:
|
||||
OPTION_COUNT += len(opts)
|
||||
print '#'
|
||||
print '# Options defined in %s' % mod
|
||||
print '#'
|
||||
print
|
||||
print('#')
|
||||
print('# Options defined in %s' % mod)
|
||||
print('#')
|
||||
print('')
|
||||
for opt in opts:
|
||||
_print_opt(opt)
|
||||
print
|
||||
print('')
|
||||
|
||||
|
||||
def _get_my_ip():
|
||||
|
@ -213,33 +213,33 @@ def _print_opt(opt):
|
|||
sys.stderr.write("%s\n" % str(err))
|
||||
sys.exit(1)
|
||||
opt_help += ' (' + OPT_TYPES[opt_type] + ')'
|
||||
print '#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH))
|
||||
print('#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH)))
|
||||
try:
|
||||
if opt_default is None:
|
||||
print '#%s=<None>' % opt_name
|
||||
print('#%s=<None>' % opt_name)
|
||||
elif opt_type == STROPT:
|
||||
assert(isinstance(opt_default, six.string_types))
|
||||
print '#%s=%s' % (opt_name, _sanitize_default(opt_default))
|
||||
print('#%s=%s' % (opt_name, _sanitize_default(opt_default)))
|
||||
elif opt_type == BOOLOPT:
|
||||
assert(isinstance(opt_default, bool))
|
||||
print '#%s=%s' % (opt_name, str(opt_default).lower())
|
||||
print('#%s=%s' % (opt_name, str(opt_default).lower()))
|
||||
elif opt_type == INTOPT:
|
||||
assert(isinstance(opt_default, int) and
|
||||
not isinstance(opt_default, bool))
|
||||
print '#%s=%s' % (opt_name, opt_default)
|
||||
print('#%s=%s' % (opt_name, opt_default))
|
||||
elif opt_type == FLOATOPT:
|
||||
assert(isinstance(opt_default, float))
|
||||
print '#%s=%s' % (opt_name, opt_default)
|
||||
print('#%s=%s' % (opt_name, opt_default))
|
||||
elif opt_type == LISTOPT:
|
||||
assert(isinstance(opt_default, list))
|
||||
print '#%s=%s' % (opt_name, ','.join(opt_default))
|
||||
print('#%s=%s' % (opt_name, ','.join(opt_default)))
|
||||
elif opt_type == MULTISTROPT:
|
||||
assert(isinstance(opt_default, list))
|
||||
if not opt_default:
|
||||
opt_default = ['']
|
||||
for default in opt_default:
|
||||
print '#%s=%s' % (opt_name, default)
|
||||
print
|
||||
print('#%s=%s' % (opt_name, default))
|
||||
print('')
|
||||
except Exception:
|
||||
sys.stderr.write('Error in option "%s"\n' % opt_name)
|
||||
sys.exit(1)
|
||||
|
@ -247,7 +247,7 @@ def _print_opt(opt):
|
|||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print "usage: %s [srcfile]...\n" % sys.argv[0]
|
||||
print("usage: %s [srcfile]...\n" % sys.argv[0])
|
||||
sys.exit(0)
|
||||
generate(sys.argv[1:])
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
Command-line interface for System Inventory and Maintenance
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import argparse
|
||||
import httplib2
|
||||
import logging
|
||||
|
@ -338,14 +339,14 @@ def main():
|
|||
CgtsShell().main(sys.argv[1:])
|
||||
|
||||
except KeyboardInterrupt as e:
|
||||
print >> sys.stderr, ('caught: %r, aborting' % (e))
|
||||
print(('caught: %r, aborting' % (e)), file=sys.stderr)
|
||||
sys.exit(0)
|
||||
|
||||
except IOError as e:
|
||||
sys.exit(0)
|
||||
|
||||
except Exception as e:
|
||||
print >> sys.stderr, e
|
||||
print(e, file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -59,7 +59,7 @@ def do_addrpool_list(cc, args):
|
|||
def do_addrpool_delete(cc, args):
|
||||
"""Delete an IP address pool."""
|
||||
cc.address_pool.delete(args.address_pool_uuid)
|
||||
print 'Deleted address pool: %s' % (args.address_pool_uuid)
|
||||
print('Deleted address pool: %s' % (args.address_pool_uuid))
|
||||
|
||||
|
||||
def _get_range_tuples(data):
|
||||
|
|
|
@ -51,7 +51,7 @@ def do_host_addr_list(cc, args):
|
|||
def do_host_addr_delete(cc, args):
|
||||
"""Delete an IP address."""
|
||||
cc.address.delete(args.address_uuid)
|
||||
print 'Deleted Address: %s' % (args.address_uuid)
|
||||
print('Deleted Address: %s' % (args.address_uuid))
|
||||
|
||||
|
||||
@utils.arg('hostnameorid',
|
||||
|
|
|
@ -62,13 +62,13 @@ def do_ceph_mon_modify(cc, args):
|
|||
for ceph_mon in cc.ceph_mon.list():
|
||||
cc.ceph_mon.update(ceph_mon.uuid, patch)
|
||||
_print_ceph_mon_list(cc)
|
||||
print "\nNOTE: ceph_mon_gib for both controllers are changed."
|
||||
print("\nNOTE: ceph_mon_gib for both controllers are changed.")
|
||||
else:
|
||||
ceph_mon = cc.ceph_mon.update(ceph_mon.uuid, patch)
|
||||
_print_ceph_mon_show(ceph_mon)
|
||||
|
||||
print "\nSystem configuration has changed.\nplease follow the " \
|
||||
"administrator guide to complete configuring system.\n"
|
||||
print("\nSystem configuration has changed.\nplease follow the "
|
||||
"administrator guide to complete configuring system.\n")
|
||||
|
||||
|
||||
def do_ceph_mon_list(cc, args):
|
||||
|
|
|
@ -40,14 +40,14 @@ def do_certificate_show(cc, args):
|
|||
args.certificate_uuid = cert.uuid
|
||||
break
|
||||
else:
|
||||
print "No TPM certificate installed"
|
||||
print("No TPM certificate installed")
|
||||
return
|
||||
|
||||
certificate = cc.certificate.get(args.certificate_uuid)
|
||||
if certificate:
|
||||
_print_certificate_show(certificate)
|
||||
else:
|
||||
print "No Certificates installed"
|
||||
print("No Certificates installed")
|
||||
|
||||
|
||||
def do_certificate_list(cc, args):
|
||||
|
@ -85,9 +85,9 @@ def do_certificate_install(cc, args):
|
|||
'mode': args.mode,
|
||||
'certificate_file': os.path.abspath(args.certificate_file)}
|
||||
|
||||
print "WARNING: For security reasons, the original certificate, "
|
||||
print "containing the private key, will be removed, "
|
||||
print "once the private key is processed."
|
||||
print("WARNING: For security reasons, the original certificate, ")
|
||||
print("containing the private key, will be removed, ")
|
||||
print("once the private key is processed.")
|
||||
|
||||
try:
|
||||
response = cc.certificate.certificate_install(sec_file, data=data)
|
||||
|
|
|
@ -141,4 +141,4 @@ if os.path.exists('/var/run/.sysinv_running_in_lab'):
|
|||
def do_cluster_delete(cc, args):
|
||||
"""Delete a Cluster."""
|
||||
cc.cluster.delete(args.cluster_uuid)
|
||||
print 'Deleted cluster: %s' % args.cluster_uuid
|
||||
print('Deleted cluster: %s' % args.cluster_uuid)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
# All Rights Reserved.
|
||||
#
|
||||
|
||||
from __future__ import print_function
|
||||
import argparse
|
||||
import sys
|
||||
import time
|
||||
|
@ -44,7 +45,7 @@ def do_drbdsync_show(cc, args):
|
|||
|
||||
drbdconfigs = cc.drbdconfig.list()
|
||||
_print_drbdsync_show(drbdconfigs[0])
|
||||
print
|
||||
print('')
|
||||
|
||||
ihosts = cc.ihost.list_personality(personality=CONTROLLER)
|
||||
_print_controller_config_show(ihosts)
|
||||
|
@ -72,7 +73,7 @@ def do_drbdsync_modify(cc, args):
|
|||
if len(attributes) > 0:
|
||||
attributes.append('action=apply')
|
||||
else:
|
||||
print "No options provided."
|
||||
print("No options provided.")
|
||||
return
|
||||
|
||||
patch = utils.args_array_to_patch("replace", attributes)
|
||||
|
@ -90,9 +91,9 @@ def do_drbdsync_modify(cc, args):
|
|||
for ihost in ihosts:
|
||||
if ihost.config_target and ihost.config_applied != ihost.config_target:
|
||||
is_config = True
|
||||
print ("host %s is configuring ..." % (ihost.hostname))
|
||||
print("host %s is configuring ..." % (ihost.hostname))
|
||||
if is_config:
|
||||
print "Cannot apply update while controller configuration in progress."
|
||||
print("Cannot apply update while controller configuration in progress.")
|
||||
return
|
||||
|
||||
try:
|
||||
|
@ -117,16 +118,16 @@ def do_drbdsync_modify(cc, args):
|
|||
hosts.append(ihost.hostname)
|
||||
if do_wait:
|
||||
if x == 0:
|
||||
print ("waiting for hosts: %s to finish configuring" %
|
||||
', '.join(hosts)),
|
||||
print(("waiting for hosts: %s to finish configuring" %
|
||||
', '.join(hosts)), end=' ')
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
print ".",
|
||||
print(".", end=' ')
|
||||
sys.stdout.flush()
|
||||
time.sleep(wait_interval)
|
||||
else:
|
||||
print
|
||||
print "DRBD configuration finished."
|
||||
print('')
|
||||
print("DRBD configuration finished.")
|
||||
break
|
||||
if do_wait:
|
||||
print "DRBD configuration timed out."
|
||||
print("DRBD configuration timed out.")
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
def do_health_query(cc, args):
|
||||
"""Run the Health Check."""
|
||||
print cc.health.get()
|
||||
print(cc.health.get())
|
||||
|
||||
|
||||
def do_health_query_upgrade(cc, args):
|
||||
"""Run the Health Check for an Upgrade."""
|
||||
print cc.health.get_upgrade()
|
||||
print(cc.health.get_upgrade())
|
||||
|
|
|
@ -53,8 +53,8 @@ def do_helm_override_delete(cc, args):
|
|||
"""Delete overrides for a chart."""
|
||||
try:
|
||||
cc.helm.delete_overrides(args.chart, args.namespace)
|
||||
print 'Deleted chart overrides for %s:%s' % (
|
||||
args.chart, args.namespace)
|
||||
print('Deleted chart overrides for %s:%s' % (
|
||||
args.chart, args.namespace))
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('chart overrides not found: %s:%s' % (
|
||||
args.chart, args.namespace))
|
||||
|
|
|
@ -191,9 +191,9 @@ def do_host_bulk_add(cc, args):
|
|||
success = response.get('success')
|
||||
error = response.get('error')
|
||||
if success:
|
||||
print "Success: " + success + "\n"
|
||||
print("Success: " + success + "\n")
|
||||
if error:
|
||||
print "Error:\n" + error
|
||||
print("Error:\n" + error)
|
||||
|
||||
|
||||
@utils.arg('-m', '--mgmt_mac',
|
||||
|
@ -235,7 +235,7 @@ def do_host_delete(cc, args):
|
|||
for n in args.hostnameorid:
|
||||
try:
|
||||
cc.ihost.delete(n)
|
||||
print 'Deleted host %s' % n
|
||||
print('Deleted host %s' % n)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('host not found: %s' % n)
|
||||
|
||||
|
@ -642,17 +642,17 @@ def do_host_patch_reboot(cc, args):
|
|||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Host not found: %s' % args.hostnameorid)
|
||||
|
||||
print "The host-patch-reboot command has been deprecated."
|
||||
print "Please use the following procedure:"
|
||||
print "1. Lock the node:"
|
||||
print " system host-lock %s" % ihost.hostname
|
||||
print "2. Issue patch install request:"
|
||||
print " sudo sw-patch host-install %s" % ihost.hostname
|
||||
print " Or to issue non-blocking requests for parallel install:"
|
||||
print " sudo sw-patch host-install-async %s" % ihost.hostname
|
||||
print " sudo sw-patch query-hosts"
|
||||
print "3. Unlock node once install completes:"
|
||||
print " system host-unlock %s" % ihost.hostname
|
||||
print("The host-patch-reboot command has been deprecated.")
|
||||
print("Please use the following procedure:")
|
||||
print("1. Lock the node:")
|
||||
print(" system host-lock %s" % ihost.hostname)
|
||||
print("2. Issue patch install request:")
|
||||
print(" sudo sw-patch host-install %s" % ihost.hostname)
|
||||
print(" Or to issue non-blocking requests for parallel install:")
|
||||
print(" sudo sw-patch host-install-async %s" % ihost.hostname)
|
||||
print(" sudo sw-patch query-hosts")
|
||||
print("3. Unlock node once install completes:")
|
||||
print(" system host-unlock %s" % ihost.hostname)
|
||||
|
||||
|
||||
@utils.arg('--filename',
|
||||
|
@ -668,9 +668,9 @@ def do_host_bulk_export(cc, args):
|
|||
try:
|
||||
with open(config_filename, 'wb') as fw:
|
||||
fw.write(xml_content)
|
||||
print _('Export successfully to %s') % config_filename
|
||||
print(_('Export successfully to %s') % config_filename)
|
||||
except IOError:
|
||||
print _('Cannot write to file: %s') % config_filename
|
||||
print(_('Cannot write to file: %s') % config_filename)
|
||||
|
||||
return
|
||||
|
||||
|
@ -697,7 +697,7 @@ def do_host_downgrade(cc, args):
|
|||
'Are you absolutely sure you want to continue? [yes/N]: ')
|
||||
confirm = input(warning_message)
|
||||
if confirm != 'yes':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
|
||||
ihost = cc.ihost.downgrade(args.hostid, args.force)
|
||||
|
@ -726,7 +726,7 @@ def do_host_upgrade(cc, args):
|
|||
'Are you absolutely sure you want to continue? [yes/N]: ')
|
||||
confirm = input(warning_message)
|
||||
if confirm != 'yes':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
|
||||
ihost = cc.ihost.upgrade(args.hostid, args.force)
|
||||
|
|
|
@ -77,4 +77,4 @@ def do_snmp_comm_delete(cc, args):
|
|||
cc.icommunity.delete(c)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Community not found: %s' % c)
|
||||
print 'Deleted community %s' % c
|
||||
print('Deleted community %s' % c)
|
||||
|
|
|
@ -106,7 +106,7 @@ def do_host_disk_wipe(cc, args):
|
|||
"Continue [yes/N]: ")
|
||||
confirm = input(warning_message)
|
||||
if confirm != 'yes':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
|
||||
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
|
||||
|
|
|
@ -26,7 +26,7 @@ def do_infra_show(cc, args):
|
|||
|
||||
iinfras = cc.iinfra.list()
|
||||
if not iinfras:
|
||||
print "Infrastructure network not configured"
|
||||
print("Infrastructure network not configured")
|
||||
return
|
||||
|
||||
iinfra = iinfras[0]
|
||||
|
@ -73,7 +73,7 @@ def do_infra_modify(cc, args):
|
|||
|
||||
iinfras = cc.iinfra.list()
|
||||
if not iinfras:
|
||||
print "Infrastructure network not configured"
|
||||
print("Infrastructure network not configured")
|
||||
return
|
||||
|
||||
iinfra = iinfras[0]
|
||||
|
@ -97,7 +97,7 @@ def do_infra_modify(cc, args):
|
|||
def do_infra_apply(cc, args):
|
||||
infras = cc.iinfra.list()
|
||||
if not infras:
|
||||
print "Infrastructure network not configured"
|
||||
print("Infrastructure network not configured")
|
||||
return
|
||||
|
||||
infra = infras[0]
|
||||
|
|
|
@ -111,7 +111,7 @@ def do_host_if_delete(cc, args):
|
|||
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
|
||||
i = _find_interface(cc, ihost, args.ifnameoruuid)
|
||||
cc.iinterface.delete(i.uuid)
|
||||
print 'Deleted interface: host %s if %s' % (args.hostnameorid, args.ifnameoruuid)
|
||||
print('Deleted interface: host %s if %s' % (args.hostnameorid, args.ifnameoruuid))
|
||||
|
||||
|
||||
@utils.arg('hostnameorid',
|
||||
|
|
|
@ -85,7 +85,7 @@ def do_host_node_delete(cc, args):
|
|||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Delete node failed: host %s if %s' %
|
||||
(args.hostnameorid, args.inodeuuid))
|
||||
print 'Deleted node: host %s if %s' % (args.hostnameorid, args.inodeuuid)
|
||||
print('Deleted node: host %s if %s' % (args.hostnameorid, args.inodeuuid))
|
||||
|
||||
|
||||
@utils.arg('hostnameorid',
|
||||
|
|
|
@ -92,4 +92,4 @@ def do_interface_network_assign(cc, args):
|
|||
def do_interface_network_remove(cc, args):
|
||||
"""Remove an assigned network from an interface."""
|
||||
cc.interface_network.remove(args.interface_network_uuid)
|
||||
print 'Deleted Interface Network: %s' % args.interface_network_uuid
|
||||
print('Deleted Interface Network: %s' % args.interface_network_uuid)
|
||||
|
|
|
@ -163,7 +163,7 @@ def do_ifprofile_delete(cc, args):
|
|||
cc.iprofile.delete(iprofile.uuid)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('if profile delete failed: %s' % n)
|
||||
print 'Deleted if profile %s' % n
|
||||
print('Deleted if profile %s' % n)
|
||||
|
||||
#
|
||||
# CPU PROFILES
|
||||
|
@ -281,7 +281,7 @@ def do_cpuprofile_delete(cc, args):
|
|||
cc.iprofile.delete(iprofile.uuid)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Cpu profile delete failed: %s' % n)
|
||||
print 'Deleted cpu profile %s' % n
|
||||
print('Deleted cpu profile %s' % n)
|
||||
|
||||
|
||||
#
|
||||
|
@ -420,9 +420,9 @@ def do_storprofile_list(cc, args):
|
|||
storprofiles.append(profile)
|
||||
|
||||
if profile_disk_invalid:
|
||||
print "WARNING: Storage profiles from a previous release are " \
|
||||
"missing the persistent disk name in the disk config field. " \
|
||||
"These profiles need to be deleted and recreated."
|
||||
print("WARNING: Storage profiles from a previous release are "
|
||||
"missing the persistent disk name in the disk config field. "
|
||||
"These profiles need to be deleted and recreated.")
|
||||
|
||||
if storprofiles:
|
||||
field_labels = ['uuid', 'name', 'disk config', 'partition config',
|
||||
|
@ -469,9 +469,9 @@ def do_storprofile_show(cc, args):
|
|||
|
||||
profile_disk_invalid = get_storprofile_data(cc, iprofile, detailed=True)
|
||||
if profile_disk_invalid:
|
||||
print "WARNING: This storage profile, from a previous release, is " \
|
||||
"missing the persistent disk name in the disk config field. " \
|
||||
"This profile needs to be deleted and recreated."
|
||||
print("WARNING: This storage profile, from a previous release, is "
|
||||
"missing the persistent disk name in the disk config field. "
|
||||
"This profile needs to be deleted and recreated.")
|
||||
_print_storprofile_show(iprofile)
|
||||
|
||||
|
||||
|
@ -518,7 +518,7 @@ def do_storprofile_delete(cc, args):
|
|||
cc.iprofile.delete(iprofile.uuid)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Storage profile delete failed: %s' % n)
|
||||
print 'Deleted storage profile %s' % n
|
||||
print('Deleted storage profile %s' % n)
|
||||
|
||||
#
|
||||
# MEMORY PROFILES
|
||||
|
@ -642,7 +642,7 @@ def do_memprofile_delete(cc, args):
|
|||
cc.iprofile.delete(iprofile.uuid)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Memory profile delete failed: %s' % n)
|
||||
print 'Deleted memory profile %s' % n
|
||||
print('Deleted memory profile %s' % n)
|
||||
|
||||
|
||||
@utils.arg('profilefilename',
|
||||
|
@ -662,9 +662,9 @@ def do_profile_import(cc, args):
|
|||
if results:
|
||||
for result in results:
|
||||
if(result['result'] == 'Invalid'):
|
||||
print 'error: %s is not a valid profile file.' % (filename)
|
||||
print('error: %s is not a valid profile file.' % (filename))
|
||||
else:
|
||||
print result['msg']
|
||||
print(result['msg'])
|
||||
|
||||
if result['detail']:
|
||||
print ' %s' % (result['detail'])
|
||||
print(' %s' % (result['detail']))
|
||||
|
|
|
@ -206,5 +206,5 @@ def donot_host_sensor_delete(cc, args):
|
|||
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
|
||||
i = _find_sensor(cc, ihost, args.sensor_uuid)
|
||||
cc.isensor.delete(i.uuid)
|
||||
print 'Deleted sensor: host %s sensor %s' % (args.hostnameorid,
|
||||
args.sensor_uuid)
|
||||
print('Deleted sensor: host %s sensor %s' % (args.hostnameorid,
|
||||
args.sensor_uuid))
|
||||
|
|
|
@ -185,13 +185,13 @@ def do_host_sensorgroup_relearn(cc, args):
|
|||
|
||||
isensorgroups = cc.isensorgroup.relearn(ihost.uuid)
|
||||
|
||||
print ("%s sensor model and any related alarm assertions are being "
|
||||
"deleted." % (args.hostnameorid))
|
||||
print ("Any sensor suppression settings at the group or sensor levels "
|
||||
"will be lost.")
|
||||
print ("Will attempt to preserve customized group actions and monitor "
|
||||
"interval when the model is relearned on next audit interval.")
|
||||
print ("The learning process may take several minutes. Please stand-by.")
|
||||
print("%s sensor model and any related alarm assertions are being "
|
||||
"deleted." % (args.hostnameorid))
|
||||
print("Any sensor suppression settings at the group or sensor levels "
|
||||
"will be lost.")
|
||||
print("Will attempt to preserve customized group actions and monitor "
|
||||
"interval when the model is relearned on next audit interval.")
|
||||
print("The learning process may take several minutes. Please stand-by.")
|
||||
|
||||
|
||||
@utils.arg('hostnameorid',
|
||||
|
@ -238,5 +238,5 @@ def donot_host_sensorgroup_delete(cc, args):
|
|||
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
|
||||
i = _find_sensorgroup(cc, ihost, args.sensorgroup_uuid)
|
||||
cc.isensorgroup.delete(i.uuid)
|
||||
print ('Deleted sensorgroup: host %s sensorgroup %s' %
|
||||
(args.hostnameorid, args.sensorgroup_uuid))
|
||||
print('Deleted sensorgroup: host %s sensorgroup %s' %
|
||||
(args.hostnameorid, args.sensorgroup_uuid))
|
||||
|
|
|
@ -91,7 +91,7 @@ def do_service_delete(cc, args):
|
|||
cc.iservice.delete(c)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Service not found: %s' % c)
|
||||
print 'Deleted service %s' % c
|
||||
print('Deleted service %s' % c)
|
||||
|
||||
|
||||
@utils.arg('iservice',
|
||||
|
|
|
@ -80,7 +80,7 @@ def do_servicegroup_delete(cc, args):
|
|||
cc.iservicegroup.delete(c)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Service not found: %s' % c)
|
||||
print 'Deleted servicegroup %s' % c
|
||||
print('Deleted servicegroup %s' % c)
|
||||
|
||||
|
||||
@utils.arg('iservicegroup',
|
||||
|
|
|
@ -129,9 +129,9 @@ def do_modify(cc, args):
|
|||
|
||||
confirm = input(warning_message)
|
||||
if confirm != 'yes':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
print 'Please follow the admin guide to complete the reconfiguration.'
|
||||
print('Please follow the admin guide to complete the reconfiguration.')
|
||||
|
||||
field_list = ['name', 'system_mode', 'description', 'location', 'contact',
|
||||
'timezone', 'sdn_enabled', 'https_enabled', 'vswitch_type', 'security_feature']
|
||||
|
@ -158,5 +158,5 @@ def do_modify(cc, args):
|
|||
_print_isystem_show(isystem)
|
||||
|
||||
if print_https_warning:
|
||||
print "HTTPS enabled with a self-signed certificate.\nThis should be " \
|
||||
"changed to a CA-signed certificate with 'system certificate-install'. "
|
||||
print("HTTPS enabled with a self-signed certificate.\nThis should be "
|
||||
"changed to a CA-signed certificate with 'system certificate-install'. ")
|
||||
|
|
|
@ -81,4 +81,4 @@ def do_snmp_trapdest_delete(cc, args):
|
|||
cc.itrapdest.delete(c)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('IP not found: %s' % c)
|
||||
print 'Deleted ip %s' % c
|
||||
print('Deleted ip %s' % c)
|
||||
|
|
|
@ -75,7 +75,7 @@ def do_host_label_remove(cc, args):
|
|||
lbl = _find_host_label(cc, ihost, i)
|
||||
if lbl:
|
||||
cc.label.remove(lbl.uuid)
|
||||
print 'Deleted host label %s for host %s' % (i, ihost.hostname)
|
||||
print('Deleted host label %s for host %s' % (i, ihost.hostname))
|
||||
|
||||
|
||||
def _find_host_label(cc, host, label):
|
||||
|
|
|
@ -47,6 +47,6 @@ def do_license_install(cc, args):
|
|||
success = response.get('success')
|
||||
error = response.get('error')
|
||||
if success:
|
||||
print success + "\n"
|
||||
print(success + "\n")
|
||||
if error:
|
||||
print error + "\n"
|
||||
print(error + "\n")
|
||||
|
|
|
@ -53,7 +53,7 @@ def do_load_delete(cc, args):
|
|||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Delete load failed: load %s' % args.loadid)
|
||||
|
||||
print 'Deleted load: load %s' % args.loadid
|
||||
print('Deleted load: load %s' % args.loadid)
|
||||
|
||||
|
||||
@utils.arg('isopath',
|
||||
|
|
|
@ -76,4 +76,4 @@ def do_network_add(cc, args):
|
|||
def do_network_delete(cc, args):
|
||||
"""Delete a network"""
|
||||
cc.network.delete(args.network_uuid)
|
||||
print 'Deleted Network: %s' % args.network_uuid
|
||||
print('Deleted Network: %s' % args.network_uuid)
|
||||
|
|
|
@ -67,7 +67,7 @@ def do_ptp_modify(cc, args):
|
|||
if args.mechanism is not None:
|
||||
attributes.append('mechanism=%s' % args.mechanism)
|
||||
if len(attributes) == 0:
|
||||
print "No options provided."
|
||||
print("No options provided.")
|
||||
return
|
||||
|
||||
patch = utils.args_array_to_patch("replace", attributes)
|
||||
|
|
|
@ -82,7 +82,7 @@ def do_remotelogging_modify(cc, args):
|
|||
if len(attributes) > 0:
|
||||
attributes.append('action=apply')
|
||||
else:
|
||||
print "No options provided."
|
||||
print("No options provided.")
|
||||
return
|
||||
|
||||
patch = utils.args_array_to_patch("replace", attributes)
|
||||
|
|
|
@ -51,7 +51,7 @@ def do_host_route_list(cc, args):
|
|||
def do_host_route_delete(cc, args):
|
||||
"""Delete an IP route."""
|
||||
cc.route.delete(args.route_uuid)
|
||||
print 'Deleted Route: %s' % (args.route_uuid)
|
||||
print('Deleted Route: %s' % (args.route_uuid))
|
||||
|
||||
|
||||
@utils.arg('hostnameorid',
|
||||
|
|
|
@ -100,7 +100,7 @@ def do_sdn_controller_delete(cc, args):
|
|||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError("Failed to delete SDN controller entry: "
|
||||
"invalid uuid: %s" % args.uuid)
|
||||
print 'Deleted SDN controller: uuid %s' % args.uuid
|
||||
print('Deleted SDN controller: uuid %s' % args.uuid)
|
||||
|
||||
|
||||
@utils.arg('uuid',
|
||||
|
|
|
@ -61,7 +61,7 @@ def do_service_parameter_delete(cc, args):
|
|||
"""Delete a Service Parameter."""
|
||||
|
||||
cc.service_parameter.delete(args.uuid)
|
||||
print 'Deleted service parameter: %s' % args.uuid
|
||||
print('Deleted service parameter: %s' % args.uuid)
|
||||
|
||||
|
||||
def _find_service_parameter(cc, service, section, name):
|
||||
|
@ -132,7 +132,7 @@ def do_service_parameter_apply(cc, args):
|
|||
cc.service_parameter.apply(args.service)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Failed to apply service parameters')
|
||||
print 'Applying %s service parameters' % args.service
|
||||
print('Applying %s service parameters' % args.service)
|
||||
|
||||
|
||||
@utils.arg('service',
|
||||
|
|
|
@ -93,7 +93,7 @@ def donot_servicegroup_delete(cc, args):
|
|||
cc.smapiClient.iservicegroup.delete(c)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError('Service not found: %s' % c)
|
||||
print 'Deleted servicegroup %s' % c
|
||||
print('Deleted servicegroup %s' % c)
|
||||
|
||||
|
||||
@utils.arg('iservicegroup',
|
||||
|
|
|
@ -130,8 +130,8 @@ def backend_show(cc, backend_name_or_uuid, asdict=False):
|
|||
|
||||
|
||||
def _display_next_steps():
|
||||
print "\nSystem configuration has changed.\nPlease follow the " \
|
||||
"administrator guide to complete configuring the system.\n"
|
||||
print("\nSystem configuration has changed.\nPlease follow the "
|
||||
"administrator guide to complete configuring the system.\n")
|
||||
|
||||
|
||||
def backend_add(cc, backend, args):
|
||||
|
|
|
@ -145,4 +145,4 @@ def do_storage_backend_delete(cc, args):
|
|||
storage_backend_utils.backend_delete(
|
||||
cc, args.backend_name_or_uuid)
|
||||
else:
|
||||
print "Deleting a storage backend is not supported."
|
||||
print("Deleting a storage backend is not supported.")
|
||||
|
|
|
@ -28,7 +28,7 @@ def do_upgrade_show(cc, args):
|
|||
if upgrades:
|
||||
_print_upgrade_show(upgrades[0])
|
||||
else:
|
||||
print 'No upgrade in progress'
|
||||
print('No upgrade in progress')
|
||||
|
||||
|
||||
@utils.arg('-f', '--force',
|
||||
|
@ -131,12 +131,12 @@ def do_upgrade_abort(cc, args):
|
|||
|
||||
confirm = input(warning_message)
|
||||
if confirm != 'yes':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
elif abort_required:
|
||||
confirm = input("Type 'abort' to confirm: ")
|
||||
if confirm != 'abort':
|
||||
print "Operation cancelled."
|
||||
print("Operation cancelled.")
|
||||
return
|
||||
|
||||
data = dict()
|
||||
|
|
|
@ -54,11 +54,10 @@ commands =
|
|||
show-source = true
|
||||
exclude=.*,dist,*lib/python*,*egg,build
|
||||
max-complexity=25
|
||||
ignore = H102,H104,H105,H233,H238,H404,H405,E501,F841
|
||||
ignore = H102,H104,H105,H238,H404,H405,E501,F841
|
||||
#H102 Apache 2.0 license header not found
|
||||
#H104 File contains nothing but comments
|
||||
#H105 Don't use author tags
|
||||
#H233 Python 3.x incompatible use of print operator
|
||||
#H238 old style class declaration, use new style (inherit from `object`)
|
||||
#H404 multi line docstring should start without a leading new line
|
||||
#H405 multi line docstring summary not separated with an empty line
|
||||
|
|
|
@ -33,6 +33,7 @@ Commands (from conductors) are received via RPC calls.
|
|||
|
||||
"""
|
||||
|
||||
from __future__ import print_function
|
||||
import errno
|
||||
import fcntl
|
||||
import fileinput
|
||||
|
@ -1310,9 +1311,9 @@ class AgentManager(service.PeriodicService):
|
|||
shutil.copyfile(tsc.PLATFORM_CONF_FILE, temp_platform_conf_file)
|
||||
for line in fileinput.FileInput(temp_platform_conf_file, inplace=1):
|
||||
if line.startswith("INSTALL_UUID="):
|
||||
print "INSTALL_UUID=%s" % install_uuid
|
||||
print("INSTALL_UUID=%s" % install_uuid)
|
||||
else:
|
||||
print line,
|
||||
print(line, end=' ')
|
||||
fileinput.close()
|
||||
os.rename(temp_platform_conf_file, tsc.PLATFORM_CONF_FILE)
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ pci_inics = my_pci_inics.pci_inics_get()
|
|||
|
||||
# post these to database by host, pciaddr
|
||||
for i in pci_inics:
|
||||
print ("JKUNG pciaddr=%s, iclass=%s, vendor=%s, device=%s, rev=%s, svendor=%s, sdevice=%s" % (i.pciaddr, i.iclass, i.vendor, i.device, i.revision, i.svendor, i.sdevice))
|
||||
print("JKUNG pciaddr=%s, iclass=%s, vendor=%s, device=%s, rev=%s, svendor=%s, sdevice=%s" % (i.pciaddr, i.iclass, i.vendor, i.device, i.revision, i.svendor, i.sdevice))
|
||||
|
||||
# try:
|
||||
# rpc.db_post_by_host_and_mac()
|
||||
|
|
|
@ -166,19 +166,19 @@ def get_cluster_controller_services(host_names, print_to_screen=False,
|
|||
|
||||
for service in services.list:
|
||||
if print_to_screen:
|
||||
print " "
|
||||
print "servicename: %s" % service.name
|
||||
print "status : %s" % service.state
|
||||
print(" ")
|
||||
print("servicename: %s" % service.name)
|
||||
print("status : %s" % service.state)
|
||||
|
||||
instances_data = []
|
||||
|
||||
for instance in service.instances:
|
||||
if print_to_screen:
|
||||
print "\thostname: %s" % instance.host_name
|
||||
print "\tactivity: %s" % instance.activity
|
||||
print "\tstate : %s" % instance.state
|
||||
print "\treason : %s" % instance.reason
|
||||
print " "
|
||||
print("\thostname: %s" % instance.host_name)
|
||||
print("\tactivity: %s" % instance.activity)
|
||||
print("\tstate : %s" % instance.state)
|
||||
print("\treason : %s" % instance.reason)
|
||||
print(" ")
|
||||
|
||||
instances_data += ([{'hostname': instance.host_name,
|
||||
'activity': instance.activity,
|
||||
|
@ -190,7 +190,7 @@ def get_cluster_controller_services(host_names, print_to_screen=False,
|
|||
'instances': instances_data}])
|
||||
|
||||
if print_json_str:
|
||||
print (json.dumps(services_data))
|
||||
print(json.dumps(services_data))
|
||||
|
||||
return json.dumps(services_data)
|
||||
|
||||
|
@ -232,14 +232,14 @@ def get_cluster_controller_node_state(host_name, print_to_screen=False,
|
|||
state = "unknown"
|
||||
|
||||
if print_to_screen:
|
||||
print " "
|
||||
print "%s state is %s" % (host_name, state)
|
||||
print(" ")
|
||||
print("%s state is %s" % (host_name, state))
|
||||
|
||||
# Build Json Data
|
||||
node_data = ({'hostname': host_name, 'state': state})
|
||||
|
||||
if print_json_str:
|
||||
print (json.dumps(node_data))
|
||||
print(json.dumps(node_data))
|
||||
|
||||
return json.dumps(node_data)
|
||||
|
||||
|
|
|
@ -89,4 +89,4 @@ def main():
|
|||
CONF.action.repository,
|
||||
CONF.action.namespace)
|
||||
except Exception as e:
|
||||
print e
|
||||
print(e)
|
||||
|
|
|
@ -151,7 +151,7 @@ def _gpt_table_present(device_node):
|
|||
output, _, _ = _command(["parted", "-s", device_node, "print"],
|
||||
device_node=device_node)
|
||||
if not re.search('Partition Table: gpt', output):
|
||||
print "Format of disk node %s is not GPT, returning" % device_node
|
||||
print("Format of disk node %s is not GPT, returning" % device_node)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
@ -395,7 +395,7 @@ def _send_inventory_update(partition_update):
|
|||
sw_mismatch = os.environ.get('CONTROLLER_SW_VERSIONS_MISMATCH', None)
|
||||
hostname = socket.gethostname()
|
||||
if sw_mismatch and hostname == constants.CONTROLLER_1_HOSTNAME:
|
||||
print "Don't send information to N-1 sysinv conductor, return."
|
||||
print("Don't send information to N-1 sysinv conductor, return.")
|
||||
return
|
||||
|
||||
ctxt = context.get_admin_context()
|
||||
|
@ -411,14 +411,14 @@ def _send_inventory_update(partition_update):
|
|||
rpcapi.update_partition_information(ctxt, partition_update)
|
||||
break
|
||||
except Exception as ex:
|
||||
print "Exception trying to contact sysinv conductor: %s: %s " % \
|
||||
(type(ex).__name__, str(ex))
|
||||
print("Exception trying to contact sysinv conductor: %s: %s " %
|
||||
(type(ex).__name__, str(ex)))
|
||||
if num_of_try < max_tries and "Timeout" in type(ex).__name__:
|
||||
print "Could not contact sysinv conductor, try one more time.."
|
||||
print("Could not contact sysinv conductor, try one more time..")
|
||||
continue
|
||||
else:
|
||||
print "Quit trying to send extra info to the conductor, " \
|
||||
"sysinv agent will provide this info later..."
|
||||
print("Quit trying to send extra info to the conductor, "
|
||||
"sysinv agent will provide this info later...")
|
||||
|
||||
|
||||
def _wipe_partition(disk_node, start_in_sectors, size_in_sectors, sector_size):
|
||||
|
@ -472,7 +472,7 @@ def create_partitions(data, mode, pfile):
|
|||
_send_inventory_update(p)
|
||||
return
|
||||
|
||||
print data
|
||||
print(data)
|
||||
|
||||
json_body = json.loads(data)
|
||||
for p in json_body:
|
||||
|
@ -484,8 +484,8 @@ def create_partitions(data, mode, pfile):
|
|||
# Obtain parted device and parted disk for the given disk device
|
||||
# path.
|
||||
if _partition_exists(part_device_path):
|
||||
print "Partition %s already exists, returning." % \
|
||||
part_device_path
|
||||
print("Partition %s already exists, returning." %
|
||||
part_device_path)
|
||||
continue
|
||||
|
||||
# If we only allow to add and remove partition to/from the end,
|
||||
|
@ -493,7 +493,7 @@ def create_partitions(data, mode, pfile):
|
|||
# the beginning and the rest of the available disk, if any).
|
||||
free_spaces = _get_free_space(device_node=disk_device_path)
|
||||
if len(free_spaces) > 2:
|
||||
print ("Disk %s is fragmented. Partition creation aborted." %
|
||||
print("Disk %s is fragmented. Partition creation aborted." %
|
||||
disk_device_path)
|
||||
|
||||
free_space = free_spaces[-1]
|
||||
|
@ -501,7 +501,7 @@ def create_partitions(data, mode, pfile):
|
|||
number_of_partitions = _get_no_of_partitions(disk_device_path)
|
||||
# If this is the 1st partition, allocate an extra 1MiB.
|
||||
if number_of_partitions == 0:
|
||||
print "First partition, use an extra MiB"
|
||||
print("First partition, use an extra MiB")
|
||||
start_mib = 1
|
||||
else:
|
||||
# Free space in sectors.
|
||||
|
@ -787,8 +787,8 @@ def delete_partitions(data, mode, pfile):
|
|||
|
||||
try:
|
||||
# Delete the partition.
|
||||
print "Delete partition %s from %s" % (disk_device_path,
|
||||
part_number)
|
||||
print("Delete partition %s from %s" % (disk_device_path,
|
||||
part_number))
|
||||
_delete_partition(disk_device_path, part_number)
|
||||
disk_available_mib = _get_available_space(disk_device_path)
|
||||
response.update({'available_mib': disk_available_mib,
|
||||
|
@ -836,8 +836,8 @@ def check_partitions(data, mode, pfile):
|
|||
lambda p, q: p.get('start_mib') - q.get('start_mib')):
|
||||
disk = _get_disk_device_path(p.get('device_path'))
|
||||
if _partition_exists(p.get('device_path')):
|
||||
print 'Partition {} already exists on disk {}'.format(
|
||||
p.get('device_path'), disk)
|
||||
print('Partition {} already exists on disk {}'.format(
|
||||
p.get('device_path'), disk))
|
||||
continue
|
||||
partition_number = _get_partition_number(p.get('device_path'))
|
||||
_create_partition(disk, partition_number, p.get('start_mib'),
|
||||
|
@ -881,7 +881,7 @@ def main(argv):
|
|||
"pfile": CONF.action.pfile,
|
||||
"data": CONF.action.data})
|
||||
LOG.info(msg)
|
||||
print msg
|
||||
print(msg)
|
||||
run(CONF.action.func, CONF.action.data,
|
||||
CONF.action.mode, CONF.action.pfile)
|
||||
else:
|
||||
|
|
|
@ -98,7 +98,7 @@ def generate(srcfiles):
|
|||
for group, opts in opts_by_group.items():
|
||||
print_group_opts(group, opts)
|
||||
|
||||
print "# Total option count: %d" % OPTION_COUNT
|
||||
print("# Total option count: %d" % OPTION_COUNT)
|
||||
|
||||
|
||||
def _import_module(mod_str):
|
||||
|
@ -162,18 +162,18 @@ def _list_opts(obj):
|
|||
|
||||
|
||||
def print_group_opts(group, opts_by_module):
|
||||
print "[%s]" % group
|
||||
print
|
||||
print("[%s]" % group)
|
||||
print('')
|
||||
global OPTION_COUNT
|
||||
for mod, opts in opts_by_module:
|
||||
OPTION_COUNT += len(opts)
|
||||
print '#'
|
||||
print '# Options defined in %s' % mod
|
||||
print '#'
|
||||
print
|
||||
print('#')
|
||||
print('# Options defined in %s' % mod)
|
||||
print('#')
|
||||
print('')
|
||||
for opt in opts:
|
||||
_print_opt(opt)
|
||||
print
|
||||
print('')
|
||||
|
||||
|
||||
def _get_my_ip():
|
||||
|
@ -213,33 +213,33 @@ def _print_opt(opt):
|
|||
sys.stderr.write("%s\n" % str(err))
|
||||
sys.exit(1)
|
||||
opt_help += ' (' + OPT_TYPES[opt_type] + ')'
|
||||
print '#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH))
|
||||
print('#', "\n# ".join(textwrap.wrap(opt_help, WORDWRAP_WIDTH)))
|
||||
try:
|
||||
if opt_default is None:
|
||||
print '#%s=<None>' % opt_name
|
||||
print('#%s=<None>' % opt_name)
|
||||
elif opt_type == STROPT:
|
||||
assert(isinstance(opt_default, six.string_types))
|
||||
print '#%s=%s' % (opt_name, _sanitize_default(opt_default))
|
||||
print('#%s=%s' % (opt_name, _sanitize_default(opt_default)))
|
||||
elif opt_type == BOOLOPT:
|
||||
assert(isinstance(opt_default, bool))
|
||||
print '#%s=%s' % (opt_name, str(opt_default).lower())
|
||||
print('#%s=%s' % (opt_name, str(opt_default).lower()))
|
||||
elif opt_type == INTOPT:
|
||||
assert(isinstance(opt_default, int) and
|
||||
not isinstance(opt_default, bool))
|
||||
print '#%s=%s' % (opt_name, opt_default)
|
||||
print('#%s=%s' % (opt_name, opt_default))
|
||||
elif opt_type == FLOATOPT:
|
||||
assert(isinstance(opt_default, float))
|
||||
print '#%s=%s' % (opt_name, opt_default)
|
||||
print('#%s=%s' % (opt_name, opt_default))
|
||||
elif opt_type == LISTOPT:
|
||||
assert(isinstance(opt_default, list))
|
||||
print '#%s=%s' % (opt_name, ','.join(opt_default))
|
||||
print('#%s=%s' % (opt_name, ','.join(opt_default)))
|
||||
elif opt_type == MULTISTROPT:
|
||||
assert(isinstance(opt_default, list))
|
||||
if not opt_default:
|
||||
opt_default = ['']
|
||||
for default in opt_default:
|
||||
print '#%s=%s' % (opt_name, default)
|
||||
print
|
||||
print('#%s=%s' % (opt_name, default))
|
||||
print('')
|
||||
except Exception:
|
||||
sys.stderr.write('Error in option "%s"\n' % opt_name)
|
||||
sys.exit(1)
|
||||
|
@ -247,7 +247,7 @@ def _print_opt(opt):
|
|||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print "usage: %s [srcfile]...\n" % sys.argv[0]
|
||||
print("usage: %s [srcfile]...\n" % sys.argv[0])
|
||||
sys.exit(0)
|
||||
generate(sys.argv[1:])
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ commands =
|
|||
# H501: Do not use self.__dict__ for string formatting
|
||||
[flake8]
|
||||
ignore = E126,E127,E128,E402,E501,
|
||||
H101,H102,H104,H105,H231,H232,H233,H234,H235,H236,H237,H238,
|
||||
H101,H102,H104,H105,H231,H232,H234,H235,H236,H237,H238,
|
||||
H301,H306,H401,H403,H404,H405,H501
|
||||
builtins = _
|
||||
|
||||
|
|
Loading…
Reference in New Issue