1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
# Copyright (C) 2015 Canonical Ltd.
# Copyright (C) 2015 VMware Inc.
#
# Author: Sankar Tanguturi <stanguturi@vmware.com>
#
# This file is part of cloud-init. See LICENSE file for license information.
from cloudinit.sources.helpers.vmware.imc.nic import Nic
class Config:
"""
Stores the Contents specified in the Customization
Specification file.
"""
CUSTOM_SCRIPT = "CUSTOM-SCRIPT|SCRIPT-NAME"
DNS = "DNS|NAMESERVER|"
DOMAINNAME = "NETWORK|DOMAINNAME"
HOSTNAME = "NETWORK|HOSTNAME"
MARKERID = "MISC|MARKER-ID"
PASS = "PASSWORD|-PASS"
RESETPASS = "PASSWORD|RESET"
SUFFIX = "DNS|SUFFIX|"
TIMEZONE = "DATETIME|TIMEZONE"
UTC = "DATETIME|UTC"
POST_GC_STATUS = "MISC|POST-GC-STATUS"
DEFAULT_RUN_POST_SCRIPT = "MISC|DEFAULT-RUN-POST-CUST-SCRIPT"
CLOUDINIT_META_DATA = "CLOUDINIT|METADATA"
CLOUDINIT_USER_DATA = "CLOUDINIT|USERDATA"
def __init__(self, configFile):
self._configFile = configFile
@property
def host_name(self):
"""Return the hostname."""
return self._configFile.get(Config.HOSTNAME, None)
@property
def domain_name(self):
"""Return the domain name."""
return self._configFile.get(Config.DOMAINNAME, None)
@property
def timezone(self):
"""Return the timezone."""
return self._configFile.get(Config.TIMEZONE, None)
@property
def utc(self):
"""Retrieves whether to set time to UTC or Local."""
return self._configFile.get(Config.UTC, None)
@property
def admin_password(self):
"""Return the root password to be set."""
return self._configFile.get(Config.PASS, None)
@property
def name_servers(self):
"""Return the list of DNS servers."""
res = []
cnt = self._configFile.get_count_with_prefix(Config.DNS)
for i in range(1, cnt + 1):
key = Config.DNS + str(i)
res.append(self._configFile[key])
return res
@property
def dns_suffixes(self):
"""Return the list of DNS Suffixes."""
res = []
cnt = self._configFile.get_count_with_prefix(Config.SUFFIX)
for i in range(1, cnt + 1):
key = Config.SUFFIX + str(i)
res.append(self._configFile[key])
return res
@property
def nics(self):
"""Return the list of associated NICs."""
res = []
nics = self._configFile["NIC-CONFIG|NICS"]
for nic in nics.split(","):
res.append(Nic(nic, self._configFile))
return res
@property
def reset_password(self):
"""Retreives if the root password needs to be reset."""
resetPass = self._configFile.get(Config.RESETPASS, "no")
resetPass = resetPass.lower()
if resetPass not in ("yes", "no"):
raise ValueError("ResetPassword value should be yes/no")
return resetPass == "yes"
@property
def marker_id(self):
"""Returns marker id."""
return self._configFile.get(Config.MARKERID, None)
@property
def custom_script_name(self):
"""Return the name of custom (pre/post) script."""
return self._configFile.get(Config.CUSTOM_SCRIPT, None)
@property
def post_gc_status(self):
"""Return whether to post guestinfo.gc.status VMX property."""
postGcStatus = self._configFile.get(Config.POST_GC_STATUS, "no")
postGcStatus = postGcStatus.lower()
if postGcStatus not in ("yes", "no"):
raise ValueError("PostGcStatus value should be yes/no")
return postGcStatus == "yes"
@property
def default_run_post_script(self):
"""
Return enable-custom-scripts default value if enable-custom-scripts
is absent in VM Tools configuration
"""
defaultRunPostScript = self._configFile.get(
Config.DEFAULT_RUN_POST_SCRIPT, "no"
)
defaultRunPostScript = defaultRunPostScript.lower()
if defaultRunPostScript not in ("yes", "no"):
raise ValueError("defaultRunPostScript value should be yes/no")
return defaultRunPostScript == "yes"
@property
def meta_data_name(self):
"""Return the name of cloud-init meta data."""
return self._configFile.get(Config.CLOUDINIT_META_DATA, None)
@property
def user_data_name(self):
"""Return the name of cloud-init user data."""
return self._configFile.get(Config.CLOUDINIT_USER_DATA, None)
# vi: ts=4 expandtab
|