def subnet_to_dict(subnet): result = dict( id=subnet.id, name=subnet.name, provisioning_state=subnet.provisioning_state, address_prefix=subnet.address_prefix, address_prefixes=subnet.address_prefixes, network_security_group=dict(), route_table=dict(), private_endpoint_network_policies=subnet.private_endpoint_network_policies, private_link_service_network_policies=subnet.private_link_service_network_policies ) if subnet.network_security_group: id_keys = azure_id_to_dict(subnet.network_security_group.id) result['network_security_group']['id'] = subnet.network_security_group.id result['network_security_group']['name'] = id_keys['networkSecurityGroups'] result['network_security_group']['resource_group'] = id_keys['resourceGroups'] if subnet.route_table: id_keys = azure_id_to_dict(subnet.route_table.id) result['route_table']['id'] = subnet.route_table.id result['route_table']['name'] = id_keys['routeTables'] result['route_table']['resource_group'] = id_keys['resourceGroups'] if subnet.service_endpoints: result['service_endpoints'] = [{'service': item.service, 'locations': item.locations or []} for item in subnet.service_endpoints] if subnet.delegations: result['delegations'] = [{'name': item.name, 'serviceName': item.service_name, 'actions': item.actions or []} for item in subnet.delegations] return result
def nic_to_dict(nic): ip_configurations = [ dict(name=config.name, private_ip_address=config.private_ip_address, private_ip_allocation_method=config.private_ip_allocation_method, primary=config.primary, load_balancer_backend_address_pools=([ item.id for item in config.load_balancer_backend_address_pools ] if config.load_balancer_backend_address_pools else None), public_ip_address=config.public_ip_address.id if config.public_ip_address else None, public_ip_allocation_method=config.public_ip_address. public_ip_allocation_method if config.public_ip_address else None, application_security_groups=([ asg.id for asg in config.application_security_groups ] if config.application_security_groups else None)) for config in nic.ip_configurations ] config = nic.ip_configurations[0] if len( nic.ip_configurations) > 0 else None subnet_dict = azure_id_to_dict( config.subnet.id) if config and config.subnet else None subnet = subnet_dict.get('subnets') if subnet_dict else None virtual_network = dict( resource_group=subnet_dict.get('resourceGroups'), name=subnet_dict.get('virtualNetworks')) if subnet_dict else None return dict( id=nic.id, resource_group=azure_id_to_dict(nic.id).get('resourceGroups'), name=nic.name, subnet=subnet, virtual_network=virtual_network, location=nic.location, tags=nic.tags, security_group=nic.network_security_group.id if nic.network_security_group else None, dns_settings=dict( dns_servers=nic.dns_settings.dns_servers, applied_dns_servers=nic.dns_settings.applied_dns_servers, internal_dns_name_label=nic.dns_settings.internal_dns_name_label, internal_fqdn=nic.dns_settings.internal_fqdn), ip_configurations=ip_configurations, mac_address=nic.mac_address, enable_ip_forwarding=nic.enable_ip_forwarding, provisioning_state=nic.provisioning_state, enable_accelerated_networking=nic.enable_accelerated_networking, dns_servers=nic.dns_settings.dns_servers, )
def nic_to_dict(nic): ip_configurations = [ dict(name=config.name, private_ip_address=config.private_ip_address, private_ip_allocation_method=config.private_ip_allocation_method, subnet=subnet_to_dict(config.subnet), primary=config.primary, load_balancer_backend_address_pools=([ item.id for item in config.load_balancer_backend_address_pools ] if config.load_balancer_backend_address_pools else None), public_ip_address=dict( id=config.public_ip_address.id, name=azure_id_to_dict( config.public_ip_address.id).get('publicIPAddresses'), public_ip_allocation_method=config.public_ip_address. public_ip_allocation_method) if config.public_ip_address else None, application_security_groups=([ asg.id for asg in config.application_security_groups ] if config.application_security_groups else None)) for config in nic.ip_configurations ] return dict( id=nic.id, name=nic.name, type=nic.type, location=nic.location, tags=nic.tags, network_security_group=dict( id=nic.network_security_group.id, name=azure_id_to_dict( nic.network_security_group.id).get('networkSecurityGroups')) if nic.network_security_group else None, dns_settings=dict( dns_servers=nic.dns_settings.dns_servers, applied_dns_servers=nic.dns_settings.applied_dns_servers, internal_dns_name_label=nic.dns_settings.internal_dns_name_label, internal_fqdn=nic.dns_settings.internal_fqdn), ip_configurations=ip_configurations, ip_configuration=ip_configurations[0] if len(ip_configurations) == 1 else None, # for compatible issue, keep this field mac_address=nic.mac_address, enable_ip_forwarding=nic.enable_ip_forwarding, provisioning_state=nic.provisioning_state, etag=nic.etag, enable_accelerated_networking=nic.enable_accelerated_networking, dns_servers=nic.dns_settings.dns_servers, )
def route_to_dict(route): id_dict = azure_id_to_dict(route.id) return dict(id=route.id, name=route.name, resource_group=id_dict.get('resourceGroups'), route_table_name=id_dict.get('routeTables'), address_prefix=route.address_prefix, next_hop_type=_camel_to_snake(route.next_hop_type), next_hop_ip_address=route.next_hop_ip_address)
def instance_to_dict(table): return dict( id=table.id, name=table.name, resource_group=azure_id_to_dict(table.id).get('resourceGroups'), location=table.location, routes=[route_to_dict(i) for i in table.routes] if table.routes else [], disable_bgp_route_propagation=table.disable_bgp_route_propagation, tags=table.tags)
def parse_nsg(self): nsg = self.security_group resource_group = self.resource_group if isinstance(self.security_group, dict): nsg = self.security_group.get('name') resource_group = self.security_group.get('resource_group', self.resource_group) id = format_resource_id(val=nsg, subscription_id=self.subscription_id, namespace='Microsoft.Network', types='networkSecurityGroups', resource_group=resource_group) name = azure_id_to_dict(id).get('name') return dict(id=id, name=name)
def subnet_to_dict(subnet): dic = azure_id_to_dict(subnet.id) return dict(id=subnet.id, virtual_network_name=dic.get('virtualNetworks'), resource_group=dic.get('resourceGroups'), name=dic.get('subnets'))