Ejemplo n.º 1
0
 def get_mock_rest_client(self):
     mock_node = MagicMock(node_id='foo', type_hierarchy=discover.GCP_TYPE)
     mock_node.id = mock_node.node_id
     mock_node.properties = {
         'client_config': {},
         'resource_config': {},
         'zones': []
     }
     nodes_list = [mock_node]
     mock_nodes_client = MagicMock()
     mock_nodes_client.list = MagicMock(return_value=nodes_list)
     mock_instance = MagicMock(node_id='foo', state='started')
     mock_instance.node = mock_node
     mock_instance.node_id = mock_node.node_id
     mock_instance.runtime_properties = {}
     instances_list = [mock_instance]
     mock_instances_client = MagicMock()
     mock_instances_client.list = MagicMock(return_value=instances_list)
     mock_deployments_client = MagicMock()
     mock_deployments_client.create = MagicMock()
     mock_deployments_client.get.return_value = None
     mock_deployment_groups_client = MagicMock()
     mock_deployment_groups_client.put = MagicMock()
     mock_rest_client = MagicMock()
     mock_rest_client.nodes = mock_nodes_client
     mock_rest_client.node_instances = mock_instances_client
     mock_rest_client.deployments = mock_deployments_client
     mock_rest_client.deployment_groups = mock_deployment_groups_client
     return mock_rest_client
Ejemplo n.º 2
0
 def test_create(self):
     if system() == "Darwin":
         return
     handle, target_file = mkstemp()
     remove(target_file)
     bundle = MagicMock()
     bundle.bundle_dir = mkdtemp()
     bundle.bundle_data_dir = mkdtemp()
     bundle.node = Node('localhost')
     Repository().add_node(bundle.node)
     item = files.File(
         bundle,
         target_file,
         {
             'content_type': 'mako',
             'owner': getuser(),
             'source': 'my_template',
         },
     )
     mkdir(item.item_dir)
     with open(join(item.item_dir, "my_template"), 'w') as f:
         f.write("Hi from ${node.name}!")
     item.apply(interactive=False)
     with open(target_file) as f:
         content = f.read()
     try:
         self.assertEqual(content, "Hi from localhost!")
     finally:
         remove(target_file)
Ejemplo n.º 3
0
 def test_chmod(self):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = symlinks.Symlink(
         bundle,
         "/foo",
         {'owner': "jcleese", 'group': "mp", 'target': "/bar"},
     )
     f._fix_owner(MagicMock())
     node.run.assert_called_once_with("chown -h jcleese:mp -- /foo")
Ejemplo n.º 4
0
 def test_chmod(self):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = files.File(
         bundle,
         "/foo",
         {'mode': "1234"},
     )
     f._fix_mode(MagicMock())
     node.run.assert_called_once_with("chmod 1234 -- /foo")
Ejemplo n.º 5
0
 def test_chmod(self):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = files.File(
         bundle,
         "/foo",
         {'owner': "jcleese", 'group': "mp"},
     )
     f._fix_owner(MagicMock())
     node.run.assert_called_once_with("chown jcleese:mp -- /foo")
Ejemplo n.º 6
0
    def test_file_previews(self):
        args = MagicMock()
        args.file_preview_path = self.tmpdir
        args.node = "node1"
        args.show_repr = False

        list(items.bw_items(self.repo, args))

        self.assertTrue(exists(join(self.tmpdir, "foo/47")))
        self.assertFalse(exists(join(self.tmpdir, "foo/48")))
        with open(join(self.tmpdir, "foo/47")) as f:
            self.assertEqual(f.read(), "content")
Ejemplo n.º 7
0
 def test_regular(self):
     node = MagicMock()
     bundle = MagicMock()
     bundle.bundle_dir = "/b/dir"
     bundle.node = node
     f = files.File(
         bundle,
         "/foo",
         {'content': "47", 'content_type': 'mako'},
     )
     f._fix_content(MagicMock())
     node.upload.assert_called_once()
Ejemplo n.º 8
0
 def test_rm(self, fix_content):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = files.File(
         bundle,
         "/foo",
         {},
     )
     f._fix_type(MagicMock())
     assert call("rm -rf -- /foo") in node.run.call_args_list
     assert call("mkdir -p -- /") in node.run.call_args_list
     fix_content.assert_called_once()
Ejemplo n.º 9
0
 def test_rm(self, fix_owner):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = symlinks.Symlink(
         bundle,
         "/foo",
         {'target': "/bar"},
     )
     f._fix_type(MagicMock())
     assert call("rm -rf -- /foo") in node.run.call_args_list
     assert call("ln -s -- /bar /foo") in node.run.call_args_list
     fix_owner.assert_called_once()
Ejemplo n.º 10
0
 def test_rm(self, fix_mode, fix_owner):
     node = MagicMock()
     bundle = MagicMock()
     bundle.node = node
     f = directories.Directory(
         bundle,
         "/foo",
         {},
     )
     f._fix_type(MagicMock())
     assert call("rm -rf -- /foo") in node.run.call_args_list
     assert call("mkdir -p -- /foo") in node.run.call_args_list
     fix_mode.assert_called_once()
     fix_owner.assert_called_once()
Ejemplo n.º 11
0
    def test_interactive(self, interact):
        args = MagicMock()
        args.node = None
        repo_obj = MagicMock()
        repo_obj.path = "/dev/null"
        repo_obj_validated = MagicMock()
        with patch(
                'blockwart.cmdline.repo.Repository',
                return_value=repo_obj_validated,
        ) as repo_class:
            repo.bw_repo_debug(repo_obj, args)

            repo_class.assert_called_with(repo_obj.path)
            interact.assert_called_with(
                repo.DEBUG_BANNER,
                local={'repo': repo_obj_validated},
            )
Ejemplo n.º 12
0
    def test_simple_item_list(self):
        args = MagicMock()
        args.file_preview_path = None
        args.node = "node1"
        args.show_repr = False

        output = list(items.bw_items(self.repo, args))

        self.assertEqual(
            output,
            [
                "type1:item1",
                "type1:item2",
                "directory:/bar/baz",
                "file:/foo/47",
                "file:/foo/48",
            ],
        )
Ejemplo n.º 13
0
 def test_binary(self):
     node = MagicMock()
     bundle = MagicMock()
     bundle.bundle_dir = "/b/dir"
     bundle.node = node
     f = files.File(
         bundle,
         "/foo",
         {'content_type': 'binary', 'source': 'foobar'},
     )
     f._fix_content(MagicMock())
     node.upload.assert_called_once_with(
         "/b/dir/files/foobar",
         "/foo",
         owner="root",
         group="root",
         mode="0664",
     )
Ejemplo n.º 14
0
 def test_interactive_node(self, interact):
     args = MagicMock()
     args.node = "node1"
     args.itemid = None
     node = MagicMock()
     node.name = args.node
     repo_obj = MagicMock()
     repo_obj.path = "/dev/null"
     repo_obj_validated = MagicMock()
     repo_obj_validated.get_node = MagicMock(return_value=node)
     with patch(
             'blockwart.cmdline.repo.Repository',
             return_value=repo_obj_validated,
     ):
         repo.bw_repo_debug(repo_obj, args)
         interact.assert_called_with(
             repo.DEBUG_BANNER_NODE,
             local={
                 'node': node,
                 'repo': repo_obj_validated,
             },
         )
Ejemplo n.º 15
0
 def test_initialize(self, *_):
     mock_ctx = MagicMock()
     mock_ctx.node = MagicMock(
         properties={
             'client_config': {
                 'auth': {
                     'foo': 'bar'
                 },
                 'project': 'foo',
                 'zone': 'bar'
             }
         })
     mock_ctx.instance = MagicMock(runtime_properties={'resources': {}})
     params = {
         'resource_config': {
             'resource_types': ['projects.zones.clusters']
         },
         'zones': ['region1', 'region2'],
         'ctx': mock_ctx,
         'logger': mock_ctx.logger
     }
     resources.initialize(**params)
     self.assertIn('resources', mock_ctx.instance.runtime_properties)
Ejemplo n.º 16
0
    def test_update(self):
        _ctx = MagicMock()
        _currentinstance = MagicMock()

        _node = MagicMock()
        _instance = MagicMock()
        _relationship = MagicMock()

        _node_config = MagicMock()
        _instance_config = MagicMock()

        _node_config.id = 'configuration'
        _node_config.instances = [_instance_config]

        _instance.node = _node
        _instance.relationships = [_relationship]
        _relationship.target_id = _node_config.id
        _relationship.target_node_instance = _node_config
        _relationship.target_node_instance.node_id = _node_config.id
        _node.properties = {
            'params_list': ['a', 'c'],
            'params': {
                'a': 'e',
                'c': 'g'
            }
        }
        _node.type_hierarchy = ['juniper_node_config', 'cloudify.nodes.Root']
        _node.instances = [_instance]

        _currentinstance.runtime_properties = {
            'params': {
                'diff_params': ['a']
            }
        }

        _ctx.nodes = [_node, _node_config]

        _workflow_ctx = MagicMock()
        _workflow_ctx.get_ctx = MagicMock(return_value=_ctx)

        _manager_client = MagicMock()
        _manager_client.node_instances.get = MagicMock(
            return_value=_currentinstance)

        with patch('cloudify.state.current_workflow_ctx', _workflow_ctx):
            with patch('cloudify.manager.get_rest_client',
                       MagicMock(return_value=_manager_client)):
                tasks.update({'a': 'b'}, 'configuration',
                             ['juniper_node_config', 'fortinet_vnf_type'],
                             False)

        _relationship.execute_target_operation.assert_called_with(
            tasks.LIFECYCLE_RELATIONSHIP_OPERATION_PRECONFIGURE)

        _instance_config.execute_operation.assert_called_with(
            tasks.LIFECYCLE_OPERATION_CONFIGURE,
            allow_kwargs_override=True,
            kwargs={
                'parameters': {
                    'a': 'b'
                },
                'merge_dict': False
            })

        _instance.execute_operation.assert_called_with(
            tasks.LIFECYCLE_OPERATION_UPDATE)
Ejemplo n.º 17
0
    def test_output(self):
        class FakeItem1(Item):
            BUNDLE_ATTRIBUTE_NAME = "fakes1"
            ITEM_TYPE_NAME = "type1"

        class FakeItem2(Item):
            BUNDLE_ATTRIBUTE_NAME = "fakes1"
            ITEM_TYPE_NAME = "type2"

        class FakeItem3(Item):
            BUNDLE_ATTRIBUTE_NAME = "fakes1"
            ITEM_TYPE_NAME = "type3"

        class FakeBundle(object):
            bundle_dir = "/dev/null"
            bundle_data_dir = "/dev/null"
            node = None

        item1 = FakeItem1(FakeBundle(), "item1", {})
        item2 = FakeItem1(FakeBundle(), "item2", {})
        item3 = FakeItem2(FakeBundle(), "item1", {})
        item3.needs = ["type1:item1"]

        item4 = FakeItem3(FakeBundle(), "item1", {})
        item4.NEEDS_STATIC = ["type2:"]

        bundle1 = MagicMock()
        bundle1.name = "bundle1"
        bundle1.items = [item1, item2, item3]
        for item in bundle1.items:
            item.bundle = bundle1

        bundle2 = MagicMock()
        bundle2.name = "bundle2"
        bundle2.items = [item4]
        for item in bundle2.items:
            item.bundle = bundle2

        node = MagicMock()
        node.bundles = [bundle1, bundle2]
        node.items = [item1, item2, item3, item4]
        node.name = "node"

        args = MagicMock()
        args.node = "node"
        args.depends_static = True
        args.depends_regular = True
        args.depends_auto = True

        rep = MagicMock()
        rep.get_node.return_value = node

        self.assertEqual(
            "\n".join(list(plot.bw_plot_node(rep, args))),
            "digraph bundlewrap\n"
            "{\n"
            "rankdir = LR\n"
            "graph [color=\"#303030\"; "
            "fontname=Helvetica; "
            "penwidth=2; "
            "shape=box; "
            "style=\"rounded,dashed\"]\n"
            "node [color=\"#303030\"; "
            "fillcolor=\"#303030\"; "
            "fontcolor=white; "
            "fontname=Helvetica; "
            "shape=box; "
            "style=\"rounded,filled\"]\n"
            "edge [arrowhead=vee]\n"
            "subgraph cluster_0\n"
            "{\n"
            "label = \"bundle2\"\n"
            "\"bundle:bundle2\"\n"
            "\"type3:item1\"\n"
            "}\n"
            "subgraph cluster_1\n"
            "{\n"
            "label = \"bundle1\"\n"
            "\"bundle:bundle1\"\n"
            "\"type1:item1\"\n"
            "\"type1:item2\"\n"
            "\"type2:item1\"\n"
            "}\n"
            "\"bundle:bundle2\" -> \"type3:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"bundle:bundle1\" -> \"type1:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"bundle:bundle1\" -> \"type1:item2\" [color=\"#6BB753\",penwidth=2]\n"
            "\"bundle:bundle1\" -> \"type2:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"type1:\" -> \"type1:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"type1:\" -> \"type1:item2\" [color=\"#6BB753\",penwidth=2]\n"
            "\"type3:\" -> \"type3:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"type2:\" -> \"type2:item1\" [color=\"#6BB753\",penwidth=2]\n"
            "\"type2:item1\" -> \"type1:item1\" [color=\"#C24948\",penwidth=2]\n"
            "\"type3:item1\" -> \"type2:\" [color=\"#3991CC\",penwidth=2]\n"
            "fontsize = 28\n"
            "label = \"node\"\n"
            "labelloc = \"t\"\n"
            "}"
            ,
        )