Ubuntu Openstack Installer Documentation Release 0.21 Solutions Engineering

Ubuntu Openstack Installer
Documentation
Release 0.21
Solutions Engineering
October 19, 2014
Contents
1
Getting Help
2
Guides
2.1 Developer Guide . . . .
2.2 Single Installer Guide .
2.3 Multi Installer Guide . .
2.4 Using Juju in Openstack
3
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
7
8
10
Reference
3.1 cloudinstall.charms — Juju Charm . . . . . . . . . . . . .
3.2 cloudinstall.config — Config . . . . . . . . . . . . . . .
3.3 cloudinstall.juju — Juju interface . . . . . . . . . . . . .
3.4 cloudinstall.maas — Maas interface . . . . . . . . . . . . .
3.5 cloudinstall.ui — UI Widgets . . . . . . . . . . . . . . . .
3.6 cloudinstall.core — Core logic . . . . . . . . . . . . . . .
3.7 cloudinstall.gui — GUI Interface . . . . . . . . . . . . . .
3.8 cloudinstall.log — Log Interface . . . . . . . . . . . . . .
3.9 cloudinstall.machine — Maas/Juju machine representation
3.10 cloudinstall.service — Service Interface . . . . . . . . .
3.11 cloudinstall.utils — Utility helpers . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
13
14
15
17
18
20
22
22
23
25
Python Module Index
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
i
ii
Ubuntu Openstack Installer Documentation, Release 0.21
Github project page
Contents
1
Ubuntu Openstack Installer Documentation, Release 0.21
2
Contents
CHAPTER 1
Getting Help
We are on IRC, server: irc.freenode.net, channel: #ubuntu-solutions
3
Ubuntu Openstack Installer Documentation, Release 0.21
4
Chapter 1. Getting Help
CHAPTER 2
Guides
2.1 Developer Guide
The document walks you through installing the necessary packages and environment preparations in order to build the
cloud installer.
2.1.1 Base system
Development and testing is done on Ubuntu and using a release of Trusty or later.
2.1.2 Building cloud installer
Note: Although not required, Sbuild is the preferred way for building the package set. Please refer to this wiki page
on setting up sbuild.
Just like the base system the sbuild chroots need to be Trusty or later, but the architecture of the chroots does not
matter.
Once sbuild is configured, checkout the source code of the installer:
$ git clone https://github.com/Ubuntu-Solutions-Engineering/cloud-installer.git ~/cloud-installer
$ cd cloud-installer
Use the target ‘install-dependencies’ to install a custom binary package for the build dependencies:
$ make install-dependencies
From here you can build the entire package set by running:
$ make sbuild
# or, if you prefer not to use sbuild:
$ make deb
Once finished your packages will be stored in the top level directory where your cloud-installer project is kept.
$ ls ../*.deb
5
Ubuntu Openstack Installer Documentation, Release 0.21
2.1.3 Running the cloud installer
Running the installer for test currently requires installing the packages. After building the packages using either ‘make
deb’ or ‘make sbuild’, you can install and run with the ‘run’ target:
$ sudo make run type=single
# or
$ sudo make run type=multi
You can also set the MAAS_HTTP_PROXY env var for the cloud-install command like this:
$ sudo make run type=single proxy=http://myproxy/
If you are running the landscape installer, you will want to use the ‘landscape’ target:
$ sudo make landscape proxy=http://myproxy/
2.1.4 Running the Pegasus status screen
If you have run the installer and are working on changes to the status screen (in cloudinstall/), you can re-run the status
screen with the correct python path using this target:
$ make status
If you are testing the status screen’s code for deploying charms, you may need to first start your juju environment over
from scratch:
$ juju destroy-environment local
$ juju bootstrap
$ make status
2.1.5 Changing the log level
The cloud-status program logs to ~/.cloud-install/commands.log. The default log level for that log is “DEBUG”. Most
of the program logs at the DEBUG level, which is the most verbose that is currently defined. If you want a different log
level, you can set the UCI_LOGLEVEL environment variable. Your choices are “DEBUG”, “INFO”, “WARNING”,
“ERROR”, and “CRITICAL”.
$ UCI_LOGLEVEL=ERROR cloud-status
2.1.6 Building documentation
Documentation will be built in docs/_build/html, and requires Sphinx to build.
$ cd docs && make html
2.1.7 Running Tests
Tests can be ran against a set of exported data(default) or a live machine. In order to test against live data the following
environment variable is used.
$ JUJU_LIVE=1 nosetests3 test
6
Chapter 2. Guides
Ubuntu Openstack Installer Documentation, Release 0.21
For the python code, using pep8 and pyflakes is encouraged:
$ make pyflakes
$ make pep8
2.2 Single Installer Guide
2.2.1 Pre-requisites
Add the cloud-installer ppa to your system.
$ sudo apt-add-repository ppa:juju/stable
$ sudo apt-add-repository ppa:cloud-installer/ppa
$ sudo apt-get update
Note: Adding the ppa is only necessary until an official release to the archives has been announced.
2.2.2 Recommended Hardware
The installer would work best with at least:
• 12G RAM
• 100G HDD (SSD for optimal performance)
• 8 CPUS
2.2.3 Installation
Install the cloud-installer via apt-get
$ sudo apt-get install cloud-installer
2.2.4 Start the installation
To start the installation run the following command
$ sudo cloud-install
Note: The installer should be run as a non-root user.
Optional Flags
Options:
-c <file>
-s
-i
-u
-h
POSIX shell script to be sourced by installer
automating install by pre-setting menu responses.
enable swift-storage
install only (don’t invoke cloud-status)
uninstall the cloud
print this message
2.2. Single Installer Guide
7
Ubuntu Openstack Installer Documentation, Release 0.21
Note: Enabling swift storage requires at least 3 instances and another additional instance for swift-proxy.
Note: If you wish to deploy services to this openstack using juju you will need to enable swift storage.
An initial dialog box will appear asking you to select which type of install, choose Single system.
2.2.5 Setting a password
When asked to set the openstack password it should be noted that this password is used throughout all openstack
related services (ie Horizon login password).
2.2.6 Installing of Services
The installer will run through a series of steps starting with making sure the necessary bits are available for a single
system installation and ending with a juju bootstrapped system.
When the bootstrapping has finished it will immediately load the status screen. From there you can see the nodes listed
along with the deployed charms necessary to start your private openstack cloud.
Adding additional compute nodes, block storage, object storage, and controllers can be done by pressing A and making
the selection on the dialog box.
Finally, once those nodes are displayed and the charms deployed the horizon dashboard will be available to you for
managing your openstack cloud.
2.2.7 Logging into Horizon (Openstack Dashboard)
The login credentials for the dashboard are:
• username: ubuntu
• password: “password that was set during installation”
2.2.8 Troubleshooting
The installer keeps its own logs in $HOME/.cloud-install/commands.log.
2.2.9 Uninstalling
To uninstall and cleanup your system run the following
$ sudo cloud-install -u
2.3 Multi Installer Guide
2.3.1 Pre-requisites
Multi-Installer has been tested on Ubuntu Server, which is the recommended OS for the cloud installer.
8
Chapter 2. Guides
Ubuntu Openstack Installer Documentation, Release 0.21
Add the cloud-installer ppa to your system.
$
$
$
$
sudo
sudo
sudo
sudo
apt-add-repository ppa:juju/stable
apt-add-repository ppa:maas-maintainers/stable
apt-add-repository ppa:cloud-installer/ppa
apt-get update
Note: Adding the ppa is only necessary until an official release to the archives has been announced.
2.3.2 Installation
Install the cloud-installer via apt-get
$ sudo apt-get install cloud-installer
2.3.3 Start the installation
To start the installation run the following command
$ sudo cloud-install
Note: The installer should be run as a non-root user.
An initial dialog box will appear asking you to select which type of install, choose Multi-system.
2.3.4 Setting a password
When asked to set the openstack password it should be noted that this password is used throughout all openstack
related services (ie Horizon login password). The only service that does not use this password is juju-gui.
2.3.5 Next Steps
The installer will run through a series of steps starting with making sure the necessary bits are available for a multi
system installation and ending with a juju bootstrapped system.
2.3.6 Troubleshooting
The installer keeps its own logs in $HOME/.cloud-install/commands.log.
2.3.7 Uninstalling
To uninstall and cleanup your system run the following
$ sudo cloud-install -u
2.3. Multi Installer Guide
9
Ubuntu Openstack Installer Documentation, Release 0.21
2.4 Using Juju in Openstack
Once the Openstack cloud has been deployed there are only a couple of steps to enable juju to deploy charms into the
private cloud.
Note: Juju requires swift storage so this needs to have been enabled during the install.
2.4.1 Update ~/.juju/environments.yaml
In the users ~/.juju/environments.yaml file there is a a openstack stanza.
openstack:
type: openstack
use-floating-ip: true
use-default-secgroup: true
network: ubuntu-net
auth-url: http://keystoneurl:5000/v2.0/
tenant-name: ubuntu
region: RegionOne
auth-mode: userpass
username: ubuntu
password: pass
The credentials are already filled out for you, however, you’ll need to set the auth-url to your Keystone public address.
2.4.2 Bootstrap Juju
Once the environments are updated run:
$
$
$
$
juju
juju
juju
juju
switch openstack
metadata generate-image -i <image_id> -s trusty
sync-tools
bootstrap --metadata-source /home/ubuntu
Now you can deploy charms within your Openstack cloud.
Note: <image_id> is found in the horizon dashboard http://<public-ip>/horizon/project/images/
10
Chapter 2. Guides
CHAPTER 3
Reference
3.1 cloudinstall.charms — Juju Charm
class cloudinstall.charms.CharmBase(juju=None, juju_state=None, machine=None, ui=None)
Bases: builtins.object
Base charm class
allow_multi_units = False
charm_name = None
constraints = None
deploy_priority = 9223372036854775807
disabled = False
display_name = None
display_priority = 0
is_related(charm, relations)
test for existence of charm relation
Parameters
• charm (str) – charm to verify
• relations (list) – related charms
Returns True if existing relation found, False otherwise
Return type bool
isolate = False
machine_id = ‘’
menuable = False
classmethod name(class_)
Return charm name
Returns name of charm
Return type lowercase str
optional = False
11
Ubuntu Openstack Installer Documentation, Release 0.21
post_proc()
Perform any post processing
i.e. setting configuration variables for a charm
Override in charm classes
related = []
set_relations()
Setup charm relations
Override in charm specific.
setup()
Deploy charm and configuration options
The default should be sufficient but if more functionality is needed this should be overridden.
returns True if deploy command was deferred for some reason. returns False if no error occurred and
deploy command was issued.
Note that the False (no-error) return value does not indicate that service is up and running.
wait_for_agent(svcs=None)
Waits for service agent to be reachable
Parameters svcs – List of services to check or empty for calling service
Return type Unit()
Returns True if all svcs are started, False otherwise
class cloudinstall.charms.CharmQueue(ui)
Bases: builtins.object
charm queue for handling relations in the background
add_post_proc(charm)
add_relation(charm)
add_setup(charm)
watch_post_proc()
watch_relations()
watch_setup()
class cloudinstall.charms.DisplayPriorities
Bases: builtins.object
A fake enum
Compute = 10
Core = 0
Error = 1
Other = 30
Storage = 20
cloudinstall.charms.get_charm(charm_name, juju, juju_state, ui)
returns single charm class
Parameters
12
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
• charm_name (str) – name of charm to query
• juju_state – status of juju
Return type Charm
Returns charm class
cloudinstall.charms.query_cs(charm, series=’trusty’)
This helper routine will query the charm store to pull latest revisions and charmstore url for the api.
Parameters
• charm (str) – charm name
• series (str) – series, defaults. trusty
3.2 cloudinstall.config — Config
class cloudinstall.config.Config
Bases: builtins.object
STYLES = [(‘body’, ‘white’, ‘black’), (‘header_menu’, ‘light gray’, ‘dark gray’), (‘header_title’, ‘light gray,bold’, ‘dark m
bin_path
scripts located in non-default system path
cfg_path
top level configuration path
install_types
Installer types
is_multi
is_single
juju_api_password
juju_env
parses current juju environment
juju_environments_path
returns absolute path of juju environments.yaml
maas_creds
reads maascreds file
openstack_password
save_maas_creds(api_url, api_key)
Saves maas credentials for re-use
Parameters
• api_url (str) – maas address
• api_key (str) – api key of maas admin user
save_password(password)
tmpl_path
template path
3.2. cloudinstall.config — Config
13
Ubuntu Openstack Installer Documentation, Release 0.21
update_environments_yaml(key, val, provider=’local’)
updates environments.yaml base file
exception cloudinstall.config.ConfigException
Bases: builtins.Exception
3.3 cloudinstall.juju — Juju interface
Represents a juju status
class cloudinstall.juju.JujuState(juju)
Bases: builtins.object
Represents a global Juju state
base_machine(machine_id)
returns machine if given a numeric machine id, or machine hosting the container if given a container id
NOTE: KVMs are treated as base machines.
invalidate_status_cache()
Invalidates cache of status. Use this to force fetching from server more often than every 20 seconds.
machine(machine_id)
Return single machine state
Parameters machine_id (str) – machine machine_id
Returns machine
Return type Machine
machine_or_container(machine_id)
returns machine or container matching the id
machines()
Machines property
Returns machines known to juju (except bootstrap)
Return type list
machines_allocated()
Machines allocated property
Returns all machines in an allocated state (see self.valid_states)
Return type list
machines_summary()
Returns summary of known machines and their status Excludes bootstrap.
networks
Juju netwoks property
service(name)
Return a single service entry
Parameters name (str) – service/charm name
Returns a service entry or None
Return type Service
14
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
services
Juju services property
Returns Service() of all loaded services
Return type list
status()
Returns juju status. Caches value for 20 seconds.
Call invalidate_status_cache() to force next status call to fetch from server.
3.4 cloudinstall.maas — Maas interface
class cloudinstall.maas.MaasMachine(machine_id, machine)
Bases: cloudinstall.machine.Machine
Single maas machine
arch
Return architecture
Returns architecture type
Return type str
cpu_cores
Returns number of cpu-cores
Returns number of cpus
Return type str
hostname
Query hostname reported by MaaS
Returns hostname
Return type str
instance_id
Returns instance-id of a machine
Returns instance-id of machine
Return type str
ip_addresses
Ip addresses for machine
Returns ip addresses
Return type list
mac_address
Macaddress set of maas machine
Returns mac_address and resource_uri
Return type dict
mem
Return memory
Returns memory size
3.4. cloudinstall.maas — Maas interface
15
Ubuntu Openstack Installer Documentation, Release 0.21
Return type str
owner
Machine owner
Returns owner
Return type str
power_type
Machine power type
Returns machines power type
Return type str
status
Status of machine state
Returns status enum
Return type MaasMachineStatus
storage
Return storage
Returns storage size
Return type str
system_id
Returns system id of a maas machine
Returns system id of machine
Return type str
tag
Machine tag
Returns tag defined
Return type str
tag_names
Tag names for machine
Returns tags associated with machine
Return type list
zone
Zone information
Returns zone information
Return type dict
class cloudinstall.maas.MaasMachineStatus
Bases: enum.Enum
Symbolic names for maas API status numbers.
-1, UNKNOWN is never returned by maas API. It’s used here to denote a MaasMachine object that wasn’t
created from a Maas API return.
16
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
class cloudinstall.maas.MaasState(maas_client)
Bases: builtins.object
Represents global MaaS state
machine(instance_id)
Return single machine state
Parameters instance_id (str) – machine instance_id
Returns machine
Return type cloudinstall.maas.MaasMachine
machines(state=None)
Maas Machines
:param state
Returns machines known to Maas, except for juju bootstrap
machine, matching state type, or all if state=None
Return type list of MaasMachine
nodes()
Cache MAAS nodes
3.5 cloudinstall.ui — UI Widgets
re-usable widgets
class cloudinstall.ui.MaasServerInput(done_signal_handler)
Bases: builtins.WidgetWrap
Maas Server input dialog
cancel(button)
emit_done_signal(*args)
signals = [’done’]
submit(button)
class cloudinstall.ui.PasswordInput(title, done_signal_handler)
Bases: builtins.WidgetWrap
Password input dialog
cancel(button)
emit_done_signal(*args)
keypress(size, key)
signals = [’done’]
submit(button)
class cloudinstall.ui.Scrollable
Bases: builtins.object
A interface that makes widgets scrollable.
scroll_bottom()
3.5. cloudinstall.ui — UI Widgets
17
Ubuntu Openstack Installer Documentation, Release 0.21
scroll_down()
scroll_top()
scroll_up()
class cloudinstall.ui.ScrollableListBox(contents, offset=1)
Bases: builtins.ListBox, cloudinstall.ui.Scrollable
A urwid.ListBox subclass that implements the Scrollable interface.
scroll_bottom()
scroll_down()
scroll_top()
scroll_up()
class cloudinstall.ui.ScrollableWidgetWrap(contents=None)
Bases: builtins.WidgetWrap, cloudinstall.ui.Scrollable
A urwid.WidgetWrap for Scrollable, list-like widgets.
scroll_bottom()
scroll_down()
scroll_top()
scroll_up()
class cloudinstall.ui.Selector(title, opts, cb, **kwargs)
Bases: builtins.WidgetWrap
Simple selector box
Parameters
• title (str) – title of selections
• opts (list) – items to select
• cb – callback
Returns item selected from dialog
cancel(button)
emit_done_signal(*args)
keypress(size, key)
signals = [’done’]
submit(button)
3.6 cloudinstall.core — Core logic
class cloudinstall.core.Controller(**kwds)
Bases: cloudinstall.core.DisplayController
Controller for Juju deployments and Maas machine init
add_charm(count=0, charm=None)
configure_lxc_network()
18
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
configure_lxc_root_tarball(rootfs)
Use a local copy of the cloud rootfs tarball
enqueue_deployed_charms()
Send all deployed charms to CharmQueue for relation setting and post-proc.
get_controller_machine()
get_started_machine()
init_deploy_charms()
Deploy charms in order, waiting for any deferred charms. Then enqueue all charms for further processing
and return.
init_machine()
Handles initial deployment of a machine
init_machine_setup()
Setup initial machine network and controller
initialize()
authenticates against juju/maas and initializes a machine
wait_for_maas()
install and configure maas
class cloudinstall.core.DisplayController(ui=None, opts=None)
Bases: builtins.object
Controller for displaying juju and maas state.
authenticate_juju()
authenticate_maas()
clear_status()
error_message(message)
exit()
header_hotkeys(key)
info_message(message)
initialize()
authenticates against juju/maas and initializes a machine
main_loop()
redraw_screen()
render_node_install_wait(loop=None, user_data=None)
render_nodes(nodes, juju_state, maas_state)
set_dashboard_url(ip)
set_jujugui_url(ip)
show_maas_input(cb)
show_password_input(title, cb)
show_selector_info(title, install_types, cb)
start()
Starts controller processing
3.6. cloudinstall.core — Core logic
19
Ubuntu Openstack Installer Documentation, Release 0.21
step_info(message)
stop_rendering(alarm)
update_alarm(*args, **kwargs)
update_node_states()
Updating node states
3.7 cloudinstall.gui — GUI Interface
Pegasus - gui interface to Installer
class cloudinstall.gui.AddCharmDialog(charm_classes, cb, **kwargs)
Bases: builtins.WidgetWrap
Adding charm dialog
Parameters
• charms (list) – list of charms that can be added
• cb – callback routine to process submit/cancel actions
Returns input from dialog
cancel()
Handle cancel action
emit_done_signal(*args)
no(button)
signals = [’done’]
submit()
Handle OK submit
yes(button)
class cloudinstall.gui.Banner
Bases: cloudinstall.ui.ScrollableWidgetWrap
class cloudinstall.gui.Header
Bases: builtins.WidgetWrap
class cloudinstall.gui.InstallHeader
Bases: builtins.WidgetWrap
class cloudinstall.gui.NodeInstallWaitMode
Bases: cloudinstall.ui.ScrollableWidgetWrap
class cloudinstall.gui.NodeViewMode(nodes, juju_state, maas_state, **kwargs)
Bases: cloudinstall.ui.ScrollableWidgetWrap
class cloudinstall.gui.PegasusGUI(header=None, body=None, footer=None)
Bases: builtins.WidgetWrap
clear_status()
focus_first()
focus_last()
focus_next()
20
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
focus_previous()
hide_add_charm_info()
hide_help_info()
hide_selector_info()
hide_show_maas_input()
hide_show_password_input()
hide_step_info()
hide_widget_on_top()
Hide the topmost widget (if any).
render_node_install_wait(**kwargs)
render_nodes(nodes, juju_state, maas_state, **kwargs)
set_pending_deploys(pending_charms)
show_add_charm_info(charms, cb)
show_help_info()
show_maas_input(cb)
show_password_input(title, cb)
show_selector_info(title, opts, cb)
show_step_info(msg=None)
show_widget_on_top(widget, width, height, align=’center’, valign=’middle’, min_height=0,
min_width=0)
Show widget on top of frame.
status_dashboard_url(ip)
status_error_message(message)
status_info_message(message)
status_jujugui_url(ip)
status_message(text)
class cloudinstall.gui.StatusBar(text=’‘)
Bases: builtins.WidgetWrap
Displays text.
ARROW = ‘ ‘
ERROR = ‘[ERROR]’
INFO = ‘[INFO]’
clear()
Clear the text.
error_message(text)
info_message(text)
message(text)
Write text on the footer.
3.7. cloudinstall.gui — GUI Interface
21
Ubuntu Openstack Installer Documentation, Release 0.21
set_dashboard_url(ip=None)
sets horizon dashboard url
set_jujugui_url(ip=None)
sets juju gui url
set_pending_deploys(pending_deploys)
class cloudinstall.gui.StepInfo(msg=None)
Bases: builtins.WidgetWrap
3.8 cloudinstall.log — Log Interface
Logging interface
class cloudinstall.log.PrettyLog(obj)
Bases: builtins.object
cloudinstall.log.setup_logger(name=’cloudinstall.log’)
setup logging
Overridding the default log level(debug) can be done via an environment variable UCI_LOGLEVEL
Available levels:
•CRITICAL
•ERROR
•WARNING
•INFO
•DEBUG
Note: This filters only cloudinstall logging info. Set your environment var to UCI_NOFILTER to see debugging
log statements from imported libraries (ie macumba)
# Running cloud-status from cli
$ UCI_LOGLEVEL=INFO cloud-status
# Disable log filtering
$ UCI_NOFILTER=1 cloud-status
Params str name logger name
Returns a log object
3.9 cloudinstall.machine — Maas/Juju machine representation
class cloudinstall.machine.Machine(machine_id, machine)
Bases: builtins.object
Base machine class
arch
Return architecture
22
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
Returns architecture type
Return type str
container(container_id)
Inspect a container
Parameters container_id (int) – lxc container id
Returns Returns a dictionary of the container information for specific machine and lxc id.
Return type dict
containers
Return containers for machine
Return type generator
cpu_cores
Return number of cpu-cores
Returns number of cpus
Return type str
hardware(spec)
Get hardware information
Parameters spec (str) – a hardware specification
Returns hardware of spec
Return type str
instance_id
Returns InstanceId
Returns instance ID
Return type str
mem
Return memory
Returns memory size
Return type str
storage
Return storage
Returns storage size
Return type str
3.10 cloudinstall.service — Service Interface
Represents a Juju service
class cloudinstall.service.Relation(relation_name, charms)
Bases: builtins.object
Relation class
3.10. cloudinstall.service — Service Interface
23
Ubuntu Openstack Installer Documentation, Release 0.21
is_relation(charm)
Is a charm already related?
class cloudinstall.service.Service(service_name, service)
Bases: builtins.object
Service class
relation(name)
Single relation entry
Params str name name of relation
Returns a Relation entry
Return type Relation()
relations
Service relations
Returns iterator of relations for service
Return type Relation()
unit(name)
Single unit entry
Params str name name of unit
Returns a Unit entry
Return type Unit()
units
Service units
Returns iterator of associated units for service
Return type Unit()
class cloudinstall.service.Unit(unit_name, unit)
Bases: builtins.object
Unit class
agent_state
Unit’s agent state
Returns agent state
Return type str
agent_state_info
Gets unit state info
Usually prints a error message if unit failed to deploy :returns: error :rtype: str
is_cloud_controller
Is machine housing the cloud-controller?
Returns True/False
Return type bool
is_compute
Is machine a compute node?
Returns True/False
24
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
Return type bool
is_horizon
Is machine housing the dashboard?
Returns True/False
Return type bool
is_jujugui
Is machine juju-gui?
Returns True/False
Return type bool
machine_id
Associate machine for unit
Returns machine id
Return type str
public_address
Public address of unit
Returns address of unit
Return type str
3.11 cloudinstall.utils — Utility helpers
class cloudinstall.utils.ExceptionLoggingThread(group=None, target=None, name=None,
args=(),
kwargs=None,
*,
daemon=None)
Bases: threading.Thread
run()
cloudinstall.utils.async(func)
Decorator for executing a function in a separate thread.
cloudinstall.utils.console_blank()
cloudinstall.utils.container_cp(name, filepath, dst)
copy file to container
Parameters
• name (str) – name of container
• filepath (str) – file to copy to cintainer
• dst (str) – destination of remote path
cloudinstall.utils.container_create(name, userdata)
creates a container from ubuntu-cloud template
cloudinstall.utils.container_destroy(name)
destroys lxc container
Parameters name (str) – name of container
cloudinstall.utils.container_ip(name)
gets container ip of named container
3.11. cloudinstall.utils — Utility helpers
25
Ubuntu Openstack Installer Documentation, Release 0.21
cloudinstall.utils.container_run(name, cmd)
run command in container
Parameters
• name (str) – name of container
• cmd (str) – command to run
cloudinstall.utils.container_run_status(name, cmd)
Runs cloud-status in container
cloudinstall.utils.container_start(name)
starts lxc container
Parameters name (str) – name of container
cloudinstall.utils.container_stop(name)
stops lxc container
Parameters name (str) – name of container
cloudinstall.utils.container_wait(name)
waits for the container to be in a RUNNING state
Parameters name (str) – name of container
cloudinstall.utils.find(file_pattern, top_dir, max_depth=None, path_pattern=None)
generator function to find files recursively. Usage:
for filename in find("*.properties", "/var/log/foobar"):
print filename
cloudinstall.utils.get_command_output(command, timeout=300, user_sudo=False)
Execute command through system shell
Parameters
• command (str) – command to run
• timeout – (optional) use ‘timeout’ to limit time. default 300
• user_sudo – (optional) sudo into install users env. default False.
Returns {ret: returncode, stdout: stdout, stderr: stderr)
Return type dict
# Get output of juju status
cmd_dict = utils.get_command_output(’juju status’)
cloudinstall.utils.get_host_cpu_cores()
Get host cpu-cores
A backup if no data can be pulled from Machine()
cloudinstall.utils.get_host_mem()
Get host memory
Mostly used as a backup if no data can be pulled from the normal means in Machine()
cloudinstall.utils.get_host_storage()
Get host storage
LXC doesn’t report storage so we pull from host
26
Chapter 3. Reference
Ubuntu Openstack Installer Documentation, Release 0.21
cloudinstall.utils.get_network_interface(iface)
Get network interface properties
Parameters iface (str) – Interface to query (ex. eth0)
Returns interface properties or empty if none
Return type dict
# Get address, broadcast, and netmask of eth0
iface = utils.get_network_interface(’eth0’)
cloudinstall.utils.get_network_interfaces()
Get network interfaces
Returns available interfaces and their properties
Return type generator
cloudinstall.utils.global_exchandler(type, value, tb)
helper routine capturing tracebacks and printing to log file
cloudinstall.utils.install_home()
returns installer user home
cloudinstall.utils.install_user()
returns sudo user
cloudinstall.utils.load_charm_byname(name)
Load a charm by name
Parameters name (str) – name of charm
cloudinstall.utils.load_charms()
Load known charm modules
cloudinstall.utils.load_template(name)
load template file
Parameters name (str) – name of template file
cloudinstall.utils.partition(pred, iterable)
Returns tuple of allocated and unallocated systems
Parameters
• pred (function) – status predicate
• iterable (list) – machine data
Returns ([allocated], [unallocated])
Return type tuple
def is_allocated(d):
allocated_states = [’started’, ’pending’, ’down’]
return ’charms’ in d or d[’agent_state’] in allocated_states
allocated, unallocated = utils.partition(is_allocated,
[{state: ’pending’}])
cloudinstall.utils.randomString(size=6, chars=’ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’)
Generate a random string
Parameters
• size (int) – number of string characters
3.11. cloudinstall.utils — Utility helpers
27
Ubuntu Openstack Installer Documentation, Release 0.21
• chars (str) – range of characters (optional)
Returns a random string
Return type str
cloudinstall.utils.remote_cp(machine_id, src, dst)
cloudinstall.utils.remote_run(machine_id, cmds)
cloudinstall.utils.reset_blanking()
cloudinstall.utils.slurp(path)
Reads data from path
Parameters path (str) – path of file
cloudinstall.utils.spew(path, data, owner=None)
Writes data to path
Parameters
• path (str) – path of file to write to
• data (str) – contents to write
• owner (str) – optional owner of file
cloudinstall.utils.ssh_genkey()
Generates sshkey
cloudinstall.utils.ssh_privkey()
returns path of private key
cloudinstall.utils.ssh_pubkey()
returns path of ssh public key
cloudinstall.utils.ssh_readkey()
reads ssh key
cloudinstall.utils.time()
Time helper
Returns formatted current time string
Return type str
28
Chapter 3. Reference
Python Module Index
c
cloudinstall.config, 13
cloudinstall.core, 18
cloudinstall.log, 22
cloudinstall.maas, 15
29
Ubuntu Openstack Installer Documentation, Release 0.21
30
Python Module Index
Index
A
get_started_machine()
(cloudinstall.core.Controller
method), 19
add_charm() (cloudinstall.core.Controller method), 18
arch (cloudinstall.maas.MaasMachine attribute), 15
H
authenticate_juju() (cloudinstall.core.DisplayController
header_hotkeys()
(cloudinstall.core.DisplayController
method), 19
method), 19
authenticate_maas() (cloudinstall.core.DisplayController
hostname (cloudinstall.maas.MaasMachine attribute), 15
method), 19
I
B
info_message()
(cloudinstall.core.DisplayController
method), 19
C
init_deploy_charms()
(cloudinstall.core.Controller
method), 19
cfg_path (cloudinstall.config.Config attribute), 13
clear_status()
(cloudinstall.core.DisplayController init_machine() (cloudinstall.core.Controller method), 19
init_machine_setup()
(cloudinstall.core.Controller
method), 19
method), 19
cloudinstall.config (module), 13
initialize() (cloudinstall.core.Controller method), 19
cloudinstall.core (module), 18
initialize() (cloudinstall.core.DisplayController method),
cloudinstall.log (module), 22
19
cloudinstall.maas (module), 15
install_types (cloudinstall.config.Config attribute), 13
Config (class in cloudinstall.config), 13
instance_id (cloudinstall.maas.MaasMachine attribute),
ConfigException, 14
15
configure_lxc_network()
(cloudinstall.core.Controller
ip_addresses (cloudinstall.maas.MaasMachine attribute),
method), 18
15
configure_lxc_root_tarball() (cloudinstall.core.Controller
is_multi (cloudinstall.config.Config attribute), 13
method), 18
is_single (cloudinstall.config.Config attribute), 13
Controller (class in cloudinstall.core), 18
cpu_cores (cloudinstall.maas.MaasMachine attribute), 15
bin_path (cloudinstall.config.Config attribute), 13
D
J
juju_api_password (cloudinstall.config.Config attribute),
13
juju_env (cloudinstall.config.Config attribute), 13
juju_environments_path (cloudinstall.config.Config attribute), 13
(cloudin-
DisplayController (class in cloudinstall.core), 19
E
enqueue_deployed_charms()
stall.core.Controller method), 19
error_message()
(cloudinstall.core.DisplayController M
maas_creds (cloudinstall.config.Config attribute), 13
method), 19
MaasMachine (class in cloudinstall.maas), 15
exit() (cloudinstall.core.DisplayController method), 19
MaasMachineStatus (class in cloudinstall.maas), 16
G
MaasState (class in cloudinstall.maas), 16
get_controller_machine() (cloudinstall.core.Controller mac_address (cloudinstall.maas.MaasMachine attribute),
method), 19
15
31
Ubuntu Openstack Installer Documentation, Release 0.21
machine() (cloudinstall.maas.MaasState method), 17
tag_names (cloudinstall.maas.MaasMachine attribute), 16
machines() (cloudinstall.maas.MaasState method), 17
tmpl_path (cloudinstall.config.Config attribute), 13
main_loop()
(cloudinstall.core.DisplayController
U
method), 19
mem (cloudinstall.maas.MaasMachine attribute), 15
update_alarm()
(cloudinstall.core.DisplayController
method), 20
N
update_environments_yaml() (cloudinstall.config.Config
nodes() (cloudinstall.maas.MaasState method), 17
method), 13
update_node_states()
(cloudinO
stall.core.DisplayController method), 20
openstack_password (cloudinstall.config.Config attribute), 13
W
owner (cloudinstall.maas.MaasMachine attribute), 16
wait_for_maas() (cloudinstall.core.Controller method),
P
19
power_type (cloudinstall.maas.MaasMachine attribute), Z
16
zone (cloudinstall.maas.MaasMachine attribute), 16
PrettyLog (class in cloudinstall.log), 22
R
redraw_screen()
(cloudinstall.core.DisplayController
method), 19
render_node_install_wait()
(cloudinstall.core.DisplayController method), 19
render_nodes()
(cloudinstall.core.DisplayController
method), 19
S
save_maas_creds() (cloudinstall.config.Config method),
13
save_password() (cloudinstall.config.Config method), 13
set_dashboard_url() (cloudinstall.core.DisplayController
method), 19
set_jujugui_url()
(cloudinstall.core.DisplayController
method), 19
setup_logger() (in module cloudinstall.log), 22
show_maas_input() (cloudinstall.core.DisplayController
method), 19
show_password_input()
(cloudinstall.core.DisplayController method), 19
show_selector_info()
(cloudinstall.core.DisplayController method), 19
start() (cloudinstall.core.DisplayController method), 19
status (cloudinstall.maas.MaasMachine attribute), 16
step_info() (cloudinstall.core.DisplayController method),
19
stop_rendering()
(cloudinstall.core.DisplayController
method), 20
storage (cloudinstall.maas.MaasMachine attribute), 16
STYLES (cloudinstall.config.Config attribute), 13
system_id (cloudinstall.maas.MaasMachine attribute), 16
T
tag (cloudinstall.maas.MaasMachine attribute), 16
32
Index