示例#1
0
    def test_local_agent_from_package(self, _):
        agent_name = utils.internal.generate_agent_name()
        agent_queue = '{0}-queue'.format(agent_name)

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-package/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')

        inputs = {
            'resource_base': self.resource_base,
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'file_server_port': self.fs.port,
            'ssl_cert_path': self._rest_cert_path
        }

        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)
        agent_dict = self.get_agent_dict(env)
        agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
示例#2
0
    def test_install_new_agent(self):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {'name': agent_name, 'ssl_cert_path': self._rest_cert_path}

        # Necessary to patch this method, because by default port 80 is used
        def get_script_url(agent_self):
            return urljoin(os.environ[constants.MANAGER_FILE_SERVER_URL_KEY],
                           'cloudify_agent', agent_self._script_filename)

        with self._manager_env():
            env = local.init_env(name=self._testMethodName,
                                 blueprint_path=blueprint_path,
                                 inputs=inputs)
            with patch(
                    'cloudify_agent.operations.'
                    'AgentFilesGenerator._get_script_url', get_script_url):
                env.execute('install', task_retries=0)
            self.assert_daemon_alive(name=agent_name)
            agent_dict = self.get_agent_dict(env, 'new_agent_host')
            agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])
            new_agent_name = agent_dict['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(name=new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
示例#3
0
    def test_install_new_agent(self):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {'name': agent_name, 'ssl_cert_path': self._rest_cert_path}

        # Necessary to patch this method, because by default port 80 is used
        def http_rest_host():
            return os.environ[constants.MANAGER_FILE_SERVER_URL_KEY]

        # Necessary to patch, because by default https will be used
        def file_server_url(*args, **kwargs):
            return '{0}/resources'.format(http_rest_host())

        with self._manager_env():
            with patch('cloudify_agent.api.utils.get_manager_file_server_url',
                       file_server_url):
                env = local.init_env(name=self._testMethodName,
                                     blueprint_path=blueprint_path,
                                     inputs=inputs)
                with patch('cloudify_agent.operations._http_rest_host',
                           http_rest_host):
                    env.execute('install', task_retries=0)
            self.assert_daemon_alive(name=agent_name)
            agent_dict = self.get_agent_dict(env, 'new_agent_host')
            agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])
            new_agent_name = agent_dict['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(name=new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
示例#4
0
def create_plugin_tar(plugin_dir_name, target_directory):

    """
    Create a tar file from the plugin.

    :param plugin_dir_name: the plugin directory name, relative to the
    resources package.
    :type plugin_dir_name: str
    :param target_directory: the directory to create the tar in
    :type target_directory: str

    :return: the name of the create tar, note that this is will just return
    the base name, not the full path to the tar.
    :rtype: str
    """

    plugin_source_path = resources.get_resource(os.path.join(
        'plugins', plugin_dir_name))

    plugin_tar_file_name = '{0}.tar'.format(plugin_dir_name)
    target_tar_file_path = os.path.join(target_directory,
                                        plugin_tar_file_name)

    plugin_tar_file = tarfile.TarFile(target_tar_file_path, 'w')
    plugin_tar_file.add(plugin_source_path, plugin_dir_name)
    plugin_tar_file.close()
    return plugin_tar_file_name
示例#5
0
def create_plugin_wagon(plugin_dir_name,
                        target_directory,
                        requirements=False,
                        basedir=None):

    """
    Create a wagon from a plugin.

    :param plugin_dir_name: the plugin directory name, relative to the
    resources package.
    :type plugin_dir_name: str
    :param target_directory: the directory to create the wagon in
    :type target_directory: str
    :param requirements: optional requirements for wagon
    :type requirements: str

    :return: path to created wagon`
    :rtype: str
    """
    if basedir:
        plugin_source_path = os.path.join(basedir, plugin_dir_name)
    else:
        plugin_source_path = resources.get_resource(os.path.join(
            'plugins', plugin_dir_name))
    return wagon.create(
        plugin_source_path,
        requirement_files=requirements,
        archive_destination_dir=target_directory
    )
示例#6
0
    def test_local_agent_from_package_long_name(self, _):
        """Agent still works with a filepath longer than 128 bytes (package)

        Paths longer than 128 bytes break shebangs on linux.
        """
        agent_name = 'agent-' + ''.join(uuid.uuid4().hex for i in range(4))
        agent_queue = '{0}-queue'.format(agent_name)

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-package/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')

        inputs = {
            'resource_base': self.resource_base,
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'file_server_port': self.fs.port,
            'ssl_cert_path': self._rest_cert_path
        }

        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)
        agent_dict = self.get_agent_dict(env)
        agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
    def test_install_new_agent(self):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {
            'name': agent_name,
            'package_url': agent_package.get_package_url()
        }
        with self._manager_env():
            env = local.init_env(name=self._testMethodName,
                                 blueprint_path=blueprint_path,
                                 inputs=inputs)
            env.execute('install', task_retries=0)
            self.assert_daemon_alive(name=agent_name)
            node_instances = env.storage.get_node_instances()
            new_agent_host = [n for n in node_instances
                              if n['name'] == 'new_agent_host'][0]
            new_agent_name = new_agent_host['runtime_properties'][
                'cloudify_agent']['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(name=new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
    def test_local_agent_from_package(self, _):
        agent_name = utils.internal.generate_agent_name()
        agent_queue = '{0}-queue'.format(agent_name)

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-package/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')

        inputs = {
            'resource_base': self.resource_base,
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'file_server_port': self.fs.port
        }

        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
示例#9
0
def create_plugin_wagon(plugin_dir_name,
                        target_directory,
                        requirements=False,
                        basedir=None):
    """
    Create a wagon from a plugin.

    :param plugin_dir_name: the plugin directory name, relative to the
    resources package.
    :type plugin_dir_name: str
    :param target_directory: the directory to create the wagon in
    :type target_directory: str
    :param requirements: optional requirements for wagon
    :type requirements: str

    :return: path to created wagon`
    :rtype: str
    """
    if basedir:
        plugin_source_path = os.path.join(basedir, plugin_dir_name)
    else:
        plugin_source_path = resources.get_resource(
            os.path.join('plugins', plugin_dir_name))
    w = wagon.Wagon(plugin_source_path)
    return w.create(with_requirements=requirements,
                    archive_destination_dir=target_directory)
示例#10
0
    def test_conf_env_variables(self):
        daemon = self.create_daemon()
        daemon.create()
        daemon.configure()
        self.installer.install(
            os.path.join(resources.get_resource('plugins'),
                         'mock-plugin'))
        daemon.register('mock-plugin')
        daemon.start()

        expected = {
            constants.MANAGER_IP_KEY: str(daemon.manager_ip),
            constants.MANAGER_REST_PORT_KEY: str(daemon.manager_port),
            constants.MANAGER_FILE_SERVER_URL_KEY:
                'http://{0}:53229'.format(daemon.manager_ip),
            constants.MANAGER_FILE_SERVER_BLUEPRINTS_ROOT_URL_KEY:
                'http://{0}:53229/blueprints'.format(daemon.manager_ip),
            constants.CELERY_BROKER_URL_KEY: daemon.broker_url,
            utils.internal.CLOUDIFY_DAEMON_STORAGE_DIRECTORY_KEY:
                utils.internal.get_storage_directory(),
            utils.internal.CLOUDIFY_DAEMON_NAME_KEY: daemon.name,
            utils.internal.CLOUDIFY_DAEMON_USER_KEY: daemon.user
        }

        def _check_env_var(var, expected_value):
            _value = self.celery.send_task(
                name='mock_plugin.tasks.get_env_variable',
                queue=daemon.queue,
                args=[var]).get(timeout=5)
            self.assertEqual(_value, expected_value)

        for key, value in expected.iteritems():
            _check_env_var(key, value)
    def test_local_agent_from_source_long_name(self, _):
        """Agent still works with a filepath longer than 128 bytes

        This test won't pass on windows because some files within the
        virtualenv exceed 256 bytes, and windows doesn't support paths
        that long.
        """
        agent_name = 'agent-' + ''.join(uuid.uuid4().hex for i in range(4))
        agent_queue = '{0}-queue'.format(agent_name)

        inputs = {
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue
        }

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-source/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
    def test_local_agent_from_package_long_name(self, _):
        """Agent still works with a filepath longer than 128 bytes

        Paths longer than 128 bytes break shebangs on linux.
        """
        agent_name = 'agent-' + ''.join(uuid.uuid4().hex for i in range(4))
        agent_queue = '{0}-queue'.format(agent_name)

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-package/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')

        inputs = {
            'resource_base': self.resource_base,
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'file_server_port': self.fs.port
        }

        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
示例#13
0
def create_plugin_tar(plugin_dir_name, target_directory):
    """
    Create a tar file from the plugin.

    :param plugin_dir_name: the plugin directory name, relative to the
    resources package.
    :type plugin_dir_name: str
    :param target_directory: the directory to create the tar in
    :type target_directory: str

    :return: the name of the create tar, note that this is will just return
    the base name, not the full path to the tar.
    :rtype: str
    """

    plugin_source_path = resources.get_resource(
        os.path.join('plugins', plugin_dir_name))

    plugin_tar_file_name = '{0}.tar'.format(plugin_dir_name)
    target_tar_file_path = os.path.join(target_directory, plugin_tar_file_name)

    plugin_tar_file = tarfile.TarFile(target_tar_file_path, 'w')
    plugin_tar_file.add(plugin_source_path, plugin_dir_name)
    plugin_tar_file.close()
    return plugin_tar_file_name
    def _test_local_agent_from_package(self, agent_name, *_):

        agent_queue = '{0}-queue'.format(agent_name)

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-package/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')

        inputs = {
            'resource_base': self.resource_base,
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'file_server_port': self.fs.port,
            'ssl_cert_path': self._rest_cert_path
        }

        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        agent_dict = self.get_agent_dict(env)
        agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(agent_queue)
示例#15
0
    def test_install_new_agent(self):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {
            'name': agent_name,
            'package_url': agent_package.get_package_url()
        }
        with self._manager_env():
            env = local.init_env(name=self._testMethodName,
                                 blueprint_path=blueprint_path,
                                 inputs=inputs)
            env.execute('install', task_retries=0)
            self.assert_daemon_alive(name=agent_name)
            node_instances = env.storage.get_node_instances()
            new_agent_host = [
                n for n in node_instances if n['name'] == 'new_agent_host'
            ][0]
            new_agent_name = new_agent_host['runtime_properties'][
                'cloudify_agent']['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(name=new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
示例#16
0
    def test_local_agent_from_source_long_name(self, _):
        """Agent still works with a filepath longer than 128 bytes (source)

        This test won't pass on windows because some files within the
        virtualenv exceed 256 bytes, and windows doesn't support paths
        that long.
        """
        agent_name = 'agent-' + ''.join(uuid.uuid4().hex for i in range(4))
        agent_queue = '{0}-queue'.format(agent_name)

        inputs = {
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue,
            'ssl_cert_path': self._rest_cert_path
        }

        blueprint_path = resources.get_resource(
            'blueprints/agent-from-source/local-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)
        agent_dict = self.get_agent_dict(env)
        agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
def _test_install_agent(blueprint, create_mock, config_mock, start_mock, *_):
    blueprint_path = get_resource(
        'blueprints/install-agent/{0}'.format(blueprint))
    env = local.init_env(blueprint_path)
    env.execute('install')

    create_mock.assert_has_any_calls()
    config_mock.assert_has_any_calls()
    start_mock.assert_has_any_calls()
示例#18
0
def create_windows_installer():
    runner = LocalCommandRunner()
    wheelhouse = get_resource('winpackage/source/wheels')

    pip_cmd = 'pip wheel --wheel-dir {wheel_dir} --requirement {req_file}'.\
        format(wheel_dir=wheelhouse, req_file=config['requirements_file'])

    ctx.logger.info('Building wheels into: {0}'.format(wheelhouse))
    runner.run(pip_cmd)

    pip_cmd = 'pip wheel --find-links {wheel_dir} --wheel-dir {wheel_dir} ' \
              '{repo_url}'.format(wheel_dir=wheelhouse,
                                  repo_url=config['cloudify_agent_module'])
    runner.run(pip_cmd)

    iscc_cmd = 'C:\\Program Files (x86)\\Inno Setup 5\\iscc.exe {0}'\
        .format(get_resource(os.path.join('winpackage', 'create.iss')))
    os.environ['VERSION'] = '0'
    os.environ['iscc_output'] = os.getcwd()
    runner.run(iscc_cmd)
示例#19
0
def create_windows_installer(config, logger):
    runner = LocalCommandRunner()
    wheelhouse = resources.get_resource('winpackage/source/wheels')

    pip_cmd = 'pip wheel --wheel-dir {wheel_dir} --requirement {req_file}'.\
        format(wheel_dir=wheelhouse, req_file=config['requirements_file'])

    logger.info('Building wheels into: {0}'.format(wheelhouse))
    runner.run(pip_cmd)

    pip_cmd = 'pip wheel --find-links {wheel_dir} --wheel-dir {wheel_dir} ' \
              '{repo_url}'.format(wheel_dir=wheelhouse,
                                  repo_url=config['cloudify_agent_module'])
    runner.run(pip_cmd)

    iscc_cmd = 'C:\\Program Files (x86)\\Inno Setup 5\\iscc.exe {0}'\
        .format(resources.get_resource(
            os.path.join('winpackage', 'create.iss')))
    os.environ['VERSION'] = '0'
    os.environ['iscc_output'] = os.getcwd()
    runner.run(iscc_cmd)
示例#20
0
def test_extract_package_to_dir(test_plugins, file_server):
    # create a plugin tar file and put it in the file server
    plugin_dir_name = 'mock-plugin-with-requirements'
    plugin_tar_name = test_utils.create_plugin_tar(plugin_dir_name,
                                                   file_server.root_path)

    plugin_source_path = resources.get_resource(
        os.path.join('plugins', plugin_dir_name))
    plugin_tar_url = '{0}/{1}'.format(file_server.url, plugin_tar_name)

    extracted_plugin_path = installer.extract_package_to_dir(plugin_tar_url)
    assert test_utils.are_dir_trees_equal(plugin_source_path,
                                          extracted_plugin_path)
    def _test_install_agent(self,
                            blueprint,
                            create_mock,
                            config_mock,
                            start_mock, *_):
        blueprint_path = get_resource(
            'blueprints/install-agent/{0}'.format(blueprint)
        )
        env = local.init_env(blueprint_path)
        env.execute('install')

        create_mock.assert_has_any_calls()
        config_mock.assert_has_any_calls()
        start_mock.assert_has_any_calls()
示例#22
0
 def test_start_with_error(self):
     daemon = self.create_daemon()
     daemon.create()
     daemon.configure()
     self.installer.install(
         os.path.join(resources.get_resource('plugins'),
                      'mock-plugin-error'))
     daemon.register('mock-plugin-error')
     try:
         daemon.start()
         self.fail('Expected start operation to fail '
                   'due to bad import')
     except exceptions.DaemonError as e:
         self.assertIn('cannot import name non_existent', str(e))
示例#23
0
 def test_register(self):
     daemon = self.create_daemon()
     daemon.create()
     daemon.configure()
     self.installer.install(
         os.path.join(resources.get_resource('plugins'),
                      'mock-plugin'))
     daemon.register('mock-plugin')
     daemon.start()
     self.assert_registered_tasks(
         daemon.name,
         additional_tasks=set(['mock_plugin.tasks.run',
                               'mock_plugin.tasks.get_env_variable'])
     )
示例#24
0
    def test_extract_package_to_dir(self):

        # create a plugin tar file and put it in the file server
        plugin_dir_name = 'mock-plugin-with-requirements'
        plugin_tar_name = test_utils.create_plugin_tar(
            plugin_dir_name,
            self.file_server_resource_base)

        plugin_source_path = resources.get_resource(os.path.join(
            'plugins', plugin_dir_name))
        plugin_tar_url = '{0}/{1}'.format(self.file_server_url,
                                          plugin_tar_name)

        extracted_plugin_path = installer.extract_package_to_dir(
            plugin_tar_url)
        self.assertTrue(test_utils.are_dir_trees_equal(
            plugin_source_path,
            extracted_plugin_path))
    def test_install_new_agent(self, *_):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {
            'name': agent_name,
            'ssl_cert_path': self._rest_cert_path
        }

        # Necessary to patch this method, because by default port 80 is used
        def http_rest_host(cloudify_agent):
            return os.environ[constants.MANAGER_FILE_SERVER_URL_KEY]

        # Necessary to patch, because by default https will be used
        def file_server_url(*args, **kwargs):
            return '{0}/resources'.format(http_rest_host({}))

        # Need to patch, to avoid broker_ssl_enabled being True
        @contextmanager
        def get_amqp_client(agent):
            yield get_client()

        with self._manager_env():
            with patch('cloudify_agent.api.utils.get_manager_file_server_url',
                       file_server_url):
                env = local.init_env(name=self._testMethodName,
                                     blueprint_path=blueprint_path,
                                     inputs=inputs)
                with patch('cloudify_agent.operations._http_rest_host',
                           http_rest_host):
                    with patch('cloudify_agent.operations._get_amqp_client',
                               get_amqp_client):
                        env.execute('install', task_retries=0)
            agent_dict = self.get_agent_dict(env, 'new_agent_host')
            agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])
            new_agent_name = agent_dict['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
示例#26
0
    def test_install_new_agent(self, *_):
        agent_name = utils.internal.generate_agent_name()

        blueprint_path = resources.get_resource(
            'blueprints/install-new-agent/install-new-agent-blueprint.yaml')
        self.logger.info('Initiating local env')
        inputs = {'name': agent_name, 'ssl_cert_path': self._rest_cert_path}

        with self._manager_env():
            env = local.init_env(name=self._testMethodName,
                                 blueprint_path=blueprint_path,
                                 inputs=inputs)
            env.execute('install', task_retries=0)
            agent_dict = self.get_agent_dict(env, 'new_agent_host')
            agent_ssl_cert.verify_remote_cert(agent_dict['agent_dir'])
            new_agent_name = agent_dict['name']
            self.assertNotEqual(new_agent_name, agent_name)
            self.assert_daemon_alive(new_agent_name)
            env.execute('uninstall', task_retries=1)
            self.wait_for_daemon_dead(name=agent_name)
            self.wait_for_daemon_dead(name=new_agent_name)
示例#27
0
    def test_extra_env_path(self):
        daemon = self.create_daemon()
        daemon.extra_env_path = utils.env_to_file(
            {'TEST_ENV_KEY': 'TEST_ENV_VALUE'},
            posix=os.name == 'posix'
        )
        daemon.create()
        daemon.configure()
        self.installer.install(
            os.path.join(resources.get_resource('plugins'),
                         'mock-plugin'))
        daemon.register('mock-plugin')
        daemon.start()

        # check the env file was properly sourced by querying the env
        # variable from the daemon process. this is done by a task
        value = self.celery.send_task(
            name='mock_plugin.tasks.get_env_variable',
            queue=daemon.queue,
            args=['TEST_ENV_KEY']).get(timeout=10)
        self.assertEqual(value, 'TEST_ENV_VALUE')
示例#28
0
def _test_local_agent_from_package(agent_name, fs, ssl_cert, request, *_):

    agent_queue = '{0}-queue'.format(agent_name)

    blueprint_path = resources.get_resource(
        'blueprints/agent-from-package/local-agent-blueprint.yaml')
    logger.info('Initiating local env')

    inputs = {
        'resource_base': fs.root_path,
        'source_url': get_source_uri(),
        'requirements_file': get_requirements_uri(),
        'name': agent_name,
        'queue': agent_queue,
        'file_server_port': fs.port,
        'ssl_cert_path': ssl_cert.local_cert_path()
    }
    managers = [
        ManagerItem({
            'networks': {
                'default': '127.0.0.1'
            },
            'ca_cert_content': ssl_cert.DUMMY_CERT,
            'hostname': 'cloudify'
        })
    ]

    with patch('cloudify.endpoint.LocalEndpoint.get_managers',
               return_value=managers):
        env = local.init_env(name=request.node.name,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
    agent_dict = get_agent_dict(env)
    ssl_cert.verify_remote_cert(agent_dict['agent_dir'])

    env.execute('uninstall', task_retries=1)
    wait_for_daemon_dead(agent_queue)
示例#29
0
    def test_3_2_backwards(self, _):

        agent_name = utils.internal.generate_agent_name()
        agent_queue = '{0}-queue'.format(agent_name)

        inputs = {
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue
        }

        blueprint_path = resources.get_resource(
            'blueprints/3_2-agent-from-source/3_2-agent-from-source.yaml')
        self.logger.info('Initiating local env')
        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
    def test_3_2_backwards(self, _):

        agent_name = utils.internal.generate_agent_name()
        agent_queue = '{0}-queue'.format(agent_name)

        inputs = {
            'source_url': self.source_url,
            'requirements_file': self.requirements_file,
            'name': agent_name,
            'queue': agent_queue
        }

        blueprint_path = resources.get_resource(
            'blueprints/3_2-agent-from-source/3_2-agent-from-source.yaml')
        self.logger.info('Initiating local env')
        env = local.init_env(name=self._testMethodName,
                             blueprint_path=blueprint_path,
                             inputs=inputs)

        env.execute('install', task_retries=0)
        self.assert_daemon_alive(name=agent_name)

        env.execute('uninstall', task_retries=1)
        self.wait_for_daemon_dead(name=agent_name)
示例#31
0
 def plugin_struct(plugin_name='mock-plugin'):
     return {
         'source': os.path.join(resources.get_resource('plugins'),
                                plugin_name),
         'name': PLUGIN_NAME
     }
示例#32
0
 def plugin_struct(plugin_name='mock-plugin'):
     return {
         'source': os.path.join(resources.get_resource('plugins'),
                                plugin_name),
         'name': PLUGIN_NAME
     }
示例#33
0
 def test_extract_package_name(self):
     package_dir = os.path.join(resources.get_resource('plugins'),
                                'mock-plugin')
     self.assertEqual(
         'mock-plugin',
         installer.extract_package_name(package_dir))
示例#34
0
 def test_extract_package_name(self):
     package_dir = os.path.join(resources.get_resource('plugins'),
                                'mock-plugin')
     self.assertEqual('mock-plugin',
                      installer.extract_package_name(package_dir))