diff options
author | Stuart Mackie <wsmackie@juniper.net> | 2017-03-23 06:26:16 -0700 |
---|---|---|
committer | Stuart Mackie <wsmackie@juniper.net> | 2017-03-23 06:26:16 -0700 |
commit | c29a525331b45ead15ec376d03f76836d622c943 (patch) | |
tree | 6713f16cb30c739a66a0cb56fb4e2efed732eff1 /Testcases/config_obj.py | |
parent | 88df88a19674ccc0017836941b8ee32eaadf19fb (diff) |
Removed test case files without correct license language. Will replace in future.
Change-Id: I16435a250257cf97a67a8ba31303c89d74204ac2
Signed-off-by: Stuart Mackie <wsmackie@juniper.net>
Diffstat (limited to 'Testcases/config_obj.py')
-rw-r--r-- | Testcases/config_obj.py | 1737 |
1 files changed, 0 insertions, 1737 deletions
diff --git a/Testcases/config_obj.py b/Testcases/config_obj.py deleted file mode 100644 index 9470588..0000000 --- a/Testcases/config_obj.py +++ /dev/null @@ -1,1737 +0,0 @@ - -import os -import sys -import time -import uuid -from vnc_api import vnc_api -try: - import novaclient.v1_1.client - config_nova = True -except: - config_nova = False - - -class ConfigVirtualDns(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.virtual_DNSs_list()['virtual-DNSs'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == name): - return self.vnc.virtual_DNS_read(id = item['uuid']) - - def obj_show(self, obj): - print 'Virtual DNS' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - dns = obj.get_virtual_DNS_data() - print 'Domain name: %s' %(dns.domain_name) - print 'Record order: %s' %(dns.record_order) - print 'Default TTL: %s seconds' %(dns.default_ttl_seconds) - print 'Next DNS: %s' %(dns.next_virtual_DNS) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - print ' %s' %(item['fq_name'][1]) - - def add(self, name, domain_name, record_order, next_dns): - data = vnc_api.VirtualDnsType(domain_name = domain_name, - dynamic_records_from_client = True, - record_order = record_order, - default_ttl_seconds = 86400, - next_virtual_DNS = 'default-domain:' + next_dns) - obj = vnc_api.VirtualDns(name = name, virtual_DNS_data = data) - try: - self.vnc.virtual_DNS_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def delete(self, name): - try: - self.vnc.virtual_DNS_delete( - fq_name = ['default-domain', name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigIpam(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.network_ipams_list()['network-ipams'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.network_ipam_read(id = item['uuid']) - - def dns_show(self, mgmt): - print ' DNS Type: %s' %(mgmt.ipam_dns_method) - if (mgmt.ipam_dns_method == 'virtual-dns-server'): - print ' Virtual DNS Server: %s' %( - mgmt.get_ipam_dns_server().virtual_dns_server_name) - elif (mgmt.ipam_dns_method == 'tenant-dns-server'): - list = mgmt.get_ipam_dns_server().get_tenant_dns_server_address().get_ip_address() - print ' Tenant DNS Server:' - for item in list: - print ' %s' %(item) - - def dhcp_show(self, mgmt): - dhcp_opt = {'4':'NTP Server', '15':'Domain Name'} - print ' DHCP Options:' - dhcp = mgmt.get_dhcp_option_list() - if not dhcp: - return - for item in dhcp.get_dhcp_option(): - print ' %s: %s' %(dhcp_opt[item.dhcp_option_name], - item.dhcp_option_value) - - def obj_show(self, obj): - print 'IPAM' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - print 'Management:' - mgmt = obj.get_network_ipam_mgmt() - if not mgmt: - return - self.dns_show(mgmt) - self.dhcp_show(mgmt) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def dns_add(self, mgmt, dns_type, virtual_dns = None, tenant_dns = None): - type = {'none':'none', - 'default':'default-dns-server', - 'virtual':'virtual-dns-server', - 'tenant':'tenant-dns-server'} - if not dns_type: - return - mgmt.set_ipam_dns_method(type[dns_type]) - if virtual_dns: - mgmt.set_ipam_dns_server(vnc_api.IpamDnsAddressType( - virtual_dns_server_name = virtual_dns)) - if tenant_dns: - mgmt.set_ipam_dns_server(vnc_api.IpamDnsAddressType( - tenant_dns_server_address = vnc_api.IpAddressesType( - ip_address = tenant_dns))) - - def dhcp_add(self, mgmt, domain_name = None, ntp_server = None): - if domain_name: - list = mgmt.get_dhcp_option_list() - if not list: - list = vnc_api.DhcpOptionsListType() - mgmt.set_dhcp_option_list(list) - list.add_dhcp_option(vnc_api.DhcpOptionType( - dhcp_option_name = '15', - dhcp_option_value = domain_name)) - if ntp_server: - list = mgmt.get_dhcp_option_list() - if not list: - list = vnc_api.DhcpOptionsListType() - mgmt.set_dhcp_option_list() - list.add_dhcp_option(vnc_api.DhcpOptionType( - dhcp_option_name = '4', - dhcp_option_value = ntp_server)) - - def add(self, name, dns_type, virtual_dns = None, tenant_dns = None, - domain_name = None, ntp_server = None): - create = False - obj = self.obj_get(name) - if not obj: - obj = vnc_api.NetworkIpam(name = name, - parent_obj = self.tenant) - create = True - mgmt = obj.get_network_ipam_mgmt() - if not mgmt: - mgmt = vnc_api.IpamType() - obj.set_network_ipam_mgmt(mgmt) - self.dns_add(mgmt, dns_type, virtual_dns, tenant_dns) - self.dhcp_add(mgmt, domain_name, ntp_server) - if create: - try: - self.vnc.network_ipam_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - self.vnc.network_ipam_update(obj) - - def delete(self, name, domain_name = None): - update = False - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - if domain_name: - mgmt = obj.get_network_ipam_mgmt() - list = mgmt.get_dhcp_option_list() - for item in list.get_dhcp_option(): - if (item.dhcp_option_name == '15') and \ - (item.dhcp_option_value == domain_name): - list.delete_dhcp_option(item) - break - update = True - if update: - self.vnc.network_ipam_update(obj) - else: - try: - self.vnc.network_ipam_delete( - fq_name = ['default-domain', self.tenant.name, - name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigPolicy(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.network_policys_list()['network-policys'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.network_policy_read(id = item['uuid']) - - def addr_show(self, addr_list): - for item in addr_list: - print ' Virtual Network: %s' %(item.get_virtual_network()) - - def port_show(self, port_list): - for item in port_list: - print ' %d:%d' %(item.get_start_port(), item.get_end_port()) - - def action_show(self, rule): - list = rule.get_action_list() - if not list: - return - action = list.get_simple_action() - if action: - print ' %s' %(action) - else: - for item in rule.get_action_list().get_apply_service(): - print ' %s' %(item) - - def rule_show(self, obj): - rules_obj = obj.get_network_policy_entries() - if (rules_obj == None): - return - list = rules_obj.get_policy_rule() - count = 1 - for rule in list: - print 'Rule #%d' %(count) - print ' Direction: %s' %(rule.get_direction()) - print ' Protocol: %s' %(rule.get_protocol()) - print ' Source Addresses:' - self.addr_show(rule.get_src_addresses()) - print ' Source Ports:' - self.port_show(rule.get_src_ports()) - print ' Destination Addresses:' - self.addr_show(rule.get_dst_addresses()) - print ' Destination Ports:' - self.port_show(rule.get_dst_ports()) - print ' Action:' - self.action_show(rule) - count += 1 - - def obj_show(self, obj): - print 'Policy' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - self.rule_show(obj) - list = obj.get_virtual_network_back_refs() - if (list != None): - print '[BR] network:' - for item in list: - print ' %s' %(item['to'][2]) - - def show(self, name): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def rule_add(self, arg_list): - direction = None - protocol = None - src_net_list = [] - dst_net_list = [] - src_port_list = [] - dst_port_list = [] - action = None - service_list = [] - for arg in arg_list: - arg_name = arg.split('=')[0] - arg_val = arg.split('=')[1] - if (arg_name == 'direction'): - direction = arg_val - elif (arg_name == 'protocol'): - protocol = arg_val - elif (arg_name == 'src-net'): - net = 'default-domain:%s:%s' %(self.tenant.name, arg_val) - src_net_list.append(vnc_api.AddressType(virtual_network = net)) - elif (arg_name == 'dst-net'): - net = 'default-domain:%s:%s' %(self.tenant.name, arg_val) - dst_net_list.append(vnc_api.AddressType(virtual_network = net)) - elif (arg_name == 'src-port'): - if (arg_val == 'any'): - src_port_list.append(vnc_api.PortType( - start_port = -1, end_port = -1)) - else: - s_e = arg_val.split(':') - src_port_list.append(vnc_api.PortType( - start_port = int(s_e[0]), end_port = int(s_e[1]))) - elif (arg_name == 'dst-port'): - if (arg_val == 'any'): - src_port_list.append(vnc_api.PortType( - start_port = -1, end_port = -1)) - else: - s_e = arg_val.split(':') - src_port_list.append(vnc_api.PortType( - start_port = int(s_e[0]), end_port = int(s_e[1]))) - elif (arg_name == 'action'): - action = arg_val - elif (arg_name == 'service'): - service_list.append('default-domain:%s:%s' \ - %(self.tenant.name, arg_val)) - - rule = vnc_api.PolicyRuleType() - if not direction: - direction = '<>' - rule.set_direction(direction) - if not protocol: - protocol = 'any' - rule.set_protocol(protocol) - if not src_net_list: - src_net_list.append(vnc_api.AddressType(virtual_network = 'any')) - rule.set_src_addresses(src_net_list) - if not dst_net_list: - dst_net_list.append(vnc_api.AddressType(virtual_network = 'any')) - rule.set_dst_addresses(dst_net_list) - if not src_port_list: - src_port_list.append(vnc_api.PortType( - start_port = -1, end_port = -1)) - rule.set_src_ports(src_port_list) - if not dst_port_list: - dst_port_list.append(vnc_api.PortType( - start_port = -1, end_port = -1)) - rule.set_dst_ports(dst_port_list) - if not action: - action_list = vnc_api.ActionListType(simple_action = 'pass') - elif (action == 'service'): - action_list = vnc_api.ActionListType(apply_service = service_list) - else: - action_list = vnc_api.ActionListType(simple_action = action) - rule.set_action_list(action_list) - return rule - - def add(self, name, rule_arg_list): - rule_list = [] - if not rule_arg_list: - rule = self.rule_add([]) - rule_list.append(rule) - else: - for rule_arg in rule_arg_list: - rule = self.rule_add(rule_arg.split(',')) - rule_list.append(rule) - - obj = self.obj_get(name = name) - if obj: - rules = obj.get_network_policy_entries() - if not rules: - rules = vnc_api.PolicyEntriesType(policy_rule = rule_list) - else: - for item in rule_list: - rules.add_policy_rule(item) - obj.set_network_policy_entries(rules) - try: - self.vnc.network_policy_update(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - rules = vnc_api.PolicyEntriesType(policy_rule = rule_list) - obj = vnc_api.NetworkPolicy(name = name, - parent_obj = self.tenant, - network_policy_entries = rules) - try: - self.vnc.network_policy_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def delete(self, name, rule_arg_list): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - if rule_arg_list: - rules = obj.get_network_policy_entries() - if not rules: - return - for rule_arg in rule_arg_list: - for arg in rule_arg.split(','): - arg_name = arg.split('=')[0] - arg_val = arg.split('=')[1] - if (arg_name == 'index'): - rule = rules.get_policy_rule()[int(arg_val) - 1] - rules.delete_policy_rule(rule) - obj.set_network_policy_entries(rules) - self.vnc.network_policy_update(obj) - else: - try: - self.vnc.network_policy_delete(fq_name = ['default-domain', - self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigSecurityGroup(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.security_groups_list()['security-groups'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.security_group_read(id = item['uuid']) - - def addr_show(self, addr_list): - for item in addr_list: - print ' Security Group: %s' %(item.get_security_group()) - subnet = item.get_subnet() - if subnet: - print ' Subnet: %s/%d' %(subnet.get_ip_prefix(), \ - subnet.get_ip_prefix_len()) - else: - print ' Subnet: None' - - def port_show(self, port_list): - for item in port_list: - print ' %d:%d' %(item.get_start_port(), item.get_end_port()) - - def rule_show(self, obj): - rules_obj = obj.get_security_group_entries() - if (rules_obj == None): - return - list = rules_obj.get_policy_rule() - count = 1 - for rule in list: - print 'Rule #%d' %(count) - print ' Direction: %s' %(rule.get_direction()) - print ' Protocol: %s' %(rule.get_protocol()) - print ' Source Addresses:' - self.addr_show(rule.get_src_addresses()) - print ' Source Ports:' - self.port_show(rule.get_src_ports()) - print ' Destination Addresses:' - self.addr_show(rule.get_dst_addresses()) - print ' Destination Ports:' - self.port_show(rule.get_dst_ports()) - count += 1 - - def obj_show(self, obj): - print 'Security Group' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - self.rule_show(obj) - - def show(self, name): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def add(self, name, protocol = None, address = None, port = None, - direction = None): - rule = vnc_api.PolicyRuleType() - rule.set_direction('>') - if protocol: - rule.set_protocol(protocol) - else: - rule.set_protocol('any') - - addr_list = [] - if address: - for item in address: - prefix = item.split('/')[0] - len = item.split('/')[1] - addr_list.append(vnc_api.AddressType( - subnet = vnc_api.SubnetType( - ip_prefix = prefix, ip_prefix_len = int(len)))) - else: - addr_list.append(vnc_api.AddressType( - subnet = vnc_api.SubnetType( - ip_prefix = '0.0.0.0', ip_prefix_len = 0))) - - local_addr_list = [vnc_api.AddressType(security_group = 'local')] - - port_list = [] - if port: - for item in port: - if (item == 'any'): - port_list.append(vnc_api.PortType( - start_port = -1, end_port = -1)) - else: - s_e = item.split(':') - port_list.append(vnc_api.PortType( - start_port = int(s_e[0]), end_port = int(s_e[1]))) - else: - port_list.append(vnc_api.PortType(start_port = -1, end_port = -1)) - - local_port_list = [vnc_api.PortType(start_port = -1, end_port = -1)] - - if (direction == 'ingress'): - rule.set_src_addresses(addr_list) - rule.set_src_ports(port_list) - rule.set_dst_addresses(local_addr_list) - rule.set_dst_ports(local_port_list) - else: - rule.set_src_addresses(local_addr_list) - rule.set_src_ports(local_port_list) - rule.set_dst_addresses(addr_list) - rule.set_dst_ports(port_list) - - obj = self.obj_get(name = name) - if obj: - rules = obj.get_security_group_entries() - if not rules: - rules = vnc_api.PolicyEntriesType(policy_rule = [rule]) - else: - rules.add_policy_rule(rule) - try: - self.vnc.security_group_update(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - rules = vnc_api.PolicyEntriesType(policy_rule = [rule]) - obj = vnc_api.SecurityGroup(name = name, - parent_obj = self.tenant, - security_group_entries = rules) - try: - self.vnc.security_group_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def rule_del(self, obj, index): - rules = obj.get_security_group_entries() - if not rules: - return - rule = rules.get_policy_rule()[index - 1] - rules.delete_policy_rule(rule) - self.vnc.security_group_update(obj) - - def delete(self, name, rule = None): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - if rule: - self.rule_del(obj, int(rule)) - else: - try: - self.vnc.security_group_delete(fq_name = ['default-domain', - self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigNetwork(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.virtual_networks_list()['virtual-networks'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.virtual_network_read(id = item['uuid']) - - def prop_route_target_show(self, obj): - print '[P] Route targets:' - rt_list = obj.get_route_target_list() - if not rt_list: - return - for rt in rt_list.get_route_target(): - print ' %s' %(rt) - - def child_floating_ip_pool_show(self, obj): - print '[C] Floating IP pools:' - pool_list = obj.get_floating_ip_pools() - if not pool_list: - return - for pool in pool_list: - print ' %s' %(pool['to'][3]) - pool_obj = self.vnc.floating_ip_pool_read(id = pool['uuid']) - ip_list = pool_obj.get_floating_ips() - if (ip_list != None): - for ip in ip_list: - ip_obj = self.vnc.floating_ip_read(id = ip['uuid']) - print ' %s' %(ip_obj.get_floating_ip_address()) - - def ref_ipam_show(self, obj): - print '[R] IPAMs:' - ipam_list = obj.get_network_ipam_refs() - if not ipam_list: - return - for item in ipam_list: - print ' %s' %(item['to'][2]) - subnet_list = item['attr'].get_ipam_subnets() - for subnet in subnet_list: - print ' subnet: %s/%d, gateway: %s' %( - subnet.get_subnet().get_ip_prefix(), - subnet.get_subnet().get_ip_prefix_len(), - subnet.get_default_gateway()) - - def ref_policy_show(self, obj): - print '[R] Policies:' - policy_list = obj.get_network_policy_refs() - if not policy_list: - return - for item in policy_list: - print ' %s (%d.%d)' %(item['to'][2], - item['attr'].get_sequence().get_major(), - item['attr'].get_sequence().get_minor()) - - def ref_route_table_show(self, obj): - print '[R] Route Tables:' - rt_list = obj.get_route_table_refs() - if not rt_list: - return - for item in rt_list: - print ' %s' %(item['to'][2]) - - def obj_show(self, obj): - print 'Virtual Network' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - self.prop_route_target_show(obj) - self.child_floating_ip_pool_show(obj) - self.ref_ipam_show(obj) - self.ref_policy_show(obj) - self.ref_route_table_show(obj) - - def show(self, name): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def ipam_add(self, obj, name, subnet, gateway = None): - try: - ipam_obj = self.vnc.network_ipam_read(fq_name = ['default-domain', - self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - cidr = subnet.split('/') - subnet = vnc_api.SubnetType(ip_prefix = cidr[0], - ip_prefix_len = int(cidr[1])) - ipam_subnet = vnc_api.IpamSubnetType(subnet = subnet, - default_gateway = gateway) - obj.add_network_ipam(ref_obj = ipam_obj, - ref_data = vnc_api.VnSubnetsType([ipam_subnet])) - - def ipam_del(self, obj, name): - try: - ipam_obj = self.vnc.network_ipam_read(fq_name = ['default-domain', - self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.del_network_ipam(ref_obj = ipam_obj) - - def policy_add(self, obj, name): - try: - policy_obj = self.vnc.network_policy_read( - fq_name = ['default-domain', self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - seq = vnc_api.SequenceType(major = 0, minor = 0) - obj.add_network_policy(ref_obj = policy_obj, - ref_data = vnc_api.VirtualNetworkPolicyType(sequence = seq)) - - def policy_del(self, obj, name): - try: - policy_obj = self.vnc.network_policy_read( - fq_name = ['default-domain', self.tenant.name, name]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.del_network_policy(ref_obj = policy_obj) - - def route_target_add(self, obj, rt): - rt_list = obj.get_route_target_list() - if not rt_list: - rt_list = vnc_api.RouteTargetList() - obj.set_route_target_list(rt_list) - rt_list.add_route_target('target:%s' %(rt)) - - def route_target_del(self, obj, rt): - rt_list = obj.get_route_target_list() - if not rt_list: - return - rt_list.delete_route_target('target:%s' %(rt)) - - def route_table_add(self, obj, rt): - try: - rt_obj = self.vnc.route_table_read(fq_name = ['default-domain', - self.tenant.name, rt]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.add_route_table(ref_obj = rt_obj) - - def route_table_del(self, obj, rt): - try: - rt_obj = self.vnc.route_table_read(fq_name = ['default-domain', - self.tenant.name, rt]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.del_route_table(ref_obj = rt_obj) - - def add(self, name, ipam = None, subnet = None, policy = None, - route_target = None, route_table = None, shared = None, - external = None, l2 = None): - create = False - obj = self.obj_get(name) - if not obj: - obj = vnc_api.VirtualNetwork(name = name, - parent_obj = self.tenant) - if l2: - prop = vnc_api.VirtualNetworkType(forwarding_mode = 'l2') - obj.set_virtual_network_properties(prop) - if shared: - obj.set_is_shared(shared) - if external: - obj.set_router_external(external) - create = True - if ipam and subnet: - self.ipam_add(obj, ipam, subnet) - if policy: - self.policy_add(obj, policy) - if route_target: - self.route_target_add(obj, route_target) - if route_table: - self.route_table_add(obj, route_table) - if create: - try: - self.vnc.virtual_network_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - self.vnc.virtual_network_update(obj) - - def delete(self, name, ipam = None, policy = None, route_target = None, - route_table = None): - update = False - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - if ipam: - self.ipam_del(obj, ipam) - update = True - if policy: - self.policy_del(obj, policy) - update = True - if route_target: - self.route_target_del(obj, route_target) - update = True - if route_table: - self.route_table_del(obj, route_table) - update = True - if update: - self.vnc.virtual_network_update(obj) - else: - try: - self.vnc.virtual_network_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigFloatingIpPool(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.floating_ip_pools_list()['floating-ip-pools'] - return list - - def obj_get(self, name, network = None): - for item in self.obj_list(): - if network: - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == network) and \ - (item['fq_name'][3] == name): - return self.vnc.floating_ip_pool_read(id = item['uuid']) - else: - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][3] == name): - return self.vnc.floating_ip_pool_read(id = item['uuid']) - - def prop_subnet_show(self, obj): - print '[P] Subnet:' - prefixes = obj.get_floating_ip_pool_prefixes() - if not prefixes: - return - for item in prefixes.get_subnet(): - print ' %s/%s' %(item.get_ip_prefix(), item.get_ip_prefix_len()) - - def child_ip_show(self, obj): - print '[C] Floating IPs:' - list = obj.get_floating_ips() - if not list: - return - for ip in list: - ip_obj = self.vnc.floating_ip_read(id = ip['uuid']) - print ' %s' %(ip_obj.get_floating_ip_address()) - - def back_ref_tenant_show(self, obj): - print '[BR] Tenants:' - list = obj.get_project_back_refs() - if not list: - return - for item in list: - print ' %s' %(item['to'][1]) - - def obj_show(self, obj): - print 'Floating IP Pool' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - self.prop_subnet_show(obj) - self.child_ip_show(obj) - self.back_ref_tenant_show(obj) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s in network %s' \ - %(item['fq_name'][2], item['fq_name'][3]) - - def add(self, name, network): - if not name: - print 'ERROR: The name of floating IP pool is not specified!' - return - if not network: - print 'ERROR: Network is not specified!' - return - try: - net_obj = self.vnc.virtual_network_read( - fq_name = ['default-domain', self.tenant.name, network]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj = vnc_api.FloatingIpPool(name = name, parent_obj = net_obj) - try: - self.vnc.floating_ip_pool_create(obj) - self.tenant.add_floating_ip_pool(obj) - self.vnc.project_update(self.tenant) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def fip_delete(self, pool_obj): - pass - - def delete(self, name, network): - if not name: - print 'ERROR: The name of floating IP pool is not specified!' - return - obj = self.obj_get(name, network) - if not obj: - print 'ERROR: Floating IP pool %s in network %s is not found!' \ - %(name, network) - return - if obj.get_floating_ips(): - print 'ERROR: There are allocated floating IPs!' - return - for tenant_ref in obj.get_project_back_refs(): - tenant = self.vnc.project_read(fq_name = tenant_ref['to']) - tenant.del_floating_ip_pool(obj) - self.vnc.project_update(tenant) - try: - self.vnc.floating_ip_pool_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigServiceTemplate(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.service_templates_list()['service-templates'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == name): - return self.vnc.service_template_read(id = item['uuid']) - - def obj_show(self, obj): - print 'Service Template' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - properties = obj.get_service_template_properties() - print 'Service Mode: %s' %(properties.get_service_mode()) - print 'Service Type: %s' %(properties.get_service_type()) - print 'Service Image: %s' %(properties.get_image_name()) - print 'Service Flavor: %s' %(properties.get_flavor()) - print 'Service Interfaces:' - for item in properties.get_interface_type(): - print ' %s' %(item.get_service_interface_type()) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - print ' %s' %(item['fq_name'][1]) - - def add(self, name, mode, type, image, flavor, interface_type, - scale = None): - obj = vnc_api.ServiceTemplate(name = name) - properties = vnc_api.ServiceTemplateType(service_mode = mode, - service_type = type, image_name = image, flavor = flavor, - ordered_interfaces = True, availability_zone_enable = True) - if scale: - properties.set_service_scaling(scale) - for item in interface_type: - if (mode == 'transparent') and \ - ((item == 'left') or (item == 'right')): - shared_ip = True - elif (mode == 'in-network') and (item == 'left'): - shared_ip = True - else: - shared_ip = False - type = vnc_api.ServiceTemplateInterfaceType( - service_interface_type = item, - shared_ip = shared_ip, - static_route_enable = True) - properties.add_interface_type(type) - else: - for item in interface_type: - type = vnc_api.ServiceTemplateInterfaceType( - service_interface_type = item, - static_route_enable = True) - properties.add_interface_type(type) - obj.set_service_template_properties(properties) - try: - self.vnc.service_template_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def delete(self, name): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - try: - self.vnc.service_template_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigServiceInstance(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.service_instances_list()['service-instances'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.service_instance_read(id = item['uuid']) - - def obj_show(self, obj): - print 'Service Instance' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - - def show(self, name): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def add(self, name, template, network_list, - auto_policy = None, scale_max = None): - obj = vnc_api.ServiceInstance(name = name, parent_obj = self.tenant) - properties = vnc_api.ServiceInstanceType(auto_policy = auto_policy) - for net in network_list: - net_name = None - net_route = None - net_auto = False - tenant_name = self.tenant.name - for arg in net.split(','): - arg_name = arg.split('=')[0] - arg_val = arg.split('=')[1] - if (arg_name == 'tenant'): - tenant_name = arg_val - elif (arg_name == 'network'): - if (arg_val == 'auto'): - net_auto = True - else: - net_name = arg_val - elif (arg_name == 'route'): - net_route = arg_val - if net_auto: - net_fq_name = None - else: - net_fq_name = 'default-domain:%s:%s' %(tenant_name, net_name) - interface = vnc_api.ServiceInstanceInterfaceType( - virtual_network = net_fq_name) - if net_route: - route = vnc_api.RouteType(prefix = net_route) - route_table = vnc_api.RouteTableType() - route_table.add_route(route) - interface.set_static_routes(route_table) - properties.add_interface_list(interface) - - if scale_max: - scale = vnc_api.ServiceScaleOutType( - max_instances = int(scale_max), - auto_scale = True) - else: - scale = vnc_api.ServiceScaleOutType() - properties.set_scale_out(scale) - - obj.set_service_instance_properties(properties) - try: - template = self.vnc.service_template_read( - fq_name = ['default-domain', template]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - obj.set_service_template(template) - try: - self.vnc.service_instance_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - def delete(self, name): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - try: - self.vnc.service_instance_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigImage(): - def __init__(self, client): - self.nova = client.nova - - def obj_list(self): - list = self.nova.images.list() - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item.name == name): - return item - - def obj_show(self, obj): - print 'Image' - print 'Name: %s' %(obj.name) - print 'UUID: %s' %(obj.id) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - print ' %s' %(item.name) - - def add(self, name): - pass - def delete(self, name): - pass - - -class ConfigFlavor(): - def __init__(self, client): - self.nova = client.nova - - def obj_list(self): - list = self.nova.flavors.list() - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item.name == name): - return item - - def obj_show(self, obj): - print 'Flavor' - print 'Name: %s' %(obj.name) - print 'UUID: %s' %(obj.id) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - print ' %s' %(item.name) - - def add(self, name): - pass - def delete(self, name): - pass - - -class ConfigVirtualMachine(): - def __init__(self, client): - self.vnc = client.vnc - self.nova = client.nova - self.tenant = client.tenant - - def obj_list(self): - list = self.nova.servers.list() - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item.name == name): - return item - - def obj_show(self, obj): - print 'Virtual Machine' - print 'Name: %s' %(obj.name) - print 'UUID: %s' %(obj.id) - print 'Status: %s' %(obj.status) - print 'Addresses:' - for item in obj.addresses.keys(): - print ' %s %s' %(obj.addresses[item][0]['addr'], item) - - def show(self, name): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - print ' %s' %(item.name) - - def add(self, name, image, flavor, network, node = None, user_data = None, - wait = None): - try: - image_obj = self.nova.images.find(name = image) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - try: - flavor_obj = self.nova.flavors.find(name = flavor) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - - networks = [] - net_list = self.vnc.virtual_networks_list()['virtual-networks'] - for item in network: - for vn in net_list: - if (vn['fq_name'][1] == self.tenant.name) and \ - (vn['fq_name'][2] == item): - networks.append({'net-id': vn['uuid']}) - break - else: - print 'ERROR: Network %s is not found!' %(item) - return - - #if node: - # zone = self.nova.availability_zones.list()[1] - # for item in zone.hosts.keys(): - # if (item == node): - # break - # else: - # print 'ERROR: Node %s is not found!' %(name) - # return - - try: - vm = self.nova.servers.create(name = name, image = image_obj, - flavor = flavor_obj, availability_zone = node, - nics = networks, userdata = user_data) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - - if wait: - timeout = 12 - while timeout: - time.sleep(3) - vm = self.nova.servers.get(vm.id) - if vm.status != 'BUILD': - print 'VM %s is %s' %(vm.name, vm.status) - break - timeout -= 1 - - def delete(self, name): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - self.nova.servers.delete(obj.id) - - -class ConfigRouteTable(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.route_tables_list()['route-tables'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.route_table_read(id = item['uuid']) - - def obj_show(self, obj): - print 'Route Table' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - routes = obj.get_routes() - if not routes: - return - for item in routes.get_route(): - print ' %s next-hop %s' %(item.get_prefix(), item.get_next_hop()) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def route_add(self, obj, route): - routes = obj.get_routes() - if not routes: - routes = vnc_api.RouteTableType() - obj.set_routes(routes) - prefix = route.split(':')[0] - nh = 'default-domain:%s:%s' %(self.tenant.name, route.split(':')[1]) - routes.add_route(vnc_api.RouteType(prefix = prefix, next_hop = nh)) - - def route_del(self, obj, prefix): - routes = obj.get_routes() - if not routes: - return - for item in routes.get_route(): - if (item.get_prefix() == prefix): - routes.delete_route(item) - - def add(self, name, route = None): - create = False - obj = self.obj_get(name) - if not obj: - obj = vnc_api.RouteTable(name = name, parent_obj = self.tenant) - create = True - if route: - for item in route: - self.route_add(obj, item) - if create: - try: - self.vnc.route_table_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - self.vnc.route_table_update(obj) - - def delete(self, name, route = None): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - if route: - for item in route: - self.route_del(obj, item) - self.vnc.route_table_update(obj) - else: - try: - self.vnc.route_table_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigInterfaceRouteTable(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.interface_route_tables_list()['interface-route-tables'] - return list - - def obj_get(self, name): - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name) and \ - (item['fq_name'][2] == name): - return self.vnc.interface_route_table_read(id = item['uuid']) - - def obj_show(self, obj): - print 'Interface Route Table' - print 'Name: %s' %(obj.get_fq_name()) - print 'UUID: %s' %(obj.uuid) - routes = obj.get_interface_route_table_routes() - if not routes: - return - for item in routes.get_route(): - print ' %s' %(item.get_prefix()) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj) - else: - for item in self.obj_list(): - if (item['fq_name'][1] == self.tenant.name): - print ' %s' %(item['fq_name'][2]) - - def route_add(self, obj, prefix): - routes = obj.get_interface_route_table_routes() - if not routes: - routes = vnc_api.RouteTableType() - routes.add_route(vnc_api.RouteType(prefix = prefix)) - obj.set_interface_route_table_routes(routes) - - def route_del(self, obj, prefix): - routes = obj.get_interface_route_table_routes() - if not routes: - return - for item in routes.get_route(): - if (item.get_prefix() == prefix): - routes.delete_route(item) - obj.set_interface_route_table_routes(routes) - - def add(self, name, route = None): - create = False - obj = self.obj_get(name) - if not obj: - obj = vnc_api.InterfaceRouteTable(name = name, - parent_obj = self.tenant) - create = True - if route: - for item in route: - self.route_add(obj, item) - if create: - try: - self.vnc.interface_route_table_create(obj) - except Exception as e: - print 'ERROR: %s' %(str(e)) - else: - self.vnc.interface_route_table_update(obj) - - def delete(self, name, route = None): - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - if route: - for item in route: - self.route_del(obj, item) - self.vnc.interface_route_table_update(obj) - else: - try: - self.vnc.interface_route_table_delete(id = obj.uuid) - except Exception as e: - print 'ERROR: %s' %(str(e)) - - -class ConfigVmInterface(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - self.nova = client.nova - - def obj_list(self, vm_id = None): - list = [] - if vm_id: - vm = self.vnc.virtual_machine_read(id = vm_id) - if_ref_list = vm.get_virtual_machine_interface_back_refs() - for if_ref in if_ref_list: - if_obj = self.vnc.virtual_machine_interface_read( - id = if_ref['uuid']) - vn_name = if_obj.get_virtual_network_refs()[0]['to'][2] - list.append({'name':vn_name, 'uuid':if_ref['uuid'], - 'obj':if_obj}) - else: - for vm_nova in self.nova.servers.list(): - try: - vm = self.vnc.virtual_machine_read(id = vm_nova.id) - except Exception as e: - print 'ERROR: %s' %(str(e)) - continue - if_ref_list = vm.get_virtual_machine_interface_back_refs() - for if_ref in if_ref_list: - if_obj = self.vnc.virtual_machine_interface_read( - id = if_ref['uuid']) - vn_name = if_obj.get_virtual_network_refs()[0]['to'][2] - list.append({'name':'%s:%s' %(vm_nova.name, vn_name), - 'uuid':if_ref['uuid'], 'obj':if_obj}) - return list - - def obj_get(self, name, vm_id = None): - list = self.obj_list(vm_id) - for item in list: - if (item['name'] == name): - return item['obj'] - - def prop_mac_show(self, obj): - print '[P] MAC addresses:' - mac = obj.get_virtual_machine_interface_mac_addresses() - if not mac: - return - for item in mac.get_mac_address(): - print ' %s' %(item) - - def prop_prop_show(self, obj): - prop = obj.get_virtual_machine_interface_properties() - if not prop: - return - print '[P] Service interface type: %s' \ - %(prop.get_service_interface_type()) - print '[P] Interface mirror: %s' %(prop.get_interface_mirror()) - - def ref_sg_show(self, obj): - print '[R] Security groups:' - refs = obj.get_security_group_refs() - if refs: - for item in obj.get_security_group_refs(): - print ' %s' %(item['to'][2]) - - def ref_net_show(self, obj): - print '[R] Virtual networks:' - for item in obj.get_virtual_network_refs(): - print ' %s' %(item['to'][2]) - - def ref_irt_show(self, obj): - print '[R] Interface route tables:' - list = obj.get_interface_route_table_refs() - if list: - for item in list: - print ' %s' %(item['to'][2]) - - def back_ref_ip_show(self, obj): - print '[BR] Instance IPs:' - list = obj.get_instance_ip_back_refs() - if not list: - return - for item in list: - ip = self.vnc.instance_ip_read(id = item['uuid']) - print ' %s' %(ip.get_instance_ip_address()) - - def back_ref_fip_show(self, obj): - print '[BR] Floating IPs:' - list = obj.get_floating_ip_back_refs() - if not list: - return - for item in list: - ip = self.vnc.floating_ip_read(id = item['uuid']) - print ' %s' %(ip.get_floating_ip_address()) - - def obj_show(self, obj, name): - print 'Virtual Machine Interface' - print 'Name: %s' %(name) - print 'UUID: %s' %(obj.uuid) - self.prop_mac_show(obj) - self.prop_prop_show(obj) - self.ref_sg_show(obj) - self.ref_net_show(obj) - self.ref_irt_show(obj) - self.back_ref_ip_show(obj) - self.back_ref_fip_show(obj) - - def show(self, name = None): - if name: - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - self.obj_show(obj, name) - else: - for item in self.obj_list(): - print ' %s' %(item['name']) - - def sg_add(self, obj, sg): - try: - sg_obj = self.vnc.security_group_read( - fq_name = ['default-domain', self.tenant.name, sg]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.add_security_group(sg_obj) - - def addr_add(self, obj, addr): - id = str(uuid.uuid4()) - ip_obj = vnc_api.InstanceIp(name = id, instance_ip_address = addr) - ip_obj.uuid = id - ip_obj.add_virtual_machine_interface(obj) - vn_id = obj.get_virtual_network_refs()[0]['uuid'] - vn_obj = self.vnc.virtual_network_read(id = vn_id) - ip_obj.add_virtual_network(vn_obj) - self.vnc.instance_ip_create(ip_obj) - - def irt_add(self, obj, irt): - try: - table_obj = self.vnc.interface_route_table_read( - fq_name = ['default-domain', self.tenant.name, irt]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.add_interface_route_table(table_obj) - - def fip_add(self, obj, fip_pool, fip): - pool_name = fip_pool.split(':') - pool_name.insert(0, 'default-domain') - try: - pool_obj = self.vnc.floating_ip_pool_read(fq_name = pool_name) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - id = str(uuid.uuid4()) - fip_obj = vnc_api.FloatingIp(name = id, parent_obj = pool_obj) - fip_obj.uuid = id - if (fip != 'any'): - fip_obj.set_floating_ip_address(fip) - fip_obj.add_project(self.tenant) - fip_obj.add_virtual_machine_interface(obj) - self.vnc.floating_ip_create(fip_obj) - self.tenant.add_floating_ip_pool(pool_obj) - self.vnc.project_update(self.tenant) - - def add(self, name, sg = None, irt = None, addr = None, - fip_pool = None, fip = None): - update = False - obj = self.obj_get(name) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - if sg: - self.sg_add(obj, sg) - update = True - if irt: - self.irt_add(obj, irt) - update = True - if addr: - self.addr_add(obj, addr) - update = True - if fip and fip_pool: - self.fip_add(obj, fip_pool, fip) - update = True - if update: - self.vnc.virtual_machine_interface_update(obj) - - def sg_del(self, obj, sg): - try: - sg_obj = self.vnc.security_group_read( - fq_name = ['default-domain', self.tenant.name, sg]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.del_security_group(sg_obj) - - def irt_del(self, obj, irt): - try: - table_obj = self.vnc.interface_route_table_read( - fq_name = ['default-domain', self.tenant.name, irt]) - except Exception as e: - print 'ERROR: %s' %(str(e)) - return - obj.del_interface_route_table(table_obj) - - def addr_del(self, obj, addr): - ip_list = obj.get_instance_ip_back_refs() - for ip in ip_list: - ip_obj = self.vnc.instance_ip_read(id = ip['uuid']) - if (ip_obj.get_instance_ip_address() == addr): - self.vnc.instance_ip_delete(id = ip_obj.uuid) - break - else: - print 'ERROR: IP address %s is not found!' %(addr) - - def fip_del(self, obj): - list = obj.get_floating_ip_back_refs() - if not list: - return - for item in list: - ip = self.vnc.floating_ip_delete(id = item['uuid']) - - def delete(self, name, sg = None, irt = None, addr = None, - fip = None, vm_id = None): - update = False - obj = self.obj_get(name, vm_id) - if not obj: - print 'ERROR: Object %s is not found!' %(name) - return - if sg: - self.sg_del(obj, sg) - update = True - if irt: - self.irt_del(obj, irt) - update = True - if addr: - self.addr_del(obj, addr) - update = True - if fip: - self.fip_del(obj) - update = True - if update: - self.vnc.virtual_machine_interface_update(obj) - - -class ConfigGlobalVrouter(): - def __init__(self, client): - self.vnc = client.vnc - self.tenant = client.tenant - - def obj_list(self): - list = self.vnc.interface_route_tables_list()['interface-route-tables'] - return list - - def obj_get(self, name): - obj = self.vnc.global_vrouter_config_read( - fq_name = ['default-global-system-config', - 'default-global-vrouter-config']) - return obj - - def obj_show(self, obj): - pass - - def show(self, name = None): - obj = self.obj_get('dummy') - print 'Link Local Service' - for item in obj.get_linklocal_services().get_linklocal_service_entry(): - print ' %s %s:%s %s:%s' %(item.get_linklocal_service_name(), - item.get_linklocal_service_ip(), - item.get_linklocal_service_port(), - item.get_ip_fabric_service_ip()[0], - item.get_ip_fabric_service_port()) - - def add(self, name, link_local_addr, fabric_addr): - obj = self.obj_get('dummy') - list = obj.get_linklocal_services().get_linklocal_service_entry() - list.append(vnc_api.LinklocalServiceEntryType( - linklocal_service_name = name, - linklocal_service_ip = link_local_addr.split(':')[0], - linklocal_service_port = int(link_local_addr.split(':')[1]), - ip_fabric_service_ip = [fabric_addr.split(':')[0]], - ip_fabric_service_port = int(fabric_addr.split(':')[1]))) - self.vnc.global_vrouter_config_update(obj) - - def delete(self, name): - obj = self.obj_get('dummy') - list = obj.get_linklocal_services().get_linklocal_service_entry() - for item in list: - if (item.get_linklocal_service_name() == name): - list.remove(item) - break - self.vnc.global_vrouter_config_update(obj) - -class ConfigClient(): - def __init__(self, username, password, tenant, region, api_server): - self.vnc = vnc_api.VncApi(username = username, password = password, - tenant_name = tenant, api_server_host = api_server) - if config_nova: - self.nova = novaclient.v1_1.client.Client(username = username, - api_key = password, project_id = tenant, - region_name = region, - auth_url = 'http://%s:35357/v2.0' %(api_server)) - else: - self.nova = None - self.tenant = self.vnc.project_read( - fq_name = ['default-domain', tenant]) - |