summaryrefslogtreecommitdiffstats
path: root/lib/python/apex/inventory.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python/apex/inventory.py')
-rw-r--r--lib/python/apex/inventory.py98
1 files changed, 0 insertions, 98 deletions
diff --git a/lib/python/apex/inventory.py b/lib/python/apex/inventory.py
deleted file mode 100644
index 64f47b49..00000000
--- a/lib/python/apex/inventory.py
+++ /dev/null
@@ -1,98 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 Dan Radez (dradez@redhat.com) and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import yaml
-import json
-import platform
-
-from .common import constants
-from .common import utils
-
-
-class Inventory(dict):
- """
- This class parses an APEX inventory yaml file into an object. It
- generates or detects all missing fields for deployment.
-
- It then collapses one level of identification from the object to
- convert it to a structure that can be dumped into a json file formatted
- such that Triple-O can read the resulting json as an instackenv.json file.
- """
- def __init__(self, source, ha=True, virtual=False):
- init_dict = {}
- self.root_device = constants.DEFAULT_ROOT_DEV
- if isinstance(source, str):
- with open(source, 'r') as inventory_file:
- yaml_dict = yaml.safe_load(inventory_file)
- # collapse node identifiers from the structure
- init_dict['nodes'] = list(map(lambda n: n[1],
- yaml_dict['nodes'].items()))
- else:
- # assume input is a dict to build from
- init_dict = source
-
- # move ipmi_* to pm_*
- # make mac a list
- def munge_nodes(node):
- node['pm_addr'] = node['ipmi_ip']
- node['pm_password'] = node['ipmi_pass']
- node['pm_user'] = node['ipmi_user']
- node['mac'] = [node['mac_address']]
- if 'cpus' in node:
- node['cpu'] = node['cpus']
-
- for i in ('ipmi_ip', 'ipmi_pass', 'ipmi_user', 'mac_address',
- 'disk_device'):
- if i == 'disk_device' and 'disk_device' in node.keys():
- self.root_device = node[i]
- else:
- continue
- del node[i]
-
- return node
-
- super().__init__({'nodes': list(map(munge_nodes, init_dict['nodes']))})
-
- # verify number of nodes
- if ha and len(self['nodes']) < 5:
- raise InventoryException('You must provide at least 5 '
- 'nodes for HA baremetal deployment')
- elif len(self['nodes']) < 2:
- raise InventoryException('You must provide at least 2 nodes '
- 'for non-HA baremetal deployment')
-
- if virtual:
- self['arch'] = platform.machine()
- self['host-ip'] = '192.168.122.1'
- self['power_manager'] = \
- 'nova.virt.baremetal.virtual_power_driver.VirtualPowerManager'
- self['seed-ip'] = ''
- self['ssh-key'] = 'INSERT_STACK_USER_PRIV_KEY'
- self['ssh-user'] = 'root'
-
- def dump_instackenv_json(self):
- print(json.dumps(dict(self), sort_keys=True, indent=4))
-
- def dump_bash(self, path=None):
- """
- Prints settings for bash consumption.
-
- If optional path is provided, bash string will be written to the file
- instead of stdout.
- """
- bash_str = "{}={}\n".format('root_disk_list', str(self.root_device))
- utils.write_str(bash_str, path)
-
-
-class InventoryException(Exception):
- def __init__(self, value):
- self.value = value
-
- def __str__(self):
- return self.value