/snap/core18/2999/usr/lib/python3/dist-packages/cloudinit/sources
NameSizeModeActions
azure/-0755rm
helpers/-0755rm
__pycache__/-0755rm
DataSourceAliYun.py22210644editdlrm
DataSourceAltCloud.py84890644editdlrm
DataSourceAzure.py703290644editdlrm
DataSourceBigstep.py19640644editdlrm
DataSourceCloudSigma.py40960644editdlrm
DataSourceCloudStack.py100900644editdlrm
DataSourceConfigDrive.py112750644editdlrm
DataSourceDigitalOcean.py39040644editdlrm
DataSourceEc2.py366700644editdlrm
DataSourceExoscale.py91050644editdlrm
DataSourceGCE.py122510644editdlrm
DataSourceHetzner.py55370644editdlrm
DataSourceIBMCloud.py143910644editdlrm
DataSourceLXD.py175990644editdlrm
DataSourceMAAS.py147350644editdlrm
DataSourceNoCloud.py126760644editdlrm
DataSourceNone.py13930644editdlrm
DataSourceNWCS.py47680644editdlrm
DataSourceOpenNebula.py163620644editdlrm
DataSourceOpenStack.py107130644editdlrm
DataSourceOracle.py150690644editdlrm
DataSourceOVF.py107240644editdlrm
DataSourceRbxCloud.py80210644editdlrm
DataSourceScaleway.py96930644editdlrm
DataSourceSmartOS.py349090644editdlrm
DataSourceUpCloud.py56860644editdlrm
DataSourceVMware.py334850644editdlrm
DataSourceVultr.py42790644editdlrm
__init__.py417710644editdlrm
Edit: /snap/core18/2999/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceCloudSigma.py (4096B)
# Copyright (C) 2014 CloudSigma # # Author: Kiril Vladimiroff # # This file is part of cloud-init. See LICENSE file for license information. import re from base64 import b64decode from cloudinit import dmi from cloudinit import log as logging from cloudinit import sources from cloudinit.sources import DataSourceHostname from cloudinit.sources.helpers.cloudsigma import SERIAL_PORT, Cepko LOG = logging.getLogger(__name__) class DataSourceCloudSigma(sources.DataSource): """ Uses cepko in order to gather the server context from the VM. For more information about CloudSigma's Server Context: http://cloudsigma-docs.readthedocs.org/en/latest/server_context.html """ dsname = "CloudSigma" def __init__(self, sys_cfg, distro, paths): self.cepko = Cepko() self.ssh_public_key = "" sources.DataSource.__init__(self, sys_cfg, distro, paths) def is_running_in_cloudsigma(self): """ Uses dmi data to detect if this instance of cloud-init is running in the CloudSigma's infrastructure. """ LOG.debug("determining hypervisor product name via dmi data") sys_product_name = dmi.read_dmi_data("system-product-name") if not sys_product_name: LOG.debug("system-product-name not available in dmi data") return False LOG.debug("detected hypervisor as %s", sys_product_name) return "cloudsigma" in sys_product_name.lower() def _get_data(self): """ Metadata is the whole server context and /meta/cloud-config is used as userdata. """ dsmode = None if not self.is_running_in_cloudsigma(): return False try: server_context = self.cepko.all().result server_meta = server_context["meta"] except Exception: # TODO: check for explicit "config on", and then warn # but since no explicit config is available now, just debug. LOG.debug("CloudSigma: Unable to read from serial port") return False self.dsmode = self._determine_dsmode( [server_meta.get("cloudinit-dsmode")] ) if dsmode == sources.DSMODE_DISABLED: return False base64_fields = server_meta.get("base64_fields", "").split(",") self.userdata_raw = server_meta.get("cloudinit-user-data", "") if "cloudinit-user-data" in base64_fields: self.userdata_raw = b64decode(self.userdata_raw) if "cloudinit" in server_context.get("vendor_data", {}): self.vendordata_raw = server_context["vendor_data"]["cloudinit"] self.metadata = server_context self.ssh_public_key = server_meta["ssh_public_key"] return True def _get_subplatform(self): """Return the subplatform metadata source details.""" return "cepko (%s)" % SERIAL_PORT def get_hostname(self, fqdn=False, resolve_ip=False, metadata_only=False): """ Cleans up and uses the server's name if the latter is set. Otherwise the first part from uuid is being used. """ if re.match(r"^[A-Za-z0-9 -_\.]+$", self.metadata["name"]): ret = self.metadata["name"][:61] else: ret = self.metadata["uuid"].split("-")[0] return DataSourceHostname(ret, False) def get_public_ssh_keys(self): return [self.ssh_public_key] def get_instance_id(self): return self.metadata["uuid"] # Legacy: Must be present in case we load an old pkl object DataSourceCloudSigmaNet = DataSourceCloudSigma # Used to match classes to dependencies. Since this datasource uses the serial # port network is not really required, so it's okay to load without it, too. datasources = [ (DataSourceCloudSigma, (sources.DEP_FILESYSTEM,)), ] def get_datasource_list(depends): """ Return a list of data sources that match this set of dependencies """ return sources.list_from_depends(depends, datasources) # vi: ts=4 expandtab