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
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)
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")
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")
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")
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")
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()
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()
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()
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()
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}, )
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", ], )
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", )
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, }, )
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)
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)
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" "}" , )