From 8394a824094872c333e28274c6dfb79b22490330 Mon Sep 17 00:00:00 2001 From: Sergey Kraynev Date: Tue, 27 Dec 2016 10:27:04 +0000 Subject: [PATCH] Implement bootstrapping for custom nova flavors Previously nova just created default flavors. This patch adds ability to specify custom flavors in ~/.ccp.yaml. Also this patch renames job to more general format and moves all default flavors to defaults.yaml config. Now Jinja loop was moved to service definition yaml, which create one job per one flavor. Bootstrapping is enabled by default. Change-Id: I07daad9be8b4ccbc5a8e618351e8897af7d61672 --- service/files/create-default-flavors.sh.j2 | 25 ---------------- service/files/create-flavor.sh.j2 | 21 ++++++++++++++ service/files/defaults.yaml | 33 ++++++++++++++++++++++ service/nova-api.yaml | 16 +++++++---- 4 files changed, 64 insertions(+), 31 deletions(-) delete mode 100644 service/files/create-default-flavors.sh.j2 create mode 100644 service/files/create-flavor.sh.j2 diff --git a/service/files/create-default-flavors.sh.j2 b/service/files/create-default-flavors.sh.j2 deleted file mode 100644 index 7749b06..0000000 --- a/service/files/create-default-flavors.sh.j2 +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -ex - -export OS_IDENTITY_API_VERSION=3 -export OS_INTERFACE="internal" -export OS_PROJECT_DOMAIN_NAME=default -export OS_USER_DOMAIN_NAME=default -export OS_PASSWORD={{ openstack.user_password }} -export OS_USERNAME={{ openstack.user_name }} -export OS_PROJECT_NAME={{ openstack.project_name }} -export OS_AUTH_URL="{{ address('keystone', keystone.admin_port, with_scheme=True) }}/v3" - -function ensure_flavor { - openstack flavor show $1 || openstack --os-region-name=RegionOne \ - flavor create --id $2 --ram $3 --disk $4 --vcpus $5 $1 -} - -# name id ram disk vcpus -ensure_flavor m1.test 0 128 1 1 -ensure_flavor m1.tiny 1 512 1 1 -ensure_flavor m1.small 2 2048 20 1 -ensure_flavor m1.medium 3 4096 40 2 -ensure_flavor m1.large 4 8192 80 4 -ensure_flavor m1.xlarge 5 16384 160 8 diff --git a/service/files/create-flavor.sh.j2 b/service/files/create-flavor.sh.j2 new file mode 100644 index 0000000..d1231fd --- /dev/null +++ b/service/files/create-flavor.sh.j2 @@ -0,0 +1,21 @@ +#!/bin/bash + +name=$1 +id=$2 +ram=$3 +disk=$4 +vcpus=$5 + +set -ex + +export OS_IDENTITY_API_VERSION=3 +export OS_INTERFACE="internal" +export OS_PROJECT_DOMAIN_NAME=default +export OS_USER_DOMAIN_NAME=default +export OS_PASSWORD={{ openstack.user_password }} +export OS_USERNAME={{ openstack.user_name }} +export OS_PROJECT_NAME={{ openstack.project_name }} +export OS_AUTH_URL="{{ address('keystone', keystone.admin_port, with_scheme=True) }}/v3" + +openstack flavor show $name || openstack --os-region-name=RegionOne \ + flavor create --id $id --ram $ram --disk $disk --vcpus $vcpus $name diff --git a/service/files/defaults.yaml b/service/files/defaults.yaml index 33fb066..084bc8c 100644 --- a/service/files/defaults.yaml +++ b/service/files/defaults.yaml @@ -176,6 +176,39 @@ configs: ceph: enable: false pool_name: "vms" + bootstrap: + enable: true + flavors: + - name: m1.test + id: 0 + ram: 128 + disk: 1 + vcpus: 1 + - name: m1.tiny + id: 1 + ram: 512 + disk: 1 + vcpus: 1 + - name: m1.small + id: 2 + ram: 2048 + disk: 20 + vcpus: 1 + - name: m1.medium + id: 3 + ram: 4096 + disk: 40 + vcpus: 2 + - name: m1.large + id: 4 + ram: 8192 + disk: 80 + vcpus: 4 + - name: m1.xlarge + id: 5 + ram: 16384 + disk: 160 + vcpus: 8 versions: novnc_version: "0.6.1" diff --git a/service/nova-api.yaml b/service/nova-api.yaml index 3417ec4..cd2bb81 100644 --- a/service/nova-api.yaml +++ b/service/nova-api.yaml @@ -97,12 +97,16 @@ service: command: nova-api --config-file /etc/nova/nova.conf files: - nova.conf + # {% if nova.bootstrap.enable %} post: - - name: nova-create-default-flavors + # {% for flavor in nova.bootstrap.flavors %} + - name: nova-bootstrap-flavor-{{ flavor.id }} type: single - command: /opt/ccp/bin/create-default-flavors.sh + command: /opt/ccp/bin/create-flavor.sh {{ flavor.name }} {{ flavor.id }} {{ flavor.ram }} {{ flavor.disk }} {{ flavor.vcpus }} files: - - create-default-flavors.sh + - create-flavor.sh + # {% endfor %} + # {% endif %} files: nova.conf: @@ -110,7 +114,7 @@ files: content: nova.conf.j2 perm: "0600" - create-default-flavors.sh: - path: /opt/ccp/bin/create-default-flavors.sh - content: create-default-flavors.sh.j2 + create-flavor.sh: + path: /opt/ccp/bin/create-flavor.sh + content: create-flavor.sh.j2 perm: "0700"