Merge "nova client to set tenant quotas"
diff --git a/.gitignore b/.gitignore
index 6f76275..aa8e42a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+.kitchen
tests/build/
*.swp
-*.pyc
\ No newline at end of file
+*.pyc
+.ropeproject
diff --git a/Makefile b/Makefile
index fc83783..1043fbe 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,38 @@
DESTDIR=/
SALTENVDIR=/usr/share/salt-formulas/env
RECLASSDIR=/usr/share/salt-formulas/reclass
-FORMULANAME=$(shell grep name: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\-]*')
+FORMULANAME=$(shell grep name: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\-\_]*')
+VERSION=$(shell grep version: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\.\-\_]*')
+VERSION_MAJOR := $(shell echo $(VERSION)|cut -d . -f 1-2)
+VERSION_MINOR := $(shell echo $(VERSION)|cut -d . -f 3)
+
+NEW_MAJOR_VERSION ?= $(shell date +%Y.%m|sed 's,\.0,\.,g')
+NEW_MINOR_VERSION ?= $(shell /bin/bash -c 'echo $$[ $(VERSION_MINOR) + 1 ]')
+
+MAKE_PID := $(shell echo $$PPID)
+JOB_FLAG := $(filter -j%, $(subst -j ,-j,$(shell ps T | grep "^\s*$(MAKE_PID).*$(MAKE)")))
+
+ifneq ($(subst -j,,$(JOB_FLAG)),)
+JOBS := $(subst -j,,$(JOB_FLAG))
+else
+JOBS := 1
+endif
+
+KITCHEN_LOCAL_YAML?=.kitchen.yml
+KITCHEN_OPTS?="--concurrency=$(JOBS)"
+KITCHEN_OPTS_CREATE?=""
+KITCHEN_OPTS_CONVERGE?=""
+KITCHEN_OPTS_VERIFY?=""
+KITCHEN_OPTS_TEST?=""
all:
@echo "make install - Install into DESTDIR"
@echo "make test - Run tests"
+ @echo "make kitchen - Run Kitchen CI tests (create, converge, verify)"
@echo "make clean - Cleanup after tests run"
+ @echo "make release-major - Generate new major release"
+ @echo "make release-minor - Generate new minor release"
+ @echo "make changelog - Show changes since last release"
install:
# Formula
@@ -14,6 +40,7 @@
cp -a $(FORMULANAME) $(DESTDIR)/$(SALTENVDIR)/
[ ! -d _modules ] || cp -a _modules $(DESTDIR)/$(SALTENVDIR)/
[ ! -d _states ] || cp -a _states $(DESTDIR)/$(SALTENVDIR)/ || true
+ [ ! -d _grains ] || cp -a _grains $(DESTDIR)/$(SALTENVDIR)/ || true
# Metadata
[ -d $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME) ] || mkdir -p $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
cp -a metadata/service/* $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
@@ -21,6 +48,71 @@
test:
[ ! -d tests ] || (cd tests; ./run_tests.sh)
+release-major: check-changes
+ @echo "Current version is $(VERSION), new version is $(NEW_MAJOR_VERSION)"
+ @[ $(VERSION_MAJOR) != $(NEW_MAJOR_VERSION) ] || (echo "Major version $(NEW_MAJOR_VERSION) already released, nothing to do. Do you want release-minor?" && exit 1)
+ echo "$(NEW_MAJOR_VERSION)" > VERSION
+ sed -i 's,version: .*,version: "$(NEW_MAJOR_VERSION)",g' metadata.yml
+ [ ! -f debian/changelog ] || dch -v $(NEW_MAJOR_VERSION) -m --force-distribution -D `dpkg-parsechangelog -S Distribution` "New version"
+ make genchangelog-$(NEW_MAJOR_VERSION)
+ (git add -u; git commit -m "Version $(NEW_MAJOR_VERSION)")
+ git tag -s -m $(NEW_MAJOR_VERSION) $(NEW_MAJOR_VERSION)
+
+release-minor: check-changes
+ @echo "Current version is $(VERSION), new version is $(VERSION_MAJOR).$(NEW_MINOR_VERSION)"
+ echo "$(VERSION_MAJOR).$(NEW_MINOR_VERSION)" > VERSION
+ sed -i 's,version: .*,version: "$(VERSION_MAJOR).$(NEW_MINOR_VERSION)",g' metadata.yml
+ [ ! -f debian/changelog ] || dch -v $(VERSION_MAJOR).$(NEW_MINOR_VERSION) -m --force-distribution -D `dpkg-parsechangelog -S Distribution` "New version"
+ make genchangelog-$(VERSION_MAJOR).$(NEW_MINOR_VERSION)
+ (git add -u; git commit -m "Version $(VERSION_MAJOR).$(NEW_MINOR_VERSION)")
+ git tag -s -m $(NEW_MAJOR_VERSION) $(VERSION_MAJOR).$(NEW_MINOR_VERSION)
+
+check-changes:
+ @git log --pretty=oneline --decorate $(VERSION)..HEAD | grep -Eqc '.*' || (echo "No new changes since version $(VERSION)"; exit 1)
+
+changelog:
+ git log --pretty=short --invert-grep --grep="Merge pull request" --decorate $(VERSION)..HEAD
+
+genchangelog: genchangelog-$(VERSION_MAJOR).$(NEW_MINOR_VERSION)
+
+genchangelog-%:
+ $(eval NEW_VERSION := $(patsubst genchangelog-%,%,$@))
+ (echo "=========\nChangelog\n=========\n"; \
+ (echo $(NEW_VERSION);git tag) | sort -r | grep -E '^[0-9\.]+' | while read i; do \
+ cur=$$i; \
+ test $$i = $(NEW_VERSION) && i=HEAD; \
+ prev=`(echo $(NEW_VERSION);git tag)|sort|grep -E '^[0-9\.]+'|grep -B1 "$$cur\$$"|head -1`; \
+ echo "Version $$cur\n=============================\n"; \
+ git log --pretty=short --invert-grep --grep="Merge pull request" --decorate $$prev..$$i; \
+ echo; \
+ done) > CHANGELOG.rst
+
+kitchen-check:
+ @[ -e $(KITCHEN_LOCAL_YAML) ] || (echo "Kitchen tests not available, there's no $(KITCHEN_LOCAL_YAML)." && exit 1)
+
+kitchen: kitchen-check kitchen-create kitchen-converge kitchen-verify kitchen-list
+
+kitchen-create: kitchen-check
+ kitchen create ${KITCHEN_OPTS} ${KITCHEN_OPTS_CREATE}
+ [ "$(shell echo $(KITCHEN_LOCAL_YAML)|grep -Eo docker)" = "docker" ] || sleep 120
+
+kitchen-converge: kitchen-check
+ kitchen converge ${KITCHEN_OPTS} ${KITCHEN_OPTS_CONVERGE} &&\
+ kitchen converge ${KITCHEN_OPTS} ${KITCHEN_OPTS_CONVERGE}
+
+kitchen-verify: kitchen-check
+ [ ! -d tests/integration ] || kitchen verify -t tests/integration ${KITCHEN_OPTS} ${KITCHEN_OPTS_VERIFY}
+ [ -d tests/integration ] || kitchen verify ${KITCHEN_OPTS} ${KITCHEN_OPTS_VERIFY}
+
+kitchen-test: kitchen-check
+ [ ! -d tests/integration ] || kitchen test -t tests/integration ${KITCHEN_OPTS} ${KITCHEN_OPTS_TEST}
+ [ -d tests/integration ] || kitchen test ${KITCHEN_OPTS} ${KITCHEN_OPTS_TEST}
+
+kitchen-list: kitchen-check
+ kitchen list
+
clean:
+ [ ! -x "$(shell which kitchen)" ] || kitchen destroy
+ [ ! -d .kitchen ] || rm -rf .kitchen
[ ! -d tests/build ] || rm -rf tests/build
[ ! -d build ] || rm -rf build
diff --git a/README.rst b/README.rst
index 55ed848..3fd1918 100644
--- a/README.rst
+++ b/README.rst
@@ -285,3 +285,36 @@
Developers should also join the discussion on the IRC list, at:
https://wiki.openstack.org/wiki/Meetings/openstack-salt
+
+Documentation and Bugs
+======================
+
+To learn how to install and update salt-formulas, consult the documentation
+available online at:
+
+ http://salt-formulas.readthedocs.io/
+
+In the unfortunate event that bugs are discovered, they should be reported to
+the appropriate issue tracker. Use Github issue tracker for specific salt
+formula:
+
+ https://github.com/salt-formulas/salt-formula-nova/issues
+
+For feature requests, bug reports or blueprints affecting entire ecosystem,
+use Launchpad salt-formulas project:
+
+ https://launchpad.net/salt-formulas
+
+You can also join salt-formulas-users team and subscribe to mailing list:
+
+ https://launchpad.net/~salt-formulas-users
+
+Developers wishing to work on the salt-formulas projects should always base
+their work on master branch and submit pull request against specific formula.
+
+ https://github.com/salt-formulas/salt-formula-nova
+
+Any questions or feedback is always welcome so feel free to join our IRC
+channel:
+
+ #salt-formulas @ irc.freenode.net
diff --git a/nova/files/grafana_dashboards/hypervisor_influxdb.json b/nova/files/grafana_dashboards/hypervisor_influxdb.json
index 2b9bf5e..66bdddc 100644
--- a/nova/files/grafana_dashboards/hypervisor_influxdb.json
+++ b/nova/files/grafana_dashboards/hypervisor_influxdb.json
@@ -3,15 +3,15 @@
"list": []
},
"editable": true,
+ "gnetId": null,
+ "graphTooltip": 1,
"hideControls": false,
"id": null,
"links": [],
- "originalTitle": "Hypervisor",
"refresh": "1m",
"rows": [
{
"collapse": false,
- "editable": true,
"height": "250px",
"panels": [
{
@@ -21,12 +21,7 @@
"editable": true,
"error": false,
"fill": 0,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 8,
"interval": ">60s",
"legend": {
@@ -100,8 +95,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
},
@@ -154,8 +155,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -209,8 +216,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -264,8 +277,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -319,8 +338,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -374,8 +399,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -429,24 +460,35 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "CPU",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -476,11 +518,7 @@
"fill": 1,
"grid": {
"max": null,
- "min": null,
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
+ "min": null
},
"id": 9,
"interactive": true,
@@ -562,8 +600,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": "randomWalk('random walk')"
@@ -618,8 +662,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -674,8 +724,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
@@ -730,13 +786,20 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
],
"target": ""
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"timezone": "browser",
@@ -745,11 +808,15 @@
"msResolution": false,
"query_as_alias": true,
"shared": true,
+ "sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -789,9 +856,20 @@
"thresholdLabels": false,
"thresholdMarkers": true
},
- "id": 10,
+ "id": 12,
"interval": ">60s",
"links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
@@ -799,6 +877,13 @@
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
"span": 2,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
@@ -810,31 +895,25 @@
{
"column": "value",
"dsType": "influxdb",
- "fields": [
- {
- "func": "last",
- "name": "value"
- }
- ],
"function": "mean",
"groupBy": [
{
- "interval": "auto",
"params": [
- "auto"
+ "$interval"
],
"type": "time"
},
{
"params": [
- "previous"
+ "null"
],
"type": "fill"
}
],
+ "groupByTags": [],
"measurement": "fs_space_percent_free",
"policy": "default",
- "query": "SELECT last(\"value\") FROM \"fs_space_percent_free\" WHERE \"hostname\" =~ /^$hostname$/ AND \"fs\" = '/var/lib/nova' AND $timeFilter GROUP BY time($interval) fill(previous)",
+ "query": "SELECT mean(\"value\") FROM \"fs_space_percent_free\" WHERE \"hostname\" =~ /^$server$/ AND \"fs\" =~ /^$mount$/ AND $timeFilter GROUP BY time($interval) fill(null)",
"rawQuery": false,
"refId": "A",
"resultFormat": "time_series",
@@ -848,27 +927,33 @@
},
{
"params": [],
- "type": "last"
+ "type": "mean"
}
]
],
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
},
{
"condition": "AND",
"key": "fs",
"operator": "=",
- "value": "/var/lib/nova"
+ "value": "/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
}
],
"thresholds": "10,15",
- "title": "Available ephemeral storage",
+ "title": "Free space",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
@@ -881,12 +966,15 @@
"valueName": "current"
}
],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
"showTitle": true,
- "title": "Host"
+ "title": "Host",
+ "titleSize": "h6"
},
{
"collapse": false,
- "editable": true,
"height": "250px",
"panels": [
{
@@ -911,8 +999,18 @@
},
"id": 11,
"interval": "> 60s",
- "isNew": true,
"links": [],
+ "mappingType": 1,
+ "mappingTypes": [
+ {
+ "name": "value to text",
+ "value": 1
+ },
+ {
+ "name": "range to text",
+ "value": 2
+ }
+ ],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
@@ -920,6 +1018,13 @@
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
+ "rangeMaps": [
+ {
+ "from": "null",
+ "text": "N/A",
+ "to": "null"
+ }
+ ],
"span": 3,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
@@ -967,8 +1072,14 @@
"tags": [
{
"key": "hostname",
- "operator": "=",
- "value": "$hostname"
+ "operator": "=~",
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
}
@@ -993,14 +1104,8 @@
"editable": true,
"error": false,
"fill": 0,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 5,
- "isNew": true,
"legend": {
"avg": false,
"current": false,
@@ -1064,7 +1169,13 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
},
@@ -1109,22 +1220,33 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Virtual CPUs",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1150,14 +1272,8 @@
"editable": true,
"error": false,
"fill": 0,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 6,
- "isNew": true,
"legend": {
"avg": false,
"current": false,
@@ -1221,7 +1337,13 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
},
@@ -1266,22 +1388,33 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Virtual RAM",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1307,14 +1440,8 @@
"editable": true,
"error": false,
"fill": 0,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 7,
- "isNew": true,
"legend": {
"avg": false,
"current": false,
@@ -1378,7 +1505,13 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
},
@@ -1423,22 +1556,33 @@
{
"key": "hostname",
"operator": "=~",
- "value": "/$hostname$/"
+ "value": "/^$hostname$/"
+ },
+ {
+ "condition": "AND",
+ "key": "environment_label",
+ "operator": "=~",
+ "value": "/^$environment$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Virtual Disk",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1458,12 +1602,15 @@
]
}
],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
"showTitle": true,
- "title": "Virtual Resources"
+ "title": "Virtual Resources",
+ "titleSize": "h6"
},
{
"collapse": false,
- "editable": true,
"height": "250px",
"panels": [
{
@@ -1473,12 +1620,7 @@
"editable": true,
"error": false,
"fill": 1,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 1,
"interval": ">60s",
"legend": {
@@ -1554,15 +1696,9 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
}
]
},
@@ -1617,30 +1753,29 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "CPU",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1668,12 +1803,7 @@
"editable": true,
"error": false,
"fill": 1,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 2,
"interval": ">60s",
"legend": {
@@ -1737,30 +1867,29 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Memory",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1788,12 +1917,7 @@
"editable": true,
"error": false,
"fill": 1,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 3,
"interval": "> 60s",
"legend": {
@@ -1857,21 +1981,15 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
},
{
"condition": "AND",
"key": "device",
"operator": "=~",
- "value": "/$disk$/"
+ "value": "/^$disk$/"
}
]
},
@@ -1914,12 +2032,6 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
"value": "/$instance_id$/"
@@ -1928,22 +2040,27 @@
"condition": "AND",
"key": "device",
"operator": "=~",
- "value": "/$disk$/"
+ "value": "/^$disk$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Disk I/O",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -1969,12 +2086,7 @@
"editable": true,
"error": false,
"fill": 1,
- "grid": {
- "threshold1": null,
- "threshold1Color": "rgba(216, 200, 27, 0.27)",
- "threshold2": null,
- "threshold2Color": "rgba(234, 112, 112, 0.22)"
- },
+ "grid": {},
"id": 4,
"interval": "> 60s",
"legend": {
@@ -2038,21 +2150,15 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
},
{
"condition": "AND",
"key": "interface",
"operator": "=~",
- "value": "/$interface$/"
+ "value": "/^$interface$/"
}
]
},
@@ -2095,36 +2201,35 @@
],
"tags": [
{
- "key": "hostname",
- "operator": "=~",
- "value": "/$hostname$/"
- },
- {
- "condition": "AND",
"key": "instance_id",
"operator": "=~",
- "value": "/$instance_id$/"
+ "value": "/^$instance_id$/"
},
{
"condition": "AND",
"key": "interface",
"operator": "=~",
- "value": "/$interface$/"
+ "value": "/^$interface$/"
}
]
}
],
+ "thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Network I/O",
"tooltip": {
"msResolution": false,
"shared": true,
+ "sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
- "show": true
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
},
"yaxes": [
{
@@ -2144,11 +2249,15 @@
]
}
],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
"showTitle": true,
- "title": "Virtual instance"
+ "title": "Virtual instance",
+ "titleSize": "h6"
}
],
- "schemaVersion": 12,
+ "schemaVersion": 14,
"sharedCrosshair": true,
"style": "dark",
"tags": [],
@@ -2156,40 +2265,57 @@
"list": [
{
"allFormat": "regex values",
+ "allValue": null,
"current": {},
- "datasource": null,
+ "datasource": "lma",
"hide": 0,
"includeAll": false,
+ "label": null,
+ "multi": false,
"name": "environment",
"options": [],
"query": "show tag values from cpu_idle with key = environment_label",
"refresh": 1,
"refresh_on_load": true,
"regex": "",
- "type": "query"
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
},
{
"allFormat": "glob",
+ "allValue": null,
"current": {},
- "datasource": null,
+ "datasource": "lma",
"hide": 0,
"includeAll": false,
+ "label": null,
"multi": false,
"multiFormat": "glob",
"name": "hostname",
"options": [],
- "query": "show tag values from openstack_nova_running_instances with key = hostname where environment_label =~ /^$environment$/",
+ "query": "show tag values from libvirt_check with key = hostname where environment_label =~ /^$environment$/",
"refresh": 1,
"refresh_on_load": true,
"regex": "",
- "type": "query"
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
},
{
"allFormat": "glob",
+ "allValue": null,
"current": {},
- "datasource": null,
+ "datasource": "lma",
"hide": 0,
"includeAll": false,
+ "label": null,
"multi": false,
"multiFormat": "glob",
"name": "instance_id",
@@ -2197,14 +2323,22 @@
"query": "show tag values from virt_cpu_time with key = instance_id where hostname =~ /^$hostname$/ and environment_label =~ /^$environment$/",
"refresh": 1,
"refresh_on_load": true,
- "type": "query"
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
},
{
"allFormat": "glob",
+ "allValue": null,
"current": {},
- "datasource": null,
+ "datasource": "lma",
"hide": 0,
"includeAll": false,
+ "label": null,
"multi": false,
"multiFormat": "glob",
"name": "disk",
@@ -2213,14 +2347,21 @@
"refresh": 1,
"refresh_on_load": true,
"regex": "",
- "type": "query"
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
},
{
"allFormat": "glob",
+ "allValue": null,
"current": {},
- "datasource": null,
+ "datasource": "lma",
"hide": 0,
"includeAll": false,
+ "label": null,
"multi": false,
"multiFormat": "glob",
"name": "interface",
@@ -2228,7 +2369,13 @@
"query": "show tag values from virt_if_octets_rx with key = interface where hostname =~ /^$hostname$/ and instance_id =~ /^$instance_id$/ and environment_label =~ /^$environment$/",
"refresh": 1,
"refresh_on_load": true,
- "type": "query"
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
}
]
},
@@ -2264,5 +2411,5 @@
},
"timezone": "browser",
"title": "Hypervisor",
- "version": 2
+ "version": 3
}
diff --git a/nova/files/liberty/nova-compute.conf.Debian b/nova/files/liberty/nova-compute.conf.Debian
index acb4679..a9dc806 100644
--- a/nova/files/liberty/nova-compute.conf.Debian
+++ b/nova/files/liberty/nova-compute.conf.Debian
@@ -182,6 +182,10 @@
{%- if compute.get('ceph', {}).ephemeral is defined %}
[libvirt]
+disk_cachemodes="network=writeback,block=none"
+cpu_mode=host-passthrough
+virt_type=kvm
+live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST
images_type=rbd
images_rbd_pool={{ compute.ceph.rbd_pool }}
images_rbd_ceph_conf=/etc/ceph/ceph.conf
diff --git a/nova/files/mitaka/nova-controller.conf.Debian b/nova/files/mitaka/nova-controller.conf.Debian
index 5d533b6..88589fc 100644
--- a/nova/files/mitaka/nova-controller.conf.Debian
+++ b/nova/files/mitaka/nova-controller.conf.Debian
@@ -124,7 +124,8 @@
[cache]
{%- if controller.cache is defined %}
enabled = true
-memcached_servers={%- for member in controller.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
+backend = oslo_cache.memcache_pool
+memcache_servers={%- for member in controller.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
{%- endif %}
[keystone_authtoken]