def test_add_same_resource(self, mock_session): mock_document = Document(text='cat bar') comp = ShellCompleter() r1 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 1) r1.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0) r2.delete()
def test_add_same_resource(self, mock_session): mock_document = Document(text='cat bar') comp = ShellCompleter() r1 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 1) r1.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0) r2.delete()
def __call__(self, project_fqname=None, virtual_network_name=None): vn_fqname = '%s:%s' % (project_fqname, virtual_network_name) vn = Resource('virtual-network', fq_name=vn_fqname, fetch=True) if vn.get('router_external', False): try: fip_pool = Resource('floating-ip-pool', fq_name='%s:%s' % (vn_fqname, 'floating-ip-pool'), check=True) fip_pool.delete() except ResourceNotFound: pass vn.delete()
def test_add_same_resource(self, mock_session): ShellContext.current_path = Path('/') mock_document = mock.Mock() mock_document.get_word_before_cursor.return_value = 'bar' comp = ResourceCompleter() r1 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 1) r1.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0) r2.delete()
def __call__(self, force=False, parent_type=None, cassandra_servers=None): valid_acl = [] parents = Collection(parent_type, fetch=True, recursive=2) for parent in parents: if 'access_control_lists' in parent.keys(): valid_acl += [ acl['uuid'] for acl in parent['access_control_lists'] ] valid_acl = list(set(valid_acl)) orphaned_acls = set([]) # Due to a bug in contrail API, we cannot list more than 10000 elements # on a resource and there is no way to list ACL by tenant. # So that ugly hack directly fetch all ACL UUIDs from the cassandra database :( pool = ConnectionPool('config_db_uuid', server_list=cassandra_servers) fqname_cf = ColumnFamily(pool, 'obj_fq_name_table') for key, value in fqname_cf.xget('access_control_list'): acl_uuid = decode_string(key).split(':')[-1] if acl_uuid in valid_acl: continue acl = Resource('access-control-list', uuid=acl_uuid, fetch=True) if ('parent_uuid' in acl.keys() and 'parent_type' in acl.keys() and acl['parent_type'] == parent_type and acl.uuid not in valid_acl): try: parent_acl = acl.parent except ResourceNotFound: msg = ("The %s parent ACL %s was not found." % (parent_type.replace('-', ' '), acl['parent_uuid'])) if force: msg = msg + " Delete orphan ACL %s." % acl.uuid acl.delete() logger.debug(msg) orphaned_acls.add(acl['uuid']) else: logger.debug( "The ACL %(acl)s have a %(parent_type)s %(parent_acl)s which exists but \ was not found in the precedent %(parent_type)s list. Not delete it." % { 'acl': acl, 'parent_type': parent_type.replace('-', ' '), 'parent_acl': parent_acl }) if force: logger.debug("%d orphaned ACL were deleted" % len(orphaned_acls)) else: logger.debug("Found %d orphaned ACL to delete" % len(orphaned_acls))
def test_add_del_resource(self, mock_session): mock_document = Document(text='cat bar') comp = ShellCompleter() r1 = Resource('foo', uuid='d8eb36b4-9c57-49c5-9eac-95bedc90eb9a') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(Context().shell.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(Context().shell.current_path)) not in [c.text for c in completions])
def test_add_del_resource(self, mock_session): mock_document = Document(text='cat bar') comp = ShellCompleter() r1 = Resource('foo', uuid='d8eb36b4-9c57-49c5-9eac-95bedc90eb9a') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(Context().shell.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(Context().shell.current_path)) not in [c.text for c in completions])
def test_fq_name_completion(self, mock_session): mock_document = Document(text='cat bar/default-dom') comp = ShellCompleter() r1 = Resource('bar', fq_name='default-domain:project:resource') r2 = Resource('bar', fq_name='foo:foo:foo') completions = list(comp.get_completions(mock_document, None)) self.assertEqual(len(completions), 1) self.assertTrue(str(r1.path.relative_to(Context().shell.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0)
def test_fq_name_completion(self, mock_session): mock_document = Document(text='cat bar/default-dom') comp = ShellCompleter() r1 = Resource('bar', fq_name='default-domain:project:resource') r2 = Resource('bar', fq_name='foo:foo:foo') completions = list(comp.get_completions(mock_document, None)) self.assertEqual(len(completions), 1) self.assertTrue(str(r1.path.relative_to(Context().shell.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0)
def test_add_del_resource(self, mock_session): ShellContext.current_path = Path('/') mock_document = mock.Mock() mock_document.get_word_before_cursor.return_value = 'bar' comp = ResourceCompleter() r1 = Resource('foo', uuid='d8eb36b4-9c57-49c5-9eac-95bedc90eb9a') r2 = Resource('bar', uuid='4c6d3711-61f1-4505-b8df-189d32b52872') completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(ShellContext.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertTrue(str(r2.path.relative_to(ShellContext.current_path)) not in [c.text for c in completions])
def test_fq_name_completion(self, mock_session): ShellContext.current_path = Path('/') mock_document = mock.Mock() mock_document.get_word_before_cursor.return_value = 'default-dom' comp = ResourceCompleter() r1 = Resource('bar', fq_name='default-domain:project:resource') r2 = Resource('foo', fq_name='foo:foo:foo') completions = list(comp.get_completions(mock_document, None)) self.assertEqual(len(completions), 1) self.assertTrue(str(r1.path.relative_to(ShellContext.current_path)) in [c.text for c in completions]) r1.delete() r2.delete() completions = comp.get_completions(mock_document, None) self.assertEqual(len(list(completions)), 0)
def __call__(self, analytics_name=None): analytics = Resource('analytics-node', fq_name='default-global-system-config:%s' % analytics_name, fetch=True) analytics.delete()
def __call__(self, config_name=None): config = Resource('config-node', fq_name='default-global-system-config:%s' % config_name, check=True) config.delete()
def __call__(self, router_name=None): router_fq_name = DEFAULT_RI_FQ_NAME + [router_name] bgp_router = Resource('bgp-router', fq_name=router_fq_name, check=True) bgp_router.delete()
def __call__(self, vrouter_name=None): vrouter = Resource('virtual-router', fq_name='default-global-system-config:%s' % vrouter_name, check=True) vrouter.delete()
def __call__(self, appliance_set_name=None): sas = Resource('service-appliance-set', fq_name='default-global-system-config:%s' % appliance_set_name, check=True) sas.delete()