diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py
index 1f99bb16c8cd..17d7c56f5ee1 100644
--- a/src/sonic-config-engine/minigraph.py
+++ b/src/sonic-config-engine/minigraph.py
@@ -528,6 +528,7 @@ def parse_meta(meta, hname):
erspan_dst = []
deployment_id = None
region = None
+ cloudtype = None
device_metas = meta.find(str(QName(ns, "Devices")))
for device in device_metas.findall(str(QName(ns1, "DeviceMetadata"))):
if device.find(str(QName(ns1, "Name"))).text.lower() == hname.lower():
@@ -552,7 +553,9 @@ def parse_meta(meta, hname):
deployment_id = value
elif name == "Region":
region = value
- return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region
+ elif name == "CloudType":
+ cloudtype = value
+ return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype
def parse_linkmeta(meta, hname):
@@ -797,6 +800,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
bgp_peers_with_range = None
deployment_id = None
region = None
+ cloudtype = None
hostname = None
linkmetas = {}
@@ -832,7 +836,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
elif child.tag == str(QName(ns, "UngDec")):
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname)
elif child.tag == str(QName(ns, "MetadataDeclaration")):
- (syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region) = parse_meta(child, hostname)
+ (syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype) = parse_meta(child, hostname)
elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
linkmetas = parse_linkmeta(child, hostname)
elif child.tag == str(QName(ns, "DeviceInfos")):
@@ -861,6 +865,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None):
'bgp_asn': bgp_asn,
'deployment_id': deployment_id,
'region': region,
+ 'cloudtype': cloudtype,
'docker_routing_config_mode': docker_routing_config_mode,
'hostname': hostname,
'hwsku': hwsku,
diff --git a/src/sonic-config-engine/tests/simple-sample-graph-metadata.xml b/src/sonic-config-engine/tests/simple-sample-graph-metadata.xml
index db103e13480d..4bde42cdda3a 100644
--- a/src/sonic-config-engine/tests/simple-sample-graph-metadata.xml
+++ b/src/sonic-config-engine/tests/simple-sample-graph-metadata.xml
@@ -220,6 +220,11 @@
usfoo
+
+ CloudType
+
+ Public
+
ErspanDestinationIpv4
diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py
index 816575f84171..66ca26f3250e 100644
--- a/src/sonic-config-engine/tests/test_cfggen.py
+++ b/src/sonic-config-engine/tests/test_cfggen.py
@@ -58,6 +58,11 @@ def test_minigraph_region(self):
output = self.run_script(argument)
self.assertEqual(output.strip(), 'usfoo')
+ def test_minigraph_cloudtype(self):
+ argument = '-v "DEVICE_METADATA[\'localhost\'][\'cloudtype\']" -m "' + self.sample_graph_metadata + '"'
+ output = self.run_script(argument)
+ self.assertEqual(output.strip(), 'Public')
+
def test_print_data(self):
argument = '-m "' + self.sample_graph + '" --print-data'
output = self.run_script(argument)