3 \¼meÈã@s€ddlZddlmZmZmZmZddlmZdddddd d œZee ee e ffd œd d „Z e d œdd„Z ee d œdd„Z dS)éN)ÚAnyÚDictÚOptionalÚUnion)ÚdmiZallow_local_stageZallow_init_stageZ allow_dhcpZ allow_ipv4Z allow_ipv6Zpreferred_mac_prefixes)ZalsZaisZdhcpZv4Zv6Úpmp)ÚreturncCsrtjdƒ}i}|s|SxVtjd|ƒD]F\}}}|tkr$|dkrLtt|ƒƒ}n|dkr^|jdƒ}||t|<q$W|S)zH Parses flags from dmi data and updates self.ds_cfg accordingly zbaseboard-serial-numberz([a-z0-9]+)=(.*?)(;|$)Z01rú,)rÚ read_dmi_dataÚreÚfindallÚDMI_OVERRIDE_MAPÚboolÚintÚsplit)Z dmi_flagsÚretÚkeyÚvalueÚ_©rú/usr/lib/python3.6/akamai.pyÚget_dmi_configs  rcCstjdƒ}|dkS)zo Reads the BIOS vendor from dmi data to determine if we are running in the Akamai Connected Cloud. zsystem-manufacturerÚLinodeÚAkamai)rr)rr )ZvendorrrrÚ is_on_akamai(s rcCs tjdƒS)zo Returns the instance id read from dmi data without requiring the metadata service to be reachable zsystem-serial-number)rr rrrrÚget_local_instance_id1sr)r ZtypingrrrrZ cloudinitrr ÚstrrrrrrrrrÚs