forked from ovh/pci-test
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
259686b255 | |||
012b0bf04c | |||
![]() |
cd81e92142 | ||
![]() |
7a1433eb61 | ||
936e0f80f0 | |||
6e7fe656b4 | |||
9ef89a992f | |||
a1ab1f4dcc | |||
![]() |
aec71aa51a | ||
![]() |
0b0ab94faa | ||
![]() |
0418052330 | ||
![]() |
a8f341a85f |
41
.gitignore
vendored
Normal file
41
.gitignore
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#.gitignore
|
||||||
|
#ex3/*.terraform*
|
||||||
|
#ex3/terraform*
|
||||||
|
|
||||||
|
# Local .terraform directories
|
||||||
|
**/.terraform*
|
||||||
|
|
||||||
|
# .tfstate files
|
||||||
|
*.tfstate
|
||||||
|
*.tfstate.*
|
||||||
|
|
||||||
|
# Crash log files
|
||||||
|
crash.log
|
||||||
|
crash.*.log
|
||||||
|
|
||||||
|
# Exclude all .tfvars files, which are likely to contain sensitive data, such as
|
||||||
|
# password, private keys, and other secrets. These should not be part of version
|
||||||
|
# control as they are data points which are potentially sensitive and subject
|
||||||
|
# to change depending on the environment.
|
||||||
|
*.tfvars
|
||||||
|
*.tfvars.json
|
||||||
|
|
||||||
|
# Ignore override files as they are usually used to override resources locally and so
|
||||||
|
# are not checked in
|
||||||
|
override.tf
|
||||||
|
override.tf.json
|
||||||
|
*_override.tf
|
||||||
|
*_override.tf.json
|
||||||
|
|
||||||
|
# Ignore transient lock info files created by terraform apply
|
||||||
|
.terraform.tfstate.lock.info
|
||||||
|
|
||||||
|
# Include override files you do wish to add to version control using negated pattern
|
||||||
|
# !example_override.tf
|
||||||
|
|
||||||
|
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
||||||
|
# example: *tfplan*
|
||||||
|
|
||||||
|
# Ignore CLI configuration files
|
||||||
|
.terraformrc
|
||||||
|
terraform.rc
|
174
README.md
174
README.md
@ -1 +1,173 @@
|
|||||||
# merge-vs-rebase
|
# Intro
|
||||||
|
|
||||||
|
We created this set of exercises to give you the opportunity to express yourself technically. Do as much as you can in
|
||||||
|
the time you have. Feel free to ask us questions, if any. No worries if you can't make it all by lack of time or
|
||||||
|
understanding of what we're asking. We'll defrief it with you during our next call.
|
||||||
|
|
||||||
|
**Have fun!**
|
||||||
|
|
||||||
|
## Fork
|
||||||
|
|
||||||
|
Register an account and fork this repo.
|
||||||
|
|
||||||
|
You will push your results to your fork.
|
||||||
|
|
||||||
|
# Ex. 1 - python
|
||||||
|
|
||||||
|
This exercise will be split into multiple smaller ones. For each one
|
||||||
|
you can create files named `a.py`, `b.py` and `c.py`. You maybe resuse the same
|
||||||
|
environment for all sub-exercises
|
||||||
|
|
||||||
|
Guidelines:
|
||||||
|
- Use python version python3.7+.
|
||||||
|
- Unless specified otherwise you can only use builtin modules.
|
||||||
|
|
||||||
|
### python - A
|
||||||
|
|
||||||
|
Write a script that prints out whatever text input is passed as argument
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ python a.py ping ping ping
|
||||||
|
ping ping ping
|
||||||
|
```
|
||||||
|
|
||||||
|
### python - B
|
||||||
|
|
||||||
|
Write a script take takes one argument (-t/--target) which can only
|
||||||
|
accept the following values `titi`, `toto`, `tata`. When called with a valid
|
||||||
|
target, the script should print out the target text to stdout (`titi`, `toto` or `tata`).
|
||||||
|
When an invalid target is provided an error message should be printed to stderr
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ python b.py --target titi
|
||||||
|
titi
|
||||||
|
|
||||||
|
$ python b.py -t tutu
|
||||||
|
usage: b.py [-h] [-t {titi,toto,tata}]
|
||||||
|
b.py: error: argument -t/--target: invalid choice: 'tutu' (choose from 'titi', 'toto', 'tata')
|
||||||
|
```
|
||||||
|
|
||||||
|
### python - C
|
||||||
|
|
||||||
|
Write a script that creates ascii art equivalent of text passed as argument.
|
||||||
|
For this exercise you may use a 3rd party module.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ python c.py 'Hello buddies'
|
||||||
|
_ _ _ _ _ _ _ _
|
||||||
|
| | | | ___ | || | ___ | |__ _ _ __| | __| |(_) ___ ___
|
||||||
|
| |_| | / _ \| || | / _ \ | '_ \ | | | | / _` | / _` || | / _ \/ __|
|
||||||
|
| _ || __/| || || (_) | | |_) || |_| || (_| || (_| || || __/\__ \
|
||||||
|
|_| |_| \___||_||_| \___/ |_.__/ \__,_| \__,_| \__,_||_| \___||___/
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# Ex. 2 - docker
|
||||||
|
|
||||||
|
In ex2 folder, you will find a `app` binary.
|
||||||
|
|
||||||
|
Can you build very lighweight docker image that contains ONLY `app` binary, and that execute `app` by default?
|
||||||
|
|
||||||
|
Push your Dockerfile in the ex2 folder.
|
||||||
|
|
||||||
|
# Ex. 3 - terraform
|
||||||
|
|
||||||
|
In ex3 folder, you will find an incomplete `openrc` file.
|
||||||
|
|
||||||
|
You will need to amend the file to configure the correct `OS_USERNAME`, `OS_PASSWORD` and `OS_REGION_NAME` with the one that we gave to you.
|
||||||
|
|
||||||
|
Then, using `terraform`, can you write a plan to boot a `d2-4` with a floating IP.
|
||||||
|
|
||||||
|
Bonus, on that instance, make sure a web server (`nginx`) is running.
|
||||||
|
|
||||||
|
Push your `main.tf` file in ex3 folder.
|
||||||
|
|
||||||
|
# Ex. 4 - git
|
||||||
|
|
||||||
|
In this repo, there are two branches:
|
||||||
|
|
||||||
|
- stein
|
||||||
|
- queens
|
||||||
|
|
||||||
|
Stein contains the following commits:
|
||||||
|
|
||||||
|
- 1ff2641 (stein) G
|
||||||
|
- cf24853 F
|
||||||
|
- 3fcdfa0 E
|
||||||
|
- cb8c71a D
|
||||||
|
- 849ef26 C
|
||||||
|
- 372c155 B
|
||||||
|
- edc8ed7 A
|
||||||
|
|
||||||
|
Queens contains the following commits:
|
||||||
|
|
||||||
|
- 2624c16 (queens) F
|
||||||
|
- 5e3521b B
|
||||||
|
- edc8ed7 A
|
||||||
|
|
||||||
|
So the common ancestor is A (same commit ID).
|
||||||
|
|
||||||
|
B has been cherry-picked from stein to queens, without conflicts.
|
||||||
|
|
||||||
|
F has also been cherry-picked but with conflicts (solved, of course).
|
||||||
|
|
||||||
|
## Exercice
|
||||||
|
|
||||||
|
You will need to create two branches:
|
||||||
|
|
||||||
|
- merged
|
||||||
|
- rebased
|
||||||
|
|
||||||
|
### Merged
|
||||||
|
|
||||||
|
Create the merged branch first:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b merged origin/queens
|
||||||
|
```
|
||||||
|
|
||||||
|
Then merge the stein branch into your branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git merge origin/stein
|
||||||
|
```
|
||||||
|
|
||||||
|
You will have a conflict to solved.
|
||||||
|
|
||||||
|
Solve it, then push your `merged` branch to your repo.
|
||||||
|
|
||||||
|
### Rebased
|
||||||
|
|
||||||
|
Now create the rebased branch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout -b rebased origin/queens
|
||||||
|
```
|
||||||
|
|
||||||
|
Now rebase it on top of stein:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git rebase -i origin/stein
|
||||||
|
```
|
||||||
|
|
||||||
|
You will have a conflict to solved.
|
||||||
|
|
||||||
|
Solve it, then push your `rebased` branch to your repo.
|
||||||
|
|
||||||
|
## Check diff
|
||||||
|
|
||||||
|
Now check the diff between your two branches `merged` and `rebased`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff merged..rebased
|
||||||
|
```
|
||||||
|
|
||||||
|
Can you explain why you have a diff?
|
||||||
|
|
||||||
|
Write down the explanation in ex4 folder (like in a `README.md` file)
|
||||||
|
0
ex1/.placeholder
Normal file
0
ex1/.placeholder
Normal file
4
ex1/a.py
Normal file
4
ex1/a.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
argv = " ".join(sys.argv[1:])
|
||||||
|
print("You've written:", argv)
|
24
ex1/b.py
Normal file
24
ex1/b.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
vars = {"toto", "tata", "titi"}
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
'-t', '--target',
|
||||||
|
nargs='+',
|
||||||
|
choices=vars,
|
||||||
|
help="Specify from 1 to 3 values from: toto, tata, titi.",
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
|
||||||
|
# Execute parsing
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# Check if arguments are more than expected
|
||||||
|
if len(args.target) > 3:
|
||||||
|
print("Error: can be used **at max 3** values from 'toto', 'tata' and 'titi'.", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
print("You've written:", args.target)
|
11
ex1/c.py
Normal file
11
ex1/c.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import sys
|
||||||
|
import pyfiglet
|
||||||
|
|
||||||
|
# check if executed without text and print help
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: python c.py 'text to be converted'")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
text = " ".join(sys.argv[1:])
|
||||||
|
f = pyfiglet.figlet_format(text)
|
||||||
|
print(f)
|
0
ex2/.placeholder
Normal file
0
ex2/.placeholder
Normal file
3
ex2/dockerfile
Normal file
3
ex2/dockerfile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
FROM alpine:latest
|
||||||
|
COPY app /app
|
||||||
|
ENTRYPOINT ["/app"]
|
0
ex3/.placeholder
Normal file
0
ex3/.placeholder
Normal file
31
ex3/main.tf
Normal file
31
ex3/main.tf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">= 0.14.0"
|
||||||
|
required_providers {
|
||||||
|
openstack = {
|
||||||
|
source = "terraform-provider-openstack/openstack"
|
||||||
|
version = "~> 1.53.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "openstack_networking_floatingip_v2" "_3245829148481055-FIP" {
|
||||||
|
pool = "Ext-Net"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "openstack_compute_instance_v2" "_3245829148481055-pci-test-ex3" {
|
||||||
|
name = "_3245829148481055-pci-test-ex3"
|
||||||
|
image_id = "d2083aa0-94ee-491d-a20c-0c8db1acdb96"
|
||||||
|
flavor_name = "d2-4"
|
||||||
|
key_pair = "3245829148481055-KP"
|
||||||
|
security_groups = ["default"]
|
||||||
|
user_data = "#cloud-config\npackages:\n - nginx\nruncmd:\n - systemctl enable nginx\n - systemctl start nginx"
|
||||||
|
|
||||||
|
network {
|
||||||
|
name = "3245829148481055-int-net"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "openstack_compute_floatingip_associate_v2" "_3245829148481055-FIP" {
|
||||||
|
floating_ip = "${openstack_networking_floatingip_v2._3245829148481055-FIP.address}"
|
||||||
|
instance_id = "${openstack_compute_instance_v2._3245829148481055-pci-test-ex3.id}"
|
||||||
|
}
|
0
ex4/.placeholder
Normal file
0
ex4/.placeholder
Normal file
308
libvirt.pp
308
libvirt.pp
@ -1,308 +0,0 @@
|
|||||||
# == Class: nova::compute::libvirt
|
|
||||||
#
|
|
||||||
# Install and manage nova-compute guests managed
|
|
||||||
# by libvirt
|
|
||||||
#
|
|
||||||
# === Parameters:
|
|
||||||
#
|
|
||||||
# [*ensure_package*]
|
|
||||||
# (optional) The state of nova packages
|
|
||||||
# Defaults to 'present'
|
|
||||||
#
|
|
||||||
# [*libvirt_virt_type*]
|
|
||||||
# (optional) Libvirt domain type. Options are: kvm, lxc, qemu, uml, xen
|
|
||||||
# Defaults to 'kvm'
|
|
||||||
#
|
|
||||||
# [*vncserver_listen*]
|
|
||||||
# (optional) IP address on which instance vncservers should listen
|
|
||||||
# Defaults to '127.0.0.1'
|
|
||||||
#
|
|
||||||
# [*migration_support*]
|
|
||||||
# (optional) Whether to support virtual machine migration
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*libvirt_cpu_mode*]
|
|
||||||
# (optional) The libvirt CPU mode to configure. Possible values
|
|
||||||
# include custom, host-model, none, host-passthrough.
|
|
||||||
# Defaults to 'host-model' if libvirt_virt_type is set to kvm,
|
|
||||||
# otherwise defaults to 'none'.
|
|
||||||
#
|
|
||||||
# [*libvirt_cpu_model*]
|
|
||||||
# (optional) The named libvirt CPU model (see names listed in
|
|
||||||
# /usr/share/libvirt/cpu_map.xml). Only has effect if
|
|
||||||
# cpu_mode="custom" and virt_type="kvm|qemu".
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*libvirt_cpu_model_extra_flags*]
|
|
||||||
# (optional) This allows specifying granular CPU feature flags when
|
|
||||||
# specifying CPU models. Only valid, if cpu_mode and cpu_model
|
|
||||||
# attributes are specified and only if cpu_mode="custom".
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*libvirt_snapshot_image_format*]
|
|
||||||
# (optional) Format to save snapshots to. Some filesystems
|
|
||||||
# have a preference and only operate on raw or qcow2
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
# [*libvirt_disk_cachemodes*]
|
|
||||||
# (optional) A list of cachemodes for different disk types, e.g.
|
|
||||||
# ["file=directsync", "block=none"]
|
|
||||||
# If an empty list is specified, the disk_cachemodes directive
|
|
||||||
# will be removed from nova.conf completely.
|
|
||||||
# Defaults to an empty list
|
|
||||||
#
|
|
||||||
# [*libvirt_hw_disk_discard*]
|
|
||||||
# (optional) Discard option for nova managed disks. Need Libvirt(1.0.6)
|
|
||||||
# Qemu1.5 (raw format) Qemu1.6(qcow2 format).
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
# [*libvirt_hw_machine_type*]
|
|
||||||
# (optional) Option to specify a default machine type per host architecture.
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
# [*libvirt_inject_password*]
|
|
||||||
# (optional) Inject the admin password at boot time, without an agent.
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*libvirt_inject_key*]
|
|
||||||
# (optional) Inject the ssh public key at boot time.
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*libvirt_inject_partition*]
|
|
||||||
# (optional) The partition to inject to : -2 => disable, -1 => inspect
|
|
||||||
# (libguestfs only), 0 => not partitioned, >0 => partition
|
|
||||||
# number (integer value)
|
|
||||||
# Defaults to -2
|
|
||||||
#
|
|
||||||
# [*libvirt_enabled_perf_events*]
|
|
||||||
# (optional) This is a performance event list which could be used as monitor.
|
|
||||||
# A string list. For example: ``enabled_perf_events = cmt, mbml, mbmt``
|
|
||||||
# The supported events list can be found in
|
|
||||||
# https://libvirt.org/html/libvirt-libvirt-domain.html ,
|
|
||||||
# which you may need to search key words ``VIR_PERF_PARAM_*``
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
# [*remove_unused_base_images*]
|
|
||||||
# (optional) Should unused base images be removed?
|
|
||||||
# If undef is specified, remove the line in nova.conf
|
|
||||||
# otherwise, use a boolean to remove or not the base images.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*remove_unused_resized_minimum_age_seconds*]
|
|
||||||
# (optional) Unused resized base images younger
|
|
||||||
# than this will not be removed
|
|
||||||
# If undef is specified, remove the line in nova.conf
|
|
||||||
# otherwise, use a integer or a string to define after
|
|
||||||
# how many seconds it will be removed.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*remove_unused_original_minimum_age_seconds*]
|
|
||||||
# (optional) Unused unresized base images younger
|
|
||||||
# than this will not be removed
|
|
||||||
# If undef is specified, remove the line in nova.conf
|
|
||||||
# otherwise, use a integer or a string to define after
|
|
||||||
# how many seconds it will be removed.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*libvirt_service_name*]
|
|
||||||
# (optional) libvirt service name.
|
|
||||||
# Defaults to $::nova::params::libvirt_service_name
|
|
||||||
#
|
|
||||||
# [*virtlock_service_name*]
|
|
||||||
# (optional) virtlock service name.
|
|
||||||
# Defaults to $::nova::params::virtlock_service_name
|
|
||||||
#
|
|
||||||
# [*virtlog_service_name*]
|
|
||||||
# (optional) virtlog service name.
|
|
||||||
# Defaults to $::nova::params::virtlog_service_name
|
|
||||||
#
|
|
||||||
# [*compute_driver*]
|
|
||||||
# (optional) Compute driver.
|
|
||||||
# Defaults to 'libvirt.LibvirtDriver'
|
|
||||||
#
|
|
||||||
# [*preallocate_images*]
|
|
||||||
# (optional) The image preallocation mode to use.
|
|
||||||
# Valid values are 'none' or 'space'.
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
# [*manage_libvirt_services*]
|
|
||||||
# (optional) Whether or not deploy Libvirt services.
|
|
||||||
# In the case of micro-services, set it to False and use
|
|
||||||
# nova::compute::libvirt::services + hiera to select what
|
|
||||||
# you actually want to deploy.
|
|
||||||
# Defaults to true for backward compatibility.
|
|
||||||
#
|
|
||||||
# [*log_outputs*]
|
|
||||||
# (optional) Defines log outputs, as specified in
|
|
||||||
# https://libvirt.org/logging.html
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*volume_use_multipath*]
|
|
||||||
# (optional) Use multipath connection of the
|
|
||||||
# iSCSI or FC volume. Volumes can be connected in the
|
|
||||||
# LibVirt as multipath devices.
|
|
||||||
# Defaults to $::os_service_default
|
|
||||||
#
|
|
||||||
class nova::compute::libvirt (
|
|
||||||
$ensure_package = 'present',
|
|
||||||
$libvirt_virt_type = 'kvm',
|
|
||||||
$vncserver_listen = '127.0.0.1',
|
|
||||||
$migration_support = false,
|
|
||||||
$libvirt_cpu_mode = false,
|
|
||||||
$libvirt_cpu_model = undef,
|
|
||||||
$libvirt_cpu_model_extra_flags = undef,
|
|
||||||
$libvirt_snapshot_image_format = $::os_service_default,
|
|
||||||
$libvirt_disk_cachemodes = [],
|
|
||||||
$libvirt_hw_disk_discard = $::os_service_default,
|
|
||||||
$libvirt_hw_machine_type = $::os_service_default,
|
|
||||||
$libvirt_inject_password = false,
|
|
||||||
$libvirt_inject_key = false,
|
|
||||||
$libvirt_inject_partition = -2,
|
|
||||||
$libvirt_enabled_perf_events = $::os_service_default,
|
|
||||||
$remove_unused_base_images = undef,
|
|
||||||
$remove_unused_resized_minimum_age_seconds = undef,
|
|
||||||
$remove_unused_original_minimum_age_seconds = undef,
|
|
||||||
$libvirt_service_name = $::nova::params::libvirt_service_name,
|
|
||||||
$virtlock_service_name = $::nova::params::virtlock_service_name,
|
|
||||||
$virtlog_service_name = $::nova::params::virtlog_service_name,
|
|
||||||
$compute_driver = 'libvirt.LibvirtDriver',
|
|
||||||
$preallocate_images = $::os_service_default,
|
|
||||||
$manage_libvirt_services = true,
|
|
||||||
$log_outputs = undef,
|
|
||||||
$volume_use_multipath = $::os_service_default,
|
|
||||||
) inherits nova::params {
|
|
||||||
|
|
||||||
include ::nova::deps
|
|
||||||
include ::nova::params
|
|
||||||
|
|
||||||
# libvirt_cpu_mode has different defaults depending on hypervisor.
|
|
||||||
if !$libvirt_cpu_mode {
|
|
||||||
case $libvirt_virt_type {
|
|
||||||
'kvm': {
|
|
||||||
$libvirt_cpu_mode_real = 'host-model'
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
$libvirt_cpu_mode_real = 'none'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$libvirt_cpu_mode_real = $libvirt_cpu_mode
|
|
||||||
}
|
|
||||||
|
|
||||||
if($::osfamily == 'Debian') {
|
|
||||||
package { "nova-compute-${libvirt_virt_type}":
|
|
||||||
ensure => $ensure_package,
|
|
||||||
tag => ['openstack', 'nova-package'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $migration_support {
|
|
||||||
include ::nova::migration::libvirt
|
|
||||||
}
|
|
||||||
|
|
||||||
if $log_outputs {
|
|
||||||
libvirtd_config {
|
|
||||||
'log_outputs': value => "\"${log_outputs}\"";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# manage_libvirt_services is here for backward compatibility to support
|
|
||||||
# deployments that do not include nova::compute::libvirt::services
|
|
||||||
#
|
|
||||||
# If you're using hiera:
|
|
||||||
# - set nova::compute::libvirt::manage_libvirt_services to false
|
|
||||||
# - include ::nova::compute::libvirt::services in your composition layer
|
|
||||||
# - select which services you want to deploy with
|
|
||||||
# ::nova::compute::libvirt::services:* parameters.
|
|
||||||
#
|
|
||||||
# If you're not using hiera:
|
|
||||||
# - set nova::compute::libvirt::manage_libvirt_services to true (default).
|
|
||||||
# - select which services you want to deploy with
|
|
||||||
# ::nova::compute::libvirt::*_service_name parameters.
|
|
||||||
if $manage_libvirt_services {
|
|
||||||
class { '::nova::compute::libvirt::services':
|
|
||||||
libvirt_service_name => $libvirt_service_name,
|
|
||||||
virtlock_service_name => $virtlock_service_name,
|
|
||||||
virtlog_service_name => $virtlog_service_name,
|
|
||||||
libvirt_virt_type => $libvirt_virt_type,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/compute_driver': value => $compute_driver;
|
|
||||||
'DEFAULT/preallocate_images': value => $preallocate_images;
|
|
||||||
'vnc/vncserver_listen': value => $vncserver_listen;
|
|
||||||
'libvirt/virt_type': value => $libvirt_virt_type;
|
|
||||||
'libvirt/cpu_mode': value => $libvirt_cpu_mode_real;
|
|
||||||
'libvirt/snapshot_image_format': value => $libvirt_snapshot_image_format;
|
|
||||||
'libvirt/inject_password': value => $libvirt_inject_password;
|
|
||||||
'libvirt/inject_key': value => $libvirt_inject_key;
|
|
||||||
'libvirt/inject_partition': value => $libvirt_inject_partition;
|
|
||||||
'libvirt/hw_disk_discard': value => $libvirt_hw_disk_discard;
|
|
||||||
'libvirt/hw_machine_type': value => $libvirt_hw_machine_type;
|
|
||||||
'libvirt/enabled_perf_events': value => join(any2array($libvirt_enabled_perf_events), ',');
|
|
||||||
'libvirt/volume_use_multipath': value => $volume_use_multipath;
|
|
||||||
}
|
|
||||||
|
|
||||||
# cpu_model param is only valid if cpu_mode=custom
|
|
||||||
# otherwise it should be commented out
|
|
||||||
if $libvirt_cpu_mode_real == 'custom' {
|
|
||||||
validate_string($libvirt_cpu_model)
|
|
||||||
nova_config {
|
|
||||||
'libvirt/cpu_model': value => $libvirt_cpu_model;
|
|
||||||
'libvirt/cpu_model_extra_flags': value => $libvirt_cpu_model_extra_flags;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nova_config {
|
|
||||||
'libvirt/cpu_model': ensure => absent;
|
|
||||||
'libvirt/cpu_model_extra_flags': ensure => absent;
|
|
||||||
}
|
|
||||||
if $libvirt_cpu_model {
|
|
||||||
warning('$libvirt_cpu_model requires that $libvirt_cpu_mode => "custom" and will be ignored')
|
|
||||||
}
|
|
||||||
|
|
||||||
if $libvirt_cpu_model_extra_flags {
|
|
||||||
warning('$libvirt_cpu_model_extra_flags requires that $libvirt_cpu_mode => "custom" and will be ignored')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if size($libvirt_disk_cachemodes) > 0 {
|
|
||||||
nova_config {
|
|
||||||
'libvirt/disk_cachemodes': value => join($libvirt_disk_cachemodes, ',');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nova_config {
|
|
||||||
'libvirt/disk_cachemodes': ensure => absent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $remove_unused_resized_minimum_age_seconds != undef {
|
|
||||||
nova_config {
|
|
||||||
'libvirt/remove_unused_resized_minimum_age_seconds': value => $remove_unused_resized_minimum_age_seconds;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nova_config {
|
|
||||||
'libvirt/remove_unused_resized_minimum_age_seconds': ensure => absent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $remove_unused_base_images != undef {
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/remove_unused_base_images': value => $remove_unused_base_images;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/remove_unused_base_images': ensure => absent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $remove_unused_original_minimum_age_seconds != undef {
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/remove_unused_original_minimum_age_seconds': value => $remove_unused_original_minimum_age_seconds;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
nova_config {
|
|
||||||
'DEFAULT/remove_unused_original_minimum_age_seconds': ensure => absent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user