Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
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]()