Skip to content

Commit

Permalink
Add network metadata support for vmware metadata service
Browse files Browse the repository at this point in the history
- Added parsing of vmware metadata as NetworkDetailsV2
- Using NoCloudNetworkConfigV1Parser for parsing the data
- Functionality is analog to cloud-init
  • Loading branch information
Eifoen committed Jan 2, 2024
1 parent 07cae6e commit 27aeec5
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions cloudbaseinit/metadata/services/vmwareguestinfoservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
from cloudbaseinit.metadata.services import base
from cloudbaseinit.osutils import factory as osutils_factory
from cloudbaseinit.utils import serialization
from cloudbaseinit.metadata.services.nocloudservice import NoCloudNetworkConfigV1Parser

CONF = cloudbaseinit_conf.CONF
LOG = oslo_logging.getLogger(__name__)
Expand Down Expand Up @@ -151,3 +152,23 @@ def get_admin_username(self):

def get_admin_password(self):
return self._meta_data.get('admin-password')

def get_network_details_v2(self):
try:
raw_data = self._meta_data.get('network-config', decode=True)
network_data = serialization.parse_json_yaml(raw_data)
except base.NotExistingMetadataException:
LOG.info("V2 network metadata not found")
return
except serialization.YamlParserConfigError:
LOG.exception("V2 network metadata could not be deserialized")
return

network_data_version = network_data.get('version')
if network_data_version != 1:
LOG.error("Network data version '%s' is not supported",
network_data_version)
return

network_config_parser = NoCloudNetworkConfigV1Parser()
return network_config_parser.parse(network_data.get("config"))

0 comments on commit 27aeec5

Please sign in to comment.