def test_construct_metaconfig_with_single_section(self): metaconfig_manager = MetaConfigManager(TEST_ZK_HOSTS, TEST_AWS_KEYFILE, TEST_S3_BUCKET) download_command = 'zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset' serverset_zk_path = "/discovery/testservice/prod" name = "discovery.testservice.prod" generated_metaconfig_content = metaconfig_manager.construct_metaconfig_with_single_section( name, serverset_zk_path, download_command, is_serverset=True) expected_metaconfig_content = simplejson.dumps([{ "config_section_name": "discovery.testservice.prod", "zk_path": "/discovery/testservice/prod", "max_wait_in_secs": 0, "command": "zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset", "type": "serverset" }]) self.assertEqual(expected_metaconfig_content, generated_metaconfig_content) download_command = 'zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist --aws-key-file /etc/configs_readonly.conf -m config -p /config/manageddata/spam/blacklist' config_zk_path = "/config/manageddata/spam/blacklist" name = "config.manageddata.spam.blacklist" generated_metaconfig_content = metaconfig_manager.construct_metaconfig_with_single_section( name, config_zk_path, download_command, is_serverset=False) expected_metaconfig_content = simplejson.dumps([{ "config_section_name": "config.manageddata.spam.blacklist", "zk_path": "/config/manageddata/spam/blacklist", "max_wait_in_secs": 0, "command": "zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist --aws-key-file /etc/configs_readonly.conf -m config -p /config/manageddata/spam/blacklist", "type": "config" }]) self.assertEqual(expected_metaconfig_content, generated_metaconfig_content)
def test_construct_download_command(self): metaconfig_manager = MetaConfigManager( TEST_ZK_HOSTS, TEST_AWS_KEYFILE, TEST_S3_BUCKET) serverset_zk_path = "/discovery/testservice/prod" generated_download_command = metaconfig_manager.construct_zk_download_data_command_for_serverset(serverset_zk_path) expected_download_command = "zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset" self.assertEqual(expected_download_command, generated_download_command) config_zk_path = "/config/manageddata/spam/blacklist" generated_download_command = metaconfig_manager.construct_zk_download_data_command_for_config(config_zk_path) expected_download_command = 'zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist -m config -p /config/manageddata/spam/blacklist' self.assertEqual(expected_download_command, generated_download_command)
def test_construct_download_command(self): metaconfig_manager = MetaConfigManager(TEST_ZK_HOSTS, TEST_AWS_KEYFILE, TEST_S3_BUCKET) serverset_zk_path = "/discovery/testservice/prod" generated_download_command = metaconfig_manager.construct_zk_download_data_command_for_serverset( serverset_zk_path) expected_download_command = "zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset" self.assertEqual(expected_download_command, generated_download_command) config_zk_path = "/config/manageddata/spam/blacklist" generated_download_command = metaconfig_manager.construct_zk_download_data_command_for_config( config_zk_path) expected_download_command = 'zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist -m config -p /config/manageddata/spam/blacklist' self.assertEqual(expected_download_command, generated_download_command)
def test_construct_metaconfig_with_single_section(self): metaconfig_manager = MetaConfigManager( TEST_ZK_HOSTS, TEST_AWS_KEYFILE, TEST_S3_BUCKET) download_command = 'zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset' serverset_zk_path = "/discovery/testservice/prod" name = "discovery.testservice.prod" generated_metaconfig_content = metaconfig_manager.construct_metaconfig_with_single_section( name, serverset_zk_path, download_command, is_serverset=True ) expected_metaconfig_content = simplejson.dumps( [ { "config_section_name": "discovery.testservice.prod", "zk_path": "/discovery/testservice/prod", "max_wait_in_secs": 0, "command": "zk_download_data.py -f /var/serverset/discovery.testservice.prod -p /discovery/testservice/prod -m serverset", "type": "serverset" } ] ) self.assertEqual(expected_metaconfig_content, generated_metaconfig_content) download_command = 'zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist --aws-key-file /etc/configs_readonly.conf -m config -p /config/manageddata/spam/blacklist' config_zk_path = "/config/manageddata/spam/blacklist" name = "config.manageddata.spam.blacklist" generated_metaconfig_content = metaconfig_manager.construct_metaconfig_with_single_section( name, config_zk_path, download_command, is_serverset=False ) expected_metaconfig_content = simplejson.dumps( [ { "config_section_name": "config.manageddata.spam.blacklist", "zk_path": "/config/manageddata/spam/blacklist", "max_wait_in_secs": 0, "command": "zk_download_data.py -f /var/config/config.manageddata.spam.blacklist --from-s3 /data/config/manageddata/spam/blacklist --aws-key-file /etc/configs_readonly.conf -m config -p /config/manageddata/spam/blacklist", "type": "config" } ] ) self.assertEqual(expected_metaconfig_content, generated_metaconfig_content)
def main(): parser = argparse.ArgumentParser(description="MetaConfig Management Shell") parser.add_argument( "-z", "--zk-hosts-file-path", dest="zk_hosts_file", metavar="ZKHOSTS", required=True, help="The path of file which have a list of Zookeeper endpoints " "(host:port) which keeps the metaconfig as well as " "the config/serversets") parser.add_argument( "-a", "--aws-keyfile", dest="aws_keyfile", metavar="AWSKEY", required=True, help="The path of the file storing AWS access and secret keys", ) parser.add_argument("-b", "--s3-bucket", dest="s3_bucket", metavar="BUCKET", required=True, help="The S3 bucket storing metaconfigs / configs") parser.add_argument("-e", "--aws-s3-endpoint", dest="s3_endpoint", metavar="ENDPOINT", default="s3.amazonaws.com", help="The S3 endpoint storing metaconfig / configs") args = parser.parse_args() zk_hosts = [] with open(args.zk_hosts_file, "r") as zk_hosts_file: for line in zk_hosts_file: if line: zk_hosts.append(line.strip()) global metaconfig_manager metaconfig_manager = MetaConfigManager(zk_hosts, args.aws_keyfile, args.s3_bucket, s3_endpoint=args.s3_endpoint) print "What do you want to do with Metaconfigs / Dependencies?" for instruction in instructions_set: print instruction[0] user_selection = int(raw_input("Enter action number: ")) assert user_selection in range(1, len(instructions_set) + 1) instructions_set[user_selection - 1][1]()