Merge "Add OpenStack volume quota"

This commit is contained in:
Zuul
2023-02-24 20:12:41 +00:00
committed by Gerrit Code Review
15 changed files with 421 additions and 25 deletions

View File

@@ -0,0 +1,48 @@
elements-dir: .
images-dir: '{images_dir}'
build-log-dir: '{build_log_dir}'
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
labels:
- name: fake-label
min-ready: 0
providers:
- name: fake-provider
cloud: fake
driver: fake
region-name: fake-region
rate: 0.0001
diskimages:
- name: fake-image
pools:
- name: main
max-servers: 20
labels:
- name: fake-label
diskimage: fake-image
min-ram: 8192
boot-from-volume: true
volume-size: 10
diskimages:
- name: fake-image
elements:
- fedora
- vm
release: 21
dib-cmd: nodepool/tests/fake-image-create
env-vars:
TMPDIR: /opt/dib_tmp
DIB_IMAGE_CACHE: /opt/dib_cache
DIB_CLOUD_IMAGES: http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/
BASE_IMAGE_FILE: Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2

View File

@@ -0,0 +1,48 @@
elements-dir: .
images-dir: '{images_dir}'
build-log-dir: '{build_log_dir}'
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
labels:
- name: fake-label
min-ready: 0
providers:
- name: fake-provider
cloud: fake
driver: fake
region-name: fake-region
rate: 0.0001
diskimages:
- name: fake-image
pools:
- name: main
max-volume-gb: 20
labels:
- name: fake-label
diskimage: fake-image
min-ram: 8192
boot-from-volume: true
volume-size: 10
diskimages:
- name: fake-image
elements:
- fedora
- vm
release: 21
dib-cmd: nodepool/tests/fake-image-create
env-vars:
TMPDIR: /opt/dib_tmp
DIB_IMAGE_CACHE: /opt/dib_cache
DIB_CLOUD_IMAGES: http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/
BASE_IMAGE_FILE: Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2

View File

@@ -0,0 +1,48 @@
elements-dir: .
images-dir: '{images_dir}'
build-log-dir: '{build_log_dir}'
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
labels:
- name: fake-label
min-ready: 0
providers:
- name: fake-provider
cloud: fake
driver: fake
region-name: fake-region
rate: 0.0001
diskimages:
- name: fake-image
pools:
- name: main
max-volumes: 2
labels:
- name: fake-label
diskimage: fake-image
min-ram: 8192
boot-from-volume: true
volume-size: 10
diskimages:
- name: fake-image
elements:
- fedora
- vm
release: 21
dib-cmd: nodepool/tests/fake-image-create
env-vars:
TMPDIR: /opt/dib_tmp
DIB_IMAGE_CACHE: /opt/dib_cache
DIB_CLOUD_IMAGES: http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/
BASE_IMAGE_FILE: Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2

View File

@@ -0,0 +1,52 @@
elements-dir: .
images-dir: '{images_dir}'
build-log-dir: '{build_log_dir}'
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
tenant-resource-limits:
- tenant-name: tenant-1
max-volume-gb: 20
labels:
- name: fake-label
min-ready: 0
providers:
- name: fake-provider
cloud: fake
driver: fake
region-name: fake-region
rate: 0.0001
diskimages:
- name: fake-image
pools:
- name: main
labels:
- name: fake-label
diskimage: fake-image
min-ram: 8192
boot-from-volume: true
volume-size: 10
diskimages:
- name: fake-image
elements:
- fedora
- vm
release: 21
dib-cmd: nodepool/tests/fake-image-create
env-vars:
TMPDIR: /opt/dib_tmp
DIB_IMAGE_CACHE: /opt/dib_cache
DIB_CLOUD_IMAGES: http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/
BASE_IMAGE_FILE: Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2

View File

@@ -0,0 +1,52 @@
elements-dir: .
images-dir: '{images_dir}'
build-log-dir: '{build_log_dir}'
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
tenant-resource-limits:
- tenant-name: tenant-1
max-volumes: 2
labels:
- name: fake-label
min-ready: 0
providers:
- name: fake-provider
cloud: fake
driver: fake
region-name: fake-region
rate: 0.0001
diskimages:
- name: fake-image
pools:
- name: main
labels:
- name: fake-label
diskimage: fake-image
min-ram: 8192
boot-from-volume: true
volume-size: 10
diskimages:
- name: fake-image
elements:
- fedora
- vm
release: 21
dib-cmd: nodepool/tests/fake-image-create
env-vars:
TMPDIR: /opt/dib_tmp
DIB_IMAGE_CACHE: /opt/dib_cache
DIB_CLOUD_IMAGES: http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/
BASE_IMAGE_FILE: Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2

View File

@@ -179,7 +179,9 @@ class TestLauncher(tests.DBTestCase):
config,
max_cores=100,
max_instances=20,
max_ram=1000000):
max_ram=1000000,
max_volumes=100,
max_volume_gb=1000000):
'''
Successful node launch should have unlocked nodes in READY state
and assigned to the request. This should be run with a quota that
@@ -189,10 +191,18 @@ class TestLauncher(tests.DBTestCase):
# patch the cloud with requested quota
def fake_get_quota():
return (max_cores, max_instances, max_ram)
def fake_get_volume_quota():
return (max_volumes, max_volume_gb)
self.useFixture(fixtures.MockPatchObject(
fakeadapter.FakeAdapter.fake_cloud, '_get_quota',
fake_get_quota
))
self.useFixture(fixtures.MockPatchObject(
fakeadapter.FakeAdapter.fake_cloud, '_get_volume_quota',
fake_get_volume_quota
))
configfile = self.setup_config(config)
self.useBuilder(configfile)
@@ -290,6 +300,14 @@ class TestLauncher(tests.DBTestCase):
self._test_node_assignment_at_quota(
config='node_quota_pool_ram.yaml')
def test_node_assignment_at_pool_quota_volumes(self):
self._test_node_assignment_at_quota(
config='node_quota_pool_volumes.yaml')
def test_node_assignment_at_pool_quota_volume_gb(self):
self._test_node_assignment_at_quota(
config='node_quota_pool_volume_gb.yaml')
def _test_node_assignment_at_tenant_quota(self, config):
configfile = self.setup_config(config)
self.useBuilder(configfile)
@@ -386,6 +404,18 @@ class TestLauncher(tests.DBTestCase):
self.assertReportedStat('nodepool.tenant_limits.tenant-1.ram',
value='16384', kind='g')
def test_node_assignment_at_tenant_quota_volumes(self):
self._test_node_assignment_at_tenant_quota(
'node_quota_tenant_volumes.yaml')
self.assertReportedStat('nodepool.tenant_limits.tenant-1.volumes',
value='2', kind='g')
def test_node_assignment_at_tenant_quota_volume_gb(self):
self._test_node_assignment_at_tenant_quota(
'node_quota_tenant_volume_gb.yaml')
self.assertReportedStat('nodepool.tenant_limits.tenant-1.volume-gb',
value='20', kind='g')
def test_node_assignment_at_tenant_quota_min_ready(self):
self._test_node_assignment_at_tenant_quota(
'node_quota_tenant_min_ready.yaml')
@@ -412,6 +442,16 @@ class TestLauncher(tests.DBTestCase):
max_instances=math.inf,
max_ram=2 * 8192)
def test_node_assignment_at_cloud_volumes_quota(self):
self._test_node_assignment_at_quota(
config='node_quota_cloud_volumes.yaml',
max_volumes=2)
def test_node_assignment_at_cloud_volume_gb_quota(self):
self._test_node_assignment_at_quota(
config='node_quota_cloud_volumes.yaml',
max_volume_gb=20)
def test_decline_at_quota(self):
'''test that a provider at quota continues to decline requests'''