U sl^u@sddlZddlZddlZddlmZddlmZmZedZ e ej dej eeedddZGd d d ZGd d d eZGd ddeZGdddeZGdddeZGdddeZdS)N)List)ABCabstractmethodzinventory.mappersZ LOG_LEVEL)tagstag_namereturncstfdd|DdS)Nc3s*|]"}|dkr|dVqdS)keyvalueN)casefold).0tagrH/Users/csantosb/Documents/Writing/inventory/rpt/src/inventory/mappers.py sz!_get_tag_value..)next)rrrr r_get_tag_value src@s6eZdZddddddddddddddddddZdS) InventoryDataN asset_type unique_id ip_addresslocation is_virtualauthenticated_scan_planneddns_name mac_addressbaseline_confighardware_model is_public network_idownersoftware_product_namesoftware_vendorcCs^||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ ||_dSNr)selfrrrrrrrrrrr r!r"r#r$rrr__init__szInventoryData.__init__)__name__ __module__ __qualname__r'rrrrrs rc@s^eZdZeeeedddZeeedddZ ee ddd Z eeedd d Z d S) DataMapperconfig_resourcercCsdSr%rr&r-rrr _do_mapping%szDataMapper._do_mappingrcCsdSr%rr&rrr_get_supported_resource_type)sz'DataMapper._get_supported_resource_type) resource_typercCs ||kSr%)r2)r&r3rrrcan_map-szDataMapper.can_mapcCsT||dsgSg}td|d|||tdt|d|S)N resourceTypezmapping zmapping resulted in a total of z rows)r4_loggerdebugextendr/len)r&r-Z mapped_datarrrmap0szDataMapper.mapN) r(r)r*rdictrrr/strr2boolr4r:rrrrr+$s r+c@s2eZdZeedddZeeedddZdS) EC2DataMapperr0cCsdgS)NzAWS::EC2::Instancerr1rrrr2?sz*EC2DataMapper._get_supported_resource_typer,cCsg}|ddD]}|dD]}d|dd|ddd|d|dd |dd |dd t|d d d }|dd}r||d<d|d<n|dd|d<d|d<|tf|d|krt|}|dd|d<|tf|qq|S)N configurationZnetworkInterfacesZprivateIpAddressesZEC2Z instanceIdZprivateIpAddressYesZ macAddressZimageIdZ instanceTypevpcIdrr") rrrrrrrrr!r"Z publicDnsNamerr ZprivateDnsNameNoZ associationZpublicIpr)rgetappendrcopydeepcopy)r&r-Z ec2_data_listZnic ipAddressZec2_dataZpublic_dns_namerrrr/Bs2         zEC2DataMapper._do_mappingN r(r)r*rr<r2r;rr/rrrrr>>sr>c@sVeZdZeedddZeedddZeeeddd Zeee dd d Z d S) ElbDataMapperr0cCsddgS)N'AWS::ElasticLoadBalancing::LoadBalancerz)AWS::ElasticLoadBalancingV2::LoadBalancerrr1rrrr2esz*ElbDataMapper._get_supported_resource_typer,cCs&|ddkrdSd|ddSdS)Nr5rJzLoad Balancer-ClassiczLoad Balancer-r?typerr.rrr_get_asset_type_namehs z"ElbDataMapper._get_asset_type_name)availabilityZonesrcCsBg}|D]4}|d}rdd|DD]}||dq(q|S)NZloadBalancerAddressescss|]}d|kr|VqdS)rGNr)r load_balancer_addressrrrrssz2ElbDataMapper._get_ip_addresses..rG)rCrD)r&rM ip_addressesZavailabilityZoneZload_balancer_addressesrNrrr_get_ip_addressesns zElbDataMapper._get_ip_addressesc Csg}|||ddd|dddkr*dndd|dkrD|ddn |ddt|d d d }t||dd }d kr|D]&}t|}||d<|tf|qn|tf||S)Narnr@r?schemezinternet-facingrBrAZvpcidrr")rrrrr r!r"rMrr)rLrr9rPrErFrDr)r&r-Z data_listdatarOrrrrr/xs "   zElbDataMapper._do_mappingN) r(r)r*rr<r2r;rLrPrr/rrrrrIds rIc@s2eZdZeedddZeeedddZdS) RdsDataMapperr0cCsdgS)NzAWS::RDS::DBInstancerr1rrrr2sz*RdsDataMapper._get_supported_resource_typer,c Csd|ddd|ddrdnd|dd|dd d |dd d |dkr`|dd d ndt|ddd }tf|gS)NZRDSrQr@AWSr?ZpubliclyAccessiblerBZdBInstanceClassZengine-Z engineVersionZ dBSubnetGrouprArrr") rrrr$r rr#r!r"rrr&r-rSrrrr/s   zRdsDataMapper._do_mappingNrHrrrrrTsrTc@s2eZdZeedddZeeedddZdS)DynamoDbTableDataMapperr0cCsdgS)NzAWS::DynamoDB::Tablerr1rrrr2sz4DynamoDbTableDataMapper._get_supported_resource_typer,c Cs.d|dddddt|ddd}tf|gS) NZDynamoDBrQr@rBrUrr")rrrr r$r#r"rWrXrrrr/s z#DynamoDbTableDataMapper._do_mappingNrHrrrrrYsrY)rEloggingostypingrabcrr getLoggerr6setLevelenvironrCINFOr;r<rrr+r>rIrTrYrrrrs  &,