def test_getNodesByNameFilter_default(dbm): installer = getfqdn() with dbm.session() as session: result = NodesDbHandler().getNodesByNameFilter(session, '%') assert result and \ isinstance(result, list) and \ installer in [node.name for node in result]
def test_getfqdn(): fqdn = socket.getfqdn() expected_fqdn = getfqdn() if '.' in fqdn: assert fqdn == expected_fqdn else: assert fqdn.split('.', 1)[0] == expected_fqdn.split('.', 1)[0]
def test_expand_nodespec_default(dbm): installer = getfqdn() with dbm.session() as session: result = NodesDbHandler().expand_nodespec(session, '*') # the default in 'expand_nodespec' is to include the installer assert result and isinstance(result, list) and \ installer in [node.name for node in result]
def main(): if os.path.exists('/root/.ssh/id_rsa.pub'): # Attempt to use RSA key first sshKeyType, sshKey, sshKeyName = readSshPublicKey( '/root/.ssh/id_rsa.pub') elif os.path.exists('/root/.ssh/id_dsa.pub'): sshKeyType, sshKey, sshKeyName = readSshPublicKey( '/root/.ssh/id_dsa.pub') else: # Create a default SSH key hostName = getfqdn() cmd = 'ssh-keygen -t rsa -N "" -C "root@%s" -f /root/.ssh/id_rsa' % ( hostName) p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) _stdout, _stderr = p.communicate() retval = p.wait() if retval != 0: sys.stdout.write('Error: ssh-keygen debug output:\n%s\n' % (_stdout)) sys.exit(1) sshKeyType, sshKey, sshKeyName = readSshPublicKey( '/root/.ssh/id_rsa.pub') if len(sys.argv) > 1 and sys.argv[1] == '--stdout': fp = sys.stdout else: fp = open( '/etc/puppetlabs/code/environments/production/modules/tortuga/manifests/compute' '/install_ssh_keys.pp', 'w') fp.write("""\ # DO NOT EDIT -- THIS FILE IS GENERATED DURING TORTUGA INSTALLATION class tortuga::compute::install_ssh_keys { """) if sshKeyType is not None: fp.write("""\ ssh_authorized_key { '%s': ensure => present, key => '%s', type => '%s', user => 'root' } """ % (sshKeyName if sshKeyName else 'root', sshKey, sshKeyType)) fp.write("}\n") fp.close()
def test_getNodesByNameFilter_without_installer(dbm): installer = getfqdn() with dbm.session() as session: result = NodesDbHandler().getNodesByNameFilter(session, '%', include_installer=False) assert result and \ isinstance(result, list) and \ installer not in [node.name for node in result]
def parseArgs(self, usage=None): self.addOption("--node", dest='nodeName', default=getfqdn(), help='Name of the node for which NII profile is being' ' generated') self.addOption("--installer", dest='installer', required=True, help='IP address or hostname (and optional port number)' ' of the installer node') self.addOption("--root-mount-point", dest='rootMountPoint', default='/', help='Root file system mount point') super().parseArgs(usage=usage)
def parseArgs(self, usage=None): nodeName = getfqdn() self.addOption("--node", dest='nodeName', default=nodeName, help='Name of the node for which status is being' ' updated') self.addOption('--status', dest='status', default='Installed', help='Updated node status') self.addOption('--boot-from', dest='bootFrom', default=1, help='Updated boot-from flag') super().parseArgs(usage=usage)
def __init__(self, logger, cmdline_options=None): self._cm = ConfigManager() self._logger = logger self._osObjectFactory = osUtility.getOsObjectFactory() self._settings = self.__load_settings(cmdline_options) self._settings['installer_software_profile'] = 'Installer' self._settings['installer_hardware_profile'] = 'Installer' self._settings['eulaAccepted'] = False self._settings['fqdn'] = getfqdn() self._settings['osInfo'] = getOsInfo() self._forceCleaning = False self._depotCreated = False fsManager = self._osObjectFactory.getOsFileSystemManager() self._lockFilePath = os.path.join( fsManager.getOsLockFilePath(), 'tortuga-setup') langdomain = 'tortuga-config' localedir = os.path.join(self._cm.getRoot(), 'share', 'locale') if not os.path.exists(localedir): # Try the system path localedir = '/usr/share/locale' gettext.bindtextdomain(langdomain, localedir) gettext.textdomain(langdomain) self.gettext = gettext.gettext self._ = self.gettext self._logger.info('Detected OS: [%s]', self._settings['osInfo'])
def getNodesByNameFilter( self, session: Session, filter_spec: Union[str, list], include_installer: Optional[bool] = True) -> List[Node]: """ Filter follows SQL "LIKE" semantics (ie. "something%") Exclude installer node from node list by setting 'include_installer' to False. Returns a list of Node """ filter_spec_list = [filter_spec] \ if not isinstance(filter_spec, list) else filter_spec node_filter = [] for filter_spec_item in filter_spec_list: if '.' not in filter_spec_item: # Match exactly (ie. "hostname-01") node_filter.append(Node.name.like(filter_spec_item)) # Match host name only (ie. "hostname-01.%") node_filter.append(Node.name.like(filter_spec_item + '.%')) continue # Match fully-qualified node names exactly # (ie. "hostname-01.domain") node_filter.append(Node.name.like(filter_spec_item)) if not include_installer: installer_fqdn = getfqdn() return session.query(Node).filter( and_(Node.name != installer_fqdn, or_(*node_filter))).all() return session.query(Node).filter(or_(*node_filter)).all()
def dbm(): dbmgr = DbManager(create_engine('sqlite:///:memory:', echo=False)) dbmgr.init_database() rhel7_os_family_info = osFamilyInfo.OsFamilyInfo('rhel', '7', 'x86_64') os_info = osInfo.OsInfo('centos', '7.4', 'x86_64') os_info.setOsFamilyInfo(rhel7_os_family_info) installer_fqdn = getfqdn() settings = { 'language': 'en', 'keyboard': 'en_US', 'timezone': 'UTC', 'utc': 'true', 'intWebPort': '8008', 'intWebServicePort': '8444', 'adminPort': '8443', 'eulaAccepted': 'true', 'depotpath': '/opt/tortuga/depot', 'osInfo': os_info, 'fqdn': installer_fqdn, 'installer_software_profile': 'Installer', 'installer_hardware_profile': 'Installer', } with dbmgr.session() as session: primeDb(session, settings) init_global_parameters(session, settings) # create sample tags all_tags = [{ 'name': 'tag{:d}'.format(idx), 'value': 'value{:d}'.format(idx) } for idx in range(1, 5 + 1)] installer_node = session.query(Node).filter( Node.name == installer_fqdn).one() os_ = session.query(OperatingSystem).filter( OperatingSystem.name == 'centos').one() rhel7_os_family = session.query(OperatingSystemFamily).filter( OperatingSystemFamily.name == 'rhel').one() # add add'l operating system/family rhel75_os = OperatingSystem(name='rhel', version='7.5', arch='x86_64') rhel75_os.family = rhel7_os_family session.add(rhel75_os) admin = Admin(username='******', password=pbkdf2_sha256.hash('password'), realname='realname', description='description') session.add(admin) eth1_network_device = NetworkDevice(name='eth1') # Add dummy provisioning network network = Network() network.address = '10.2.0.0' network.netmask = '255.255.255.0' network.name = 'Provisioning network on eth1' network.type = 'provision' session.add(network) # create 'hardwareprofilenetwork' entry hwpn1 = HardwareProfileNetwork( hardwareprofile=installer_node.hardwareprofile, network=network, networkdevice=eth1_network_device) # create nic on installer installer_nic = Nic() installer_nic.ip = '10.2.0.1' installer_nic.network = network installer_nic.networkdevice = eth1_network_device installer_node.nics = [installer_nic] # create 'base' kit kit = Kit() kit.name = 'base' kit.version = '7.1.1' kit.iteration = '0' kit.description = 'Sample base kit' installer_component = Component(name='installer', version='7.0') installer_component.family = [rhel7_os_family] installer_component.kit = kit core_component = Component(name='core', version='7.0', description='Compute component') core_component.family = [rhel7_os_family] core_component.kit = kit session.add(kit) # create OS kit os_kit = Kit(name='centos', version='7.4', iteration='0') os_kit.isOs = True os_component = Component(name='centos-7.4-x86_64', version='7.4') os_component.os = [os_] os_component.kit = os_kit os_kit.components.append(os_component) session.add(os_kit) # create resource adapter kit ra_kit = Kit(name='awsadapter', version='0.0.1', iteration='0') ra_component = Component(name='management', version='0.0.1') ra_component.family.append(rhel7_os_family) ra_kit.components.append(ra_component) installer_node.softwareprofile.components.append(ra_component) installer_node.softwareprofile.components.append(installer_component) session.commit() # create 'default' resource adapter default_adapter = ResourceAdapter( name=DEFAULT_CONFIGURATION_PROFILE_NAME, kit=kit, ) # create resource adapter aws_adapter = ResourceAdapter(name='AWS') aws_adapter.kit = ra_kit aws_adapter_cfg = ResourceAdapterConfig( name=DEFAULT_CONFIGURATION_PROFILE_NAME, description='Example default resource adapter configuration') with mock_ec2_deprecated(): ec2_conn = boto.ec2.connect_to_region('us-east-1') amis = ec2_conn.get_all_images() aws_adapter_cfg.configuration.append( ResourceAdapterSetting(key='ami', value=amis[0].id)) aws_adapter.resource_adapter_config.append(aws_adapter_cfg) # add second resource adapter configuration aws_adapter_cfg2 = ResourceAdapterConfig(name='nondefault', admin=admin) aws_adapter_cfg2.configuration.append( ResourceAdapterSetting(key='another_key', value='another_value')) session.add(aws_adapter) # create 'AWS' hardware profile aws_hwprofile = HardwareProfile(name='AWS') aws_hwprofile.location = 'remote' aws_hwprofile.resourceadapter = aws_adapter session.add(aws_hwprofile) aws_hwprofile2 = HardwareProfile(name='aws2', location='remote', resourceadapter=aws_adapter, nameFormat='*') session.add(aws_hwprofile2) # create 'compute' software profile compute_swprofile = SoftwareProfile(name='compute') compute_swprofile.os = os_ compute_swprofile.components = [core_component] compute_swprofile.type = 'compute' # create 'compute2' software profile compute2_swprofile = SoftwareProfile(name='compute2', os=os_, components=[core_component], type='compute') # map 'AWS' to 'compute' aws_hwprofile.mappedsoftwareprofiles.append(compute_swprofile) aws_hwprofile2.mappedsoftwareprofiles.append(compute_swprofile) # create 'localiron' hardware profile localiron_hwprofile = HardwareProfile(name='localiron', nameFormat='compute-#NN') localiron_hwprofile.resourceadapter = default_adapter localiron_hwprofile.mappedsoftwareprofiles.append(compute_swprofile) localiron_hwprofile.mappedsoftwareprofiles.append(compute2_swprofile) localiron_hwprofile.hardwareprofilenetworks.append(hwpn1) # create 'nonetwork' hardware profile nonetwork_hwprofile = HardwareProfile(name='nonetwork') nonetwork_hwprofile.resourceadapter = default_adapter nonetwork_hwprofile.mappedsoftwareprofiles.append(compute_swprofile) eth0_networkdevice = NetworkDevice(name='eth0') # create compute (compute-01, compute-02, ...) nodes for n in range(1, 11): compute_node = Node(name='compute-{0:02d}.private'.format(n), state='Installed') compute_node.addHostSession = '1234' compute_node.softwareprofile = compute_swprofile compute_node.hardwareprofile = localiron_hwprofile compute_node.nics.append( Nic(ip='10.2.0.{}'.format(100 + n), mac='FF:00:00:00:00:00:{:02x}'.format(100 + n), boot=True, network=network, networkdevice=eth0_networkdevice)) if n in (1, 2): # compute-01 and compute-02 have all tags compute_node.tags = [ NodeTag( name=tag['name'], value=tag['value'], ) for tag in all_tags ] elif n in (3, 4): # compute-03 and compute-04 have 'tag1' and 'tag2' compute_node.tags = [ NodeTag( name=all_tags[0]['name'], value=all_tags[0]['value'], ), NodeTag( name=all_tags[1]['name'], value=all_tags[1]['value'], ), ] elif n in (5, 6): # compute-05 and compute-06 have 'tag2' and 'tag3' compute_node.tags = [ NodeTag( name=all_tags[1]['name'], value=all_tags[1]['value'], ), NodeTag( name=all_tags[2]['name'], value=all_tags[2]['value'], ), ] elif n == 7: # compute-07 has 'tag4' compute_node.tags = [ NodeTag( name=all_tags[3]['name'], value=all_tags[3]['value'], ), ] elif n == 8: # compute-08 has 'tag5' compute_node.tags = [ NodeTag( name=all_tags[4]['name'], value=all_tags[4]['value'], ), ] session.add(compute_node) # create arbitrary aws nodes for idx in range(1, 10): new_node = Node( name='ip-10-10-10-{:0d}.ec2.internal'.format(idx), hardwareprofile=aws_hwprofile, softwareprofile=compute_swprofile, ) new_node.instance = InstanceMapping( instance='i-{:08x}'.format(idx)) new_node.instance.resource_adapter_configuration = aws_adapter_cfg session.add(new_node) # create arbitrary hardware profiles hwprofile1 = HardwareProfile( name='profile1', tags=[ HardwareProfileTag( name=all_tags[0]['name'], value=all_tags[0]['value'], ), ], ) hwprofile2 = HardwareProfile( name='profile2', tags=[ HardwareProfileTag( name=all_tags[1]['name'], value=all_tags[1]['value'], ), ], ) session.add(hwprofile1) session.add(hwprofile2) # create arbitrary software profiles SoftwareProfile( name='swprofile1', os=os_, type='compute', tags=[ SoftwareProfileTag(name=all_tags[0]['name'], value=all_tags[0]['value']), ], ) SoftwareProfile( name='swprofile2', os=os_, type='compute', tags=[ SoftwareProfileTag( name=all_tags[1]['name'], value=all_tags[1]['value'], ), ], ) session.commit() return dbmgr
def dbm(): dbmgr = DbManager(create_engine('sqlite:///:memory:', echo=False)) dbmgr.init_database() rhel7_os_family_info = osFamilyInfo.OsFamilyInfo('rhel', '7', 'x86_64') os_info = osInfo.OsInfo('centos', '7.4', 'x86_64') os_info.setOsFamilyInfo(rhel7_os_family_info) settings = { 'language': 'en', 'keyboard': 'en_US', 'timezone': 'UTC', 'utc': 'true', 'intWebPort': '8008', 'intWebServicePort': '8444', 'adminPort': '8443', 'eulaAccepted': 'true', 'depotpath': '/opt/tortuga/depot', 'osInfo': os_info, 'fqdn': getfqdn(), 'installer_software_profile': 'Installer', 'installer_hardware_profile': 'Installer', } with dbmgr.session() as session: primeDb(session, settings) init_global_parameters(session, settings) # create sample tags all_tags = [] for idx in range(1, 5 + 1): tag = dict( name='tag{:d}'.format(idx), value='value{:d}'.format(idx), ) all_tags.append(tag) installer_node = session.query(Node).filter( Node.name == settings['fqdn']).one() os_ = session.query(OperatingSystem).filter( OperatingSystem.name == 'centos').one() rhel7_os_family = session.query(OperatingSystemFamily).filter( OperatingSystemFamily.name == 'rhel').one() # add add'l operating system/family rhel75_os = OperatingSystem(name='rhel', version='7.5', arch='x86_64') rhel75_os.family = rhel7_os_family session.add(rhel75_os) admin = Admin(username='******', password=pbkdf2_sha256.hash('password'), realname='realname', description='description') session.add(admin) eth0_network_device = NetworkDevice(name='eth0') eth1_network_device = NetworkDevice(name='eth1') # Add dummy provisioning network network = Network(address='10.2.0.0', netmask='255.255.255.0', name='Provisioning network on eth1', type='provision') installer_node.hardwareprofile.hardwareprofilenetworks.append( HardwareProfileNetwork( network=network, networkdevice=eth1_network_device, )) # create nic on installer installer_nic = Nic( ip='10.2.0.1', network=network, networkdevice=eth1_network_device, ) installer_node.nics = [installer_nic] # create 'base' kit kit = Kit() kit.name = 'base' kit.version = '7.1.0' kit.iteration = '0' kit.description = 'Sample base kit' installer_component = Component(name='installer', version='7.0') installer_component.family = [rhel7_os_family] installer_component.kit = kit core_component = Component(name='core', version='7.0', description='Compute component') core_component.family = [rhel7_os_family] core_component.kit = kit # add component not enabled by default pdsh_component = Component(name='pdsh', version='7.0', description='pdsh component') pdsh_component.family = [rhel7_os_family] pdsh_component.kit = kit # add fake dhcp component dhcpd_component = Component(name='dhcpd', version='7.0', description='Mock dhcpd component') dhcpd_component.family = [rhel7_os_family] dhcpd_component.kit = kit session.add(kit) # create OS kit os_kit = Kit(name='centos', version='7.4', iteration='0') os_kit.isOs = True os_component = Component(name='centos-7.4-x86_64', version='7.4') os_component.os = [os_] os_component.kit = os_kit os_kit.components.append(os_component) session.add(os_kit) # create resource adapter kit ra_kit = Kit(name='awsadapter', version='0.0.1', iteration='0') ra_component = Component(name='management', version='0.0.1') ra_component.family.append(rhel7_os_family) ra_kit.components.append(ra_component) installer_node.softwareprofile.components.append(ra_component) installer_node.softwareprofile.components.append(installer_component) installer_node.softwareprofile.components.append(dhcpd_component) # create 'default' resource adapter default_adapter = ResourceAdapter(name='default', kit=kit) # create resource adapter aws_adapter = ResourceAdapter(name='aws', kit=ra_kit) aws_adapter_cfg = ResourceAdapterConfig( name='default', description='Example default resource adapter configuration') aws_adapter_cfg.configuration.append( ResourceAdapterSetting(key='ami', value='ami-XXXXXX')) aws_adapter_cfg.configuration.append( ResourceAdapterSetting(key='use_instance_hostname', value='true')) aws_adapter.resource_adapter_config.append(aws_adapter_cfg) # add second resource adapter configuration aws_adapter_cfg2 = ResourceAdapterConfig(name='nondefault', admin=admin) aws_adapter_cfg2.configuration.append( ResourceAdapterSetting(key='another_key', value='another_value')) aws_adapter.resource_adapter_config.append(aws_adapter_cfg2) session.add(aws_adapter) # create 'aws' hardware profile # does *not* have a default resource adapter config aws_hwprofile = HardwareProfile(name='aws') aws_hwprofile.location = 'remote' aws_hwprofile.resourceadapter = aws_adapter aws_hwprofile.nameFormat = '*' session.add(aws_hwprofile) # add hardware profile 'aws2' with non-default configuration profile aws_hwprofile2 = HardwareProfile( name='aws2', location='remote', resourceadapter=aws_adapter, default_resource_adapter_config=aws_adapter_cfg2, nameFormat='*', ) session.add(aws_hwprofile2) # create 'compute' software profile compute_swprofile = SoftwareProfile(name='compute') compute_swprofile.os = os_ compute_swprofile.components = [core_component] compute_swprofile.type = 'compute' # create 'compute2' software profile compute2_swprofile = SoftwareProfile(name='compute2', os=os_, components=[core_component], type='compute') # map 'aws' and 'aws2' to 'compute' compute_swprofile.hardwareprofiles.extend( (aws_hwprofile, aws_hwprofile2)) # create 'localiron' hardware profile localiron_hwprofile = HardwareProfile( name='localiron', nameFormat='compute-#NN', location='local', ) localiron_hwprofile.resourceadapter = default_adapter localiron_hwprofile.mappedsoftwareprofiles = [ compute_swprofile, compute2_swprofile ] localiron_hwprofile.hardwareprofilenetworks.append( HardwareProfileNetwork( network=network, networkdevice=eth0_network_device, )) session.add(localiron_hwprofile) # create "localironalt" hardware profile with nameFormat set to '*' localironalt_hwprofile = HardwareProfile( name='localironalt', nameFormat='*', location='local', ) localironalt_hwprofile.resourceadapter = default_adapter localironalt_hwprofile.mappedsoftwareprofiles = [ compute_swprofile, compute2_swprofile ] localironalt_hwprofile.hardwareprofilenetworks.append( HardwareProfileNetwork( network=network, networkdevice=eth0_network_device, )) # create 'nonetwork' hardware profile nonetwork_hwprofile = HardwareProfile(name='nonetwork') nonetwork_hwprofile.resourceadapter = default_adapter nonetwork_hwprofile.mappedsoftwareprofiles.append(compute_swprofile) # create compute (compute-01, compute-02, ...) nodes for n in range(1, 11): compute_node = Node(name='compute-{0:02d}.private'.format(n), state='Installed') compute_node.addHostSession = '1234' compute_node.softwareprofile = compute_swprofile compute_node.hardwareprofile = localiron_hwprofile compute_node.nics.append( Nic(ip='10.2.0.{}'.format(100 + n), mac='FF:00:00:00:00:00:{:02x}'.format(100 + n), boot=True, network=network, networkdevice=eth0_network_device)) if n in (1, 2): # compute-01 and compute-02 have all tags for tag in all_tags: compute_node.tags.append( NodeTag(name=tag['name'], value=tag['value'])) elif n in (3, 4): # compute-03 and compute-04 have 'tag1' and 'tag2' compute_node.tags.append( NodeTag(name=all_tags[0]['name'], value=all_tags[0]['value'])) compute_node.tags.append( NodeTag(name=all_tags[1]['name'], value=all_tags[1]['value'])) elif n in (5, 6): # compute-05 and compute-06 have 'tag2' and 'tag3' compute_node.tags.append( NodeTag(name=all_tags[1]['name'], value=all_tags[1]['value'])) compute_node.tags.append( NodeTag(name=all_tags[2]['name'], value=all_tags[2]['value'])) elif n == 7: # compute-07 has 'tag4' compute_node.tags.append( NodeTag(name=all_tags[3]['name'], value=all_tags[3]['value'])) elif n == 8: # compute-08 has 'tag5' compute_node.tags.append( NodeTag(name=all_tags[4]['name'], value=all_tags[4]['value'])) session.add(compute_node) # create arbitrary hardware profiles hwprofile1 = HardwareProfile(name='profile1', nameFormat='*', tags=[ HardwareProfileTag( name=all_tags[0]['name'], value=all_tags[0]['value']) ]) hwprofile2 = HardwareProfile(name='profile2', nameFormat='*', tags=[ HardwareProfileTag( name=all_tags[1]['name'], value=all_tags[1]['value']) ]) hwprofile_notags = HardwareProfile(name='notags', nameFormat='*') session.add(hwprofile1) session.add(hwprofile2) session.add(hwprofile_notags) # create arbitrary software profiles swprofile1 = SoftwareProfile(name='swprofile1', os=os_, type='compute', tags=[ SoftwareProfileTag( name=all_tags[0]['name'], value=all_tags[0]['value']) ]) swprofile2 = SoftwareProfile(name='swprofile2', os=os_, type='compute', tags=[ SoftwareProfileTag( name=all_tags[1]['name'], value=all_tags[1]['value']) ]) swprofile_notags = SoftwareProfile(name='notags', os=os_, type='compute') session.add(swprofile1) session.add(swprofile2) session.add(swprofile_notags) session.commit() return dbmgr
def test_getNodeByIp(self): result = NodesDbHandler().getNodeByIp(self.session, '10.2.0.1') assert result.name == getfqdn() assert result.nics
def test_getNode(self): result = NodesDbHandler().getNode(self.session, getfqdn()) assert result.nics
def getProvisioningInfo(self, session: Session, nodeName: str) \ -> ProvisioningInfo: """ Get the provisioing information for a given provisioned address Returns: [provisioningInformation structure] Throws: NodeNotFound DbError """ try: provisioningInfo = ProvisioningInfo() dbNode = self._nodesDbHandler.getNode(session, nodeName) if dbNode.softwareprofile: self.loadRelations(dbNode.softwareprofile, { 'partitions': True, }) for component in dbNode.softwareprofile.components: self.loadRelations(component, { 'kit': True, 'os': True, 'family': True, 'os_components': True, 'osfamily_components': True, }) self.loadRelation(dbNode, 'hardwareprofile') provisioningInfo.setNode( Node.getFromDbDict(dbNode.__dict__)) globalParameters = \ self._globalParameterDbApi.getParameterList(session) # manually inject value for 'installer' p = Parameter(name='Installer') hostName = getfqdn().split('.', 1)[0] if '.' in dbNode.name: nodeDomain = dbNode.name.split('.', 1)[1] priInstaller = hostName + '.%s' % (nodeDomain) else: priInstaller = hostName p.setValue(priInstaller) globalParameters.append(p) provisioningInfo.setGlobalParameters(globalParameters) return provisioningInfo except TortugaException: raise except Exception as ex: self.getLogger().exception('%s' % ex) raise
def __get_template_subst_dict( self, session: Session, node: Node, hardwareprofile: HardwareProfile, softwareprofile: SoftwareProfile) -> Dict[str, Any]: """ :param node: Object :param hardwareprofile: Object :param softwareprofile: Object :return: Dictionary """ hardwareprofile = hardwareprofile \ if hardwareprofile else node.hardwareprofile softwareprofile = softwareprofile \ if softwareprofile else node.softwareprofile installer_public_fqdn: str = getfqdn() installer_hostname: str = installer_public_fqdn.split('.')[0] installer_private_ip: str = hardwareprofile.nics[0].ip try: private_domain: Optional[str] = \ self._globalParameterDbApi.getParameter( session, 'DNSZone').getValue() except ParameterNotFound: private_domain: Optional[str] = None installer_private_fqdn: str = '%s%s%s' % ( installer_hostname, get_installer_hostname_suffix( hardwareprofile.nics[0], enable_interface_aliases=None), '.%s' % private_domain if private_domain else '') values: List[str] = node.name.split('.', 1) domain: str = values[1].lower() if len(values) == 2 else '' return { 'fqdn': node.name, 'domain': domain, 'hostname': installer_hostname, 'installer_private_fqdn': installer_private_fqdn, 'installer_private_domain': private_domain, 'installer_private_ip': installer_private_ip, 'puppet_master_fqdn': installer_public_fqdn, 'installer_public_fqdn': installer_public_fqdn, 'ntpserver': installer_private_ip, 'os': softwareprofile.os.name, 'osfamily': softwareprofile.os.family.name, 'osfamilyvers': int(softwareprofile.os.family.version), # These are deprecated and included for backwards compatibility # only. Do not reference them in any new kickstart templates. 'primaryinstaller': installer_private_fqdn, 'puppetserver': installer_public_fqdn, 'installerip': installer_private_ip, # Add entry for install package source 'url': '%s/%s/%s/%s' % ( self._cm.getYumRootUrl(installer_private_fqdn), softwareprofile.os.name, softwareprofile.os.version, softwareprofile.os.arch ), 'lang': 'en_US.UTF-8', 'keyboard': 'us', 'networkcfg': self.__kickstart_get_network_section( node, hardwareprofile ), 'rootpw': self._generatePassword(), 'timezone': self.__kickstart_get_timezone(session), 'includes': '%include /tmp/partinfo', 'repos': '\n'.join( self.__kickstart_get_repos( session, softwareprofile, installer_private_fqdn ) ), # Retain this for backwards compatibility with legacy Kickstart # templates 'packages': '\n'.join([]), 'prescript': self.__kickstart_get_partition_section( softwareprofile ), 'installer_url': self._cm.getInstallerUrl(installer_private_fqdn), 'cfmstring': self._cm.getCfmPassword() }