def testRapiUsers(self):
self.assertFalse(os.path.exists(self.rapi_users_path))
self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+ self.assertFalse(os.path.exists(os.path.dirname(self.rapi_users_path)))
utils.WriteFile(self.rapi_users_path_pre24, data="some user\n")
self._TestSimpleUpgrade(constants.BuildVersion(2, 3, 0), False)
+ self.assertTrue(os.path.isdir(os.path.dirname(self.rapi_users_path)))
self.assert_(os.path.islink(self.rapi_users_path_pre24))
self.assert_(os.path.isfile(self.rapi_users_path))
+ self.assertEqual(os.readlink(self.rapi_users_path_pre24),
+ self.rapi_users_path)
for path in [self.rapi_users_path, self.rapi_users_path_pre24]:
self.assertEqual(utils.ReadFile(path), "some user\n")
self.assert_(os.path.islink(self.rapi_users_path_pre24))
self.assert_(os.path.isfile(self.rapi_users_path))
+ self.assertEqual(os.readlink(self.rapi_users_path_pre24),
+ self.rapi_users_path)
for path in [self.rapi_users_path, self.rapi_users_path_pre24]:
self.assertEqual(utils.ReadFile(path), "other user\n")
self.assertFalse(os.path.exists(self.rapi_users_path))
self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+ os.mkdir(os.path.dirname(self.rapi_users_path))
os.symlink(self.rapi_users_path, self.rapi_users_path_pre24)
- utils.WriteFile(self.rapi_users_path_pre24, data="hello world\n")
+ utils.WriteFile(self.rapi_users_path, data="hello world\n")
self._TestSimpleUpgrade(constants.BuildVersion(2, 2, 0), False)
- self.assert_(os.path.isfile(self.rapi_users_path))
+ self.assert_(os.path.isfile(self.rapi_users_path) and
+ not os.path.islink(self.rapi_users_path))
self.assert_(os.path.islink(self.rapi_users_path_pre24))
+ self.assertEqual(os.readlink(self.rapi_users_path_pre24),
+ self.rapi_users_path)
+ for path in [self.rapi_users_path, self.rapi_users_path_pre24]:
+ self.assertEqual(utils.ReadFile(path), "hello world\n")
+
+ def testRapiUsersExistingTarget(self):
+ self.assertFalse(os.path.exists(self.rapi_users_path))
+ self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+
+ os.mkdir(os.path.dirname(self.rapi_users_path))
+ utils.WriteFile(self.rapi_users_path, data="other user\n")
+ utils.WriteFile(self.rapi_users_path_pre24, data="hello world\n")
+
+ self.assertRaises(Exception, self._TestSimpleUpgrade,
+ constants.BuildVersion(2, 2, 0), False)
+
+ for path in [self.rapi_users_path, self.rapi_users_path_pre24]:
+ self.assert_(os.path.isfile(path) and not os.path.islink(path))
+ self.assertEqual(utils.ReadFile(self.rapi_users_path), "other user\n")
+ self.assertEqual(utils.ReadFile(self.rapi_users_path_pre24),
+ "hello world\n")
+
+ def testRapiUsersDryRun(self):
+ self.assertFalse(os.path.exists(self.rapi_users_path))
+ self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+
+ utils.WriteFile(self.rapi_users_path_pre24, data="some user\n")
+ self._TestSimpleUpgrade(constants.BuildVersion(2, 3, 0), True)
+
+ self.assertFalse(os.path.isdir(os.path.dirname(self.rapi_users_path)))
+ self.assertTrue(os.path.isfile(self.rapi_users_path_pre24) and
+ not os.path.islink(self.rapi_users_path_pre24))
+ self.assertFalse(os.path.exists(self.rapi_users_path))
+
+ def testRapiUsers24AndAboveDryRun(self):
+ self.assertFalse(os.path.exists(self.rapi_users_path))
+ self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+
+ os.mkdir(os.path.dirname(self.rapi_users_path))
+ utils.WriteFile(self.rapi_users_path, data="other user\n")
+ self._TestSimpleUpgrade(constants.BuildVersion(2, 3, 0), True)
+
+ self.assertTrue(os.path.isfile(self.rapi_users_path) and
+ not os.path.islink(self.rapi_users_path))
+ self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+ self.assertEqual(utils.ReadFile(self.rapi_users_path), "other user\n")
+
+ def testRapiUsersExistingSymlinkDryRun(self):
+ self.assertFalse(os.path.exists(self.rapi_users_path))
+ self.assertFalse(os.path.exists(self.rapi_users_path_pre24))
+
+ os.mkdir(os.path.dirname(self.rapi_users_path))
+ os.symlink(self.rapi_users_path, self.rapi_users_path_pre24)
+ utils.WriteFile(self.rapi_users_path, data="hello world\n")
+
+ self._TestSimpleUpgrade(constants.BuildVersion(2, 2, 0), True)
+
+ self.assertTrue(os.path.islink(self.rapi_users_path_pre24))
+ self.assertTrue(os.path.isfile(self.rapi_users_path) and
+ not os.path.islink(self.rapi_users_path))
+ self.assertEqual(os.readlink(self.rapi_users_path_pre24),
+ self.rapi_users_path)
for path in [self.rapi_users_path, self.rapi_users_path_pre24]:
self.assertEqual(utils.ReadFile(path), "hello world\n")
raise Error("Configuration version %d.%d.%d not supported by this tool" %
(config_major, config_minor, config_revision))
- if os.path.isfile(options.RAPI_USERS_FILE_PRE24):
+ if (os.path.isfile(options.RAPI_USERS_FILE_PRE24) and
+ not os.path.islink(options.RAPI_USERS_FILE_PRE24)):
+ if os.path.exists(options.RAPI_USERS_FILE):
+ raise Error("Found pre-2.4 RAPI users file at %s, but another file"
+ " already exists at %s" %
+ (options.RAPI_USERS_FILE_PRE24, options.RAPI_USERS_FILE))
logging.info("Found pre-2.4 RAPI users file at %s, renaming to %s",
options.RAPI_USERS_FILE_PRE24, options.RAPI_USERS_FILE)
- utils.RenameFile(options.RAPI_USERS_FILE_PRE24, options.RAPI_USERS_FILE,
- mkdir=True, mkdir_mode=0750)
+ if not options.dry_run:
+ utils.RenameFile(options.RAPI_USERS_FILE_PRE24, options.RAPI_USERS_FILE,
+ mkdir=True, mkdir_mode=0750)
# Create a symlink for RAPI users file
- if not os.path.islink(options.RAPI_USERS_FILE_PRE24):
+ if (not (os.path.islink(options.RAPI_USERS_FILE_PRE24) or
+ os.path.isfile(options.RAPI_USERS_FILE_PRE24)) and
+ os.path.isfile(options.RAPI_USERS_FILE)):
logging.info("Creating symlink from %s to %s",
options.RAPI_USERS_FILE_PRE24, options.RAPI_USERS_FILE)
- os.symlink(options.RAPI_USERS_FILE, options.RAPI_USERS_FILE_PRE24)
+ if not options.dry_run:
+ os.symlink(options.RAPI_USERS_FILE, options.RAPI_USERS_FILE_PRE24)
try:
logging.info("Writing configuration file to %s", options.CONFIG_DATA_PATH)